前端安全
xss 跨站脚本攻击
跨站脚本攻击(Cross Site Scripting)
xss 攻击的原因:XSS 攻击的主要原因之一是在将用户生成的输入呈现在页面上。例如,攻击者可能能够使用 JavaScript 注入恶意代码,并且该代码可以在你的应用呈现 DOM 时执行。
此恶意代码最终可能会访问并窃取 用户 Token、cookie 以及浏览器中存储的其他敏感信息。
防范方法
-
输入验证:
- 使用白名单模式验证输入,限制允许的字符(如仅允许字母、数字和特定符号)。
-
输出编码:
- 对动态生成的 HTML 内容进行编码,使用库如 DOMPurify。
- 在输出文本前,使用 encodeURIComponent() 对 URL 进行编码。
-
使用安全的 API:
-
避免 innerHTML,使用 textContent 来插入文本。
-
对图像使用 src 属性,而不是直接插入 HTML 标签。
-
-
内容安全策略 (CSP):
- 配置 HTTP 头 Content-Security-Policy,限制可加载的脚本和样式源。
- 例如,禁止内联脚本:default-src 'self'; script-src 'self';
-
HTTPOnly 和 Secure 标志:
- 在设置 cookie 时,使用 HttpOnly 和 Secure 标志,防止客户端 JavaScript 访问。
-
避免使用 eval():
- 避免动态执行字符串,使用其他方法来处理数据,例如 JSON.parse()。
跨站请求伪造(CSRF)
跨站请求伪造(CSRF, Cross-Site Request Forgery)是一种攻击手段,它迫使已登录用户的 web 应用在没有用户知情的情况下,发送恶意请求。
产生原因:
1.用户登录受信任网站 A,并在本地生成 Cookie。
2.用户访问危险网站 B, 网站 B 中发送请求给网站 A,请求会自动带上 Cookie。
防范方法
-
在每个敏感操作的请求中加入使用从服务器生成的 CSRF 令牌,服务器验证该令牌是否有效。
-
服务器可以检查请求中的 Referer 或 Origin 头,确保请求来自可信的来源。