一 . 分类
xss: 跨站脚本攻击,通过注入恶意的html标签或者script代码,控制用户浏览器。通常只要有数据输入的地方,比如评论功能,就会存在跨站脚本攻击的风险。
防御: 1. 在cookie中设置HttpOnly,js脚本将获取不到cookie值。
2. 对用户输入的数据进行过滤,htmlencode,javascriptencode等等。
iframe标签风险:iframe中的内容可以运行js脚本,flash插件等等,破坏用户体验或者恶意代码的注入。
防御: 1. h5中iframe提供了sandbox属性,可以对iframe标签的行为加以限制。
点击劫持(Clickjacking): 攻击者通过构建页面,诱导用户点击某个操作,导致发生一些用户非意愿的行为。
防御: 1. 设置X-Frame-Options: DENY(http header属性),告知浏览器不能将当前内容 放到iframe标签中显示。
错误的内容推断: 响应头中的content-type只是给浏览器提供的内容类型的建议,浏览器可能会根据具体的内容的类型来渲染执行。
防御: 1. 设置X-Content-Type-Options:nosniff。(http header)告知浏览器禁止推断响应内容。
csrf: 跨域请求伪造,利用cookie,冒充用户身份,执行一些违背用户意愿的操作或者请求。
CSRF攻击是源于WEB的隐式身份验证机制!WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的
防御: 1. 验证码。强制用户与应用交互,才能完成最终请求。
2. referer check, 后端对请求来源进行检查。
3. 携带token请求。
4. 设置cookie samesite属性,该属性阻止cookie在跨域情况下发送。也就是阻止 cookie成为第三方cookie。
csrf和xss的一些区别
1.本质来讲,csrf是HTTP问题,xss是代码注入问题。xss是没有对用户输入过滤,导致浏览器执行了用户输入,csrf是浏览器在发送http请求的时候自动带上了用户的cookie,而一般网站的session都存放在cookie中。
参考自:http://web.jobbole.com/92875/