CSRF/XSRF:
一、什么是CSRF?
CSRF(cross-site request forgery) 跨站请求伪造 ,是指攻击者盗用了你的身份,以你的名义发送恶意请求.
二、盗用过程
User(你)登录了某个信任A, A将在登录成功的时候,在返回的响应头设置setCookies。以便下次再访问接口的时候得到验证身份。此时,在没有退出登录的情况下访问危险网站B,B悄悄访问A,因为浏览器在发送的时候给在请求头中加上cookie字段以供A的验证。所以,B就间接性的登录了A,冒用User的身份在A上进行操作。
以上情况是在浏览器没有同源策略下产生
CSRF的防御:
一、服务端:方法很多,总的思想就是在客户端页面加伪随机数:
cookie值进行hash:攻击者在访问信任网站A时,虽然浏览器可以在请求中带上cookie,但是网站A确不仅仅通过cookie来判断用户身份,同时通过用户发送过来的内容中的伪随机数来判断请求真正是用用户发送的。攻击者在请求A的时候,不能在提交的内容中产生伪随机数(通过cookie哈希化的值);
验证码:用户每次提交都需要在表单中填写图片上的随机字符串或者短信验证码
二、客户端: 待补充
...
参考:浅谈CSRF攻击 http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
XSS:
一、什么是XSS, 何时发生?
XSS(cross site scripting)跨站脚本攻击。当用户页面中有input 录入的时候,或者通过get请求传参的时候不是录入普通的文字,而是录入的脚本代码。如"/><script>alert(document.cookie)</script><!- / "onfocus="alert(document.cookie) 这一类的脚本代码。用来获取到用户的cookie。XSS之所以会发生, 是因为用户输入的数据变成了代码
二、攻击场景
1. Dom-Based XSS 漏洞
邮件或其他方式传递攻击者构造的url。诱使别人点击,造成该点击人的信息写泄露。Dom-Based XSS漏洞威胁点击的用户个体
2. Stored XSS(存储式XSS漏洞)
该漏洞允许将攻击代码存在数据库中。该类型是应用广泛而且有可能影响大Web服务器自身安全的漏洞,攻击者将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄露的可能。
XSS防御:
在做xss防御的方案中,遵循一个原则就是用户的录入都是危险的!!!
1.服务端将重要的cookie设置为httponly。让javascript不能获取cookie
2.输入框中,只允许我们期望的数据。其他过滤调
3.对数据进行html Encode编码
4.过滤移除 特殊的html标签 如:<script><iframe><
5.过滤调javascript事件的标签。例如 'onclick''onfocus'之类的
6.过滤调某些自定义标签属性
参考:https://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html
网友评论