1. XSS 攻击的原理及防御措施
答案:
-
原理 :攻击者注入恶意脚本(如
<script>
)到网页,用户访问时脚本执行,窃取 Cookie 或篡改页面。- 反射型 :通过 URL 参数传递恶意脚本,需用户点击触发(如钓鱼链接)。
- 存储型 :恶意脚本存储于数据库(如评论区),用户访问页面自动执行。
- DOM 型 :前端脚本操作 DOM 时触发,无需服务端交互 (如
document.write
拼接恶意内容)。
-
防御:
- 输入过滤 :过滤
<
,>
等危险字符。 - 输出转义 :动态渲染内容时转义 HTML 字符(如
&
→&
)。 - HttpOnly Cookie:禁止 JavaScript 读取敏感 Cookie34。
- CSP :通过 HTTP 头限制脚本加载源(如
Content-Security-Policy: script-src 'self'
)。
- 输入过滤 :过滤
2. CSRF 攻击的原理及防御方法
答案:
-
原理 :利用用户已登录的 Cookie,诱导用户访问恶意链接伪造请求(如自动发起转账)。
-
防御:
- Token 验证:服务端生成随机 Token,前端请求时携带并验证(如表单隐藏字段)。
- SameSite Cookie :设置 Cookie 的
SameSite=Lax/Strict
,限制跨域携带。 - Referer 检查:验证请求来源是否为合法域名(但可伪造)。
- 二次验证:敏感操作需密码或短信验证。
3. 点击劫持(Clickjacking)的防御手段
答案:
-
原理 :通过透明 iframe 覆盖合法页面,诱导用户点击隐藏按钮(如伪造点赞)。
-
防御:
- X-Frame-Options :设置 HTTP 头
X-Frame-Options: DENY
禁止页面被嵌套。 - CSP 的 frame-ancestors :限制页面嵌套权限(如
frame-ancestors 'self'
)。
- X-Frame-Options :设置 HTTP 头
4. CORS 配置错误的风险及修复方法
答案:
-
风险 :错误配置
Access-Control-Allow-Origin: *
导致跨域数据泄露。 -
修复:
- 限制域名 :设置为具体域名(如
Access-Control-Allow-Origin: https://example.com
)。 - 校验请求头 :明确允许的请求方法和头部(如
Access-Control-Allow-Methods: POST, GET
)36。
- 限制域名 :设置为具体域名(如
5. HTTPS 中间人攻击的防御措施
答案:
-
风险 :攻击者伪造证书或降级 HTTPS 为 HTTP,窃取传输数据。
-
防御:
- HSTS :通过 HTTP 头
Strict-Transport-Security
强制使用 HTTPS。 - 证书绑定:前端校验服务器证书指纹,防止伪造37。
- HSTS :通过 HTTP 头
6. 本地存储(localStorage)的安全风险
答案:
-
风险 :
localStorage
数据可通过 JavaScript 直接读取,易被 XSS 窃取。 -
防御:
- 避免存储敏感数据 :如 Token 应存储在 HttpOnly Cookie 中。
- 加密存储:使用 AES 等算法加密数据后再存储。
7. 第三方依赖漏洞的典型案例及应对方案
答案:
-
案例 :
Lodash
的原型污染漏洞 (通过_.merge
修改对象原型链)。 -
应对:
- 更新依赖 :定期使用
npm update
升级到安全版本。 - 代码扫描:使用 Snyk、Dependabot 等工具检测漏洞。
- 更新依赖 :定期使用
8. CSP(内容安全策略)的作用及配置
答案:
-
作用:限制页面资源加载源,防止 XSS 和数据泄露。
-
配置示例:
csshttpCopy Code Content-Security-Policy: default-src 'self'; script-src 'self' trusted.com
- 解释 :仅允许加载同源和
trusted.com
的脚本,其他资源(如图片)默认同源。
- 解释 :仅允许加载同源和
9. HTTP Only Cookie 的作用
答案:
- 作用 :设置
HttpOnly
后,JavaScript 无法读取 Cookie,降低 XSS 窃取会话的风险。
10. CSRF 与 XSS 的核心区别
答案:
- CSRF :利用用户已认证的身份伪造请求(如自动转账),依赖用户触发。
- XSS :直接在用户浏览器执行恶意脚本,窃取数据或篡改页面。
记忆技巧
- XSS:联想"脚本注入" → 防御用"转义 + CSP + HttpOnly"。
- CSRF:联想"伪造请求" → 防御用"Token + SameSite"。
- CSP:联想"资源白名单" → 配置时写明允许的域名。
- HTTPS 安全:联想"HSTS 强制加密 + 证书绑定"。