1. XSS攻击:跨站脚本攻击(Cross Site Scripting)
- 攻击原理:Web应用未对用户提交请求的数据做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“>”、“<”),并将未经转义的恶意代码输出到第三方用户的浏览器解释执行,是导致XSS漏洞的产生原因。 理论上,所有可输入的地方没有对输入数据进行处理的话,都会存在XSS漏洞,漏洞的危害取决于攻击代码的威力,攻击代码也不局限于script。
- 存储型XSS:输入–进入数据库–取出数据库–输出;持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行
- 反射性XSS:输入–输出;非持久化,需要欺骗用户自己去点击链接才能触发XSS代码。攻击者将有问题的url通过某些途径传播开来,不明真相的用户一旦点击了这样的url,相应cookie数据就会被发送事先设定好的站点,这样子就盗得了用户的cookie信息,然后就可以利用Websleuth之类的工具来检查是否能盗取那个用户的账户。
- XSS防御:
- 完善的过滤体系,永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。
- Html encode。对标签进行转换。不同的插入地方(URL,HTML、css、js)设置不同的编码方式。假如某些情况下,我们不能对用户数据进行严格的过滤,那我们也需要对标签进行转换。在展现时浏览器会对这些字符转换成文本内容显示,而不是一段可执行的代码。
- Http-Only。该属性有助于缓解跨站点脚本威胁, 如果兼容浏览器接收到 Http-Only Cookie,则客户端脚本不能对它进行访问。Http-Only的参数跟domain等其他参数一样,一旦Http-Only被设置,你在浏览器的document对象中就看不到Cookie了,而浏览器在浏览的时候不受任何影响,因为Cookie会被放在浏览器头中发送出去(包括ajax的时候),应用程序也一般不会在js里操作这些敏感Cookie的,对于一些敏感的Cookie我可以采用Http-Only,对于一些需要在网站中用js操作的cookie我们就不予设置,这样就保障了Cookie信息的安全也保证了网站的基本功能。
- 参考资料
- XSS攻击及防御
- 避免XSS攻击
- 防御XSS的七条原则
- 使用Http-only Cookie来防止XSS攻击
2. CSRF( Cross Site Request Forgery), 跨站域请求伪造.
- 攻击简介
- 一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求,包括该用户的会话 cookie 和其他认证信息,发送到一个存在漏洞的web应用程序。这就允许了攻击者迫使用户浏览器向存在漏洞的应用程序发送请求,而这些请求会被应用程序认为是用户的合法请求。
- csrf攻击.黑客不能拿到cookie,也没办法对服务器返回的内容进行解析.唯一能做的就是给服务器发送请求.通过发送请求改变服务器中的数据.
- 攻击原理
-请求时,浏览器自动发送会话cookie等认证凭证,攻击者能创建恶意web页面产生伪造请求。这些伪造请求很难与合法请求分开。 cookie 是浏览器自动携带的,这很关键。 - 攻击预防
- referer 验证(验证http请求的原地址)
- token 验证(在表单中加入了一个随机的token来验证。攻击者没有办法获取到页面信息,所以它没有办法知道token的值.那么伪造的表单中就没有该token值.服务器就可以判断出这个请求是伪造的.)
- 参考资料