浏览器安全
跨站脚本攻击 (XSS)
XSS 攻击(Cross-Site Scripting)是一种安全漏洞,攻击者通过在网页中插入恶意脚本来窃取用户的敏感信息、劫持会话、篡改网页内容等。
1. XSS 攻击类型
XSS 攻击主 要分为以下三种类型:
1. 反射型 XSS(Reflected XSS):
- 恶意脚本通过 URL 参数等被立即反射回用户的浏览器并执行
- 攻击过程:
- 攻击者构造一个带有恶意脚本的 URL 并诱骗用户点击
- 用户点击链接后,服务器将恶意脚本包含在响应中
- 浏览器执行恶意脚本
2. 存储型 XSS(Stored XSS):
- 恶意脚本被存储在服务器上,当其他用户访问相关页面时,恶意脚本被加载和执行
- 攻击过程:
- 攻击者将恶意脚本提交到服务器(如通过留言板、论坛帖子等)
- 恶意脚本被存储在服务器的数据库中
- 其他用户访问该页面时,恶意脚本被加载并执行
3. DOM 型 XSS(DOM-based XSS):
- 恶意脚本通过修改页面的 DOM 结构在浏览器端执行,而不经过服务器
- 攻击过程:
- 攻击者构造一个带有恶意脚本的 URL 并诱骗用户点击
- 用户点击链接后,浏览器解析 URL 并在客户端修改 DOM 结构
- 浏览器执行恶意脚本
2. XSS 防御措施
1. 输入验证和输出编码:
- 对用户输入进行严格验证,拒绝不合法的输入
- 对输出进行编码(如 HTML 编码、JavaScript 编码)以防止恶意脚本执行
2. 使用安全的 JavaScript 库:
- 使用经过验证的 JavaScript 库和框架,这些库和框架默认会对输出进行编码处理
3. 内容安全策略 (CSP):在服务器端设置 CSP 头,限制页面可以加载的资源
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'
4. HTTPOnly 和 Secure 标志:
- 设置 HTTPOnly 和 Secure 标志来保护 cookies,防止被恶意脚本读取和窃取
跨站请求伪造 (CSRF)
CSRF 攻击(Cross-Site Request Forgery)是一种攻击方式,攻击者诱导用户在已认证的情况下执行未授权的操作,从而冒充用户身份进行恶意行为。