XSS 跨站脚本(Cross Site Scripting)
三种入侵方法:
-
储存类
用户上传恶意代码到服务器保存,待其他用户在浏览/操作时,运行该代码,盗窃用户信息或做出恶意行为
-
反射类
用户输入一段恶意代码传到服务器,服务器不识别,将代码返回输出到DOM,导致页面运行了这段代码,破坏页面运行
-
基于DOM
HTML被中间商劫持了,加入了一段代码,造成攻击行为
如何防御:
- 不信任用户的输入,输入需要被转码后再传到后台
- HTTPS传输,避免中间人劫持
- CSP(内容安全策略)
- 限制加载其他域下的资源文件,这样,即使黑客插入了一个 javascript 文件,也无法被加载了
- 禁止向第三方域提交数据,这样用户数据也不会外泄
- 禁止执行内联脚本和未授权的脚本,还可以提供上报机制,可以帮助我们尽快知道有哪些 XSS 攻击,以便尽快修复
- 使用 HttpOnly 属性。HttpOnly是包含在Set-Cookie HTTP响应头文件中的附加标志。生成cookie时使用HttpOnly标志有助于降低客户端脚本访问受保护cookie的风险(如果浏览器支持)。
参考: