关于WEB安全的知识
第一章 客户端安全
2.1 同源策略
限制不同的document脚本对当前的document读取或者设置某些属性
端口,协议或者域名之一有一个不一样就会产生跨域问题
2.2 浏览器沙箱
浏览器利用沙箱技术,可以让不受网页信任的代码,JavaScript代码运行在一个收到限制的环境中,从而保护本地的桌面系统安全。
浏览器的多进程架构,将浏览器的各个功能分开,当一个进程崩溃时,也不会影响到其他的进程。谷歌是第一个引入浏览器多进程架构的浏览器,主要分为浏览器进程、渲染进程、插件进程以及扩展进程。
2.3 恶意网址拦截
原理:浏览器周期性地从服务器获取一份最新的恶意网址名单。
恶意网站:
①挂马网站:利用浏览器的漏洞执行恶意JavaScript代码
②钓鱼网站:模仿知名网站来欺骗用户
拦截:谷歌黑名单库,EVSSL证书
第二章 跨站脚本攻击
3.1 XSS简介
指的是黑客用过HTML注入篡改网站,插入了恶意脚本,从而在用户浏览时控制用户的权限。
类型:
1、反射型XSS:简单地把用户输入的数据“反射”给用户,往往诱使用户点击才会成功。也成为非持久性XSS攻击
2、存储型XSS:把用户的数据存储在服务端。也称为持久性XSS。比如黑客发表一篇含有恶意代码的文章,用户阅读后把恶意脚本存储在服务端。
3、DOM Based XSS:并非按照数据是否存储在服务端划分的,效果上来说是反射型的XSS。单独划分来说,比如构造一个事件,闭合源码的’且插入自己的JavaScript代码。第二个就是会闭合掉a然后使得触发另外的函数。
3.2 XSS攻击进阶
-
XSS Playload:攻击者攻击成功之后就会执行它的恶意代码,XSS Playload就是JavaScript代码。比如他会读取你的浏览器cookie对象,这也称为cookie劫持。可以通过HttpOnly标识防止cookie劫持
-
构造GET请求和POST请求可能导致用户删除重要资料和文章。还可以利用这个来获取用户的账户密码等信息。
-
非法获取用户的IP地址。因为很多时候用户的电脑都是使用了***服务器,网站看到的IP地址其实是内网的出口IP地址。
3.3 XSS防御
- HttpOnly:主要是为了解决XSS攻击后的cookie劫持攻击。
step1 :浏览器向服务器发送请求,这时候是没有cookie的
step2 :服务器返回set-Cookie头,向客户端浏览器写入Cookie
step3 :在该Cookie到期之前,浏览器访问该域下的所有页面都应该发送Cookie
- 处理富文本:在标签选择上尽量选择白名单,避免使用黑名单
第四章 跨站请求伪造
攻击者在自己的域内伪造一个页面,比如删除某个博客的文章。然后诱使用户访问一个页面,就以该用户身份在第三方站点执行一次操作。
####CSRF防御
- 验证码:CSRF攻击通常是用户在不知情的情况之下构造了网络请求,而验证码是用户必须与应用进行交互才能完成最终请求。
- Referer Check :用于检查请求是否来自于合法的"源"。比如用户需要发帖就会登陆到后台,那么Referer这个值必然是发帖表单所在的页面。但是有一个缺陷,服务器并非什么时候都会去得到Referer。
- Token:Token 需要同时放在表单中和session中,提交表但时,服务器要验证表单中的Token是否与用户session或者(cookie)中的Token是否一致。
- token一定要足够随机
第五章 点击劫持
5.1 点击劫持
点击劫持其实就是利用视觉上的欺骗手段。攻击者使用一个不透明、不可见的iframe覆盖在网页上,
5.2 拖拽劫持和数据窃取
诱使用户从不可见的iframe中拖拽出攻击者希望得到的数据。
5.3 触屏劫持
- touchstart
- touchend
- touchmove
- touchcancel
5.4 防御ClickJacking
-
frame busting
写一段JavaScript代码防止iframe嵌套 -
X-Frame-Options
使用一个HTTP请求头,当值位DENY时浏览器拒绝加载当前页面任何frame页面;若值为sameorigin时允许加载同源页面下的页面;当值为allow-from origin时就允许加载页面的地址
第六章 HTML5安全
6.1 HTML5新标签
使用HTML5新增的标签,比如说video等用于远程加载资源的标签会存在XSS漏洞。
- iframe的sandbox
为了限制iframe的脚本,为iframe定义了一个sandbox属性,将iframe所加载的内容视为一个独立的"源",其中的脚本被限制执行,表单被限制提交,插件被禁止加载。 - postMessage----跨窗口传递信息
允许每一个window对象往其他的擦窗口发送文本信息,从而实现跨窗口消息传递,这个功能是不受同源策略限制。
第七章 注入攻击
7.1 SQL注入
注入的本质就是把用户输入的数据当成代码执行。原来程序要执行的数据拼接了用户输入的数据。
第八章 认证与会话管理
- 认证的目的就是为了认出用户是谁,授权就是为了决定用户能够做什么。
- 认证实际上就是一个验证凭证的过程。
- 单点登陆,用户登陆一次就可以访问所有的系统。
- OpenID是一个开放的单点登陆系统,用的是URI作为用户在互联网上面的标识,然后网站重定向到openID的提供者认证,认证完成后再重定向回网站。
- web应用中,用户登陆后,服务器会返回一个sessionID加密写在浏览器的cookie上。
ps:笔者最近开通了微信公众号,大家可以关注一下哦,谢谢大家的支持!