51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

解释HTTP协议中的CSRF攻击原理,并给出一个具体的攻击场景。如何通过前端和后端的双重防护来防御CSRF?请结合360浏览器或安全卫士中的某个功能,说明实际应用中的防护措施。

360助理安全研究员(漏洞挖掘与利用)难度:中等

答案

1) 【一句话结论】:CSRF攻击通过利用用户已登录网站的会话Cookie,伪造HTTP请求诱导服务器执行非授权操作,核心是绕过服务器对请求来源的验证。

2) 【原理/概念讲解】:会话Cookie是服务器为用户登录状态创建的标识(如JSESSIONID),浏览器自动携带。同源策略允许跨域请求但允许Cookie传输。攻击者构造恶意页面(如社交广告),当用户访问时,页面嵌入隐藏表单或iframe,发送伪造的POST请求。由于浏览器自动带上Cookie,服务器误判为用户操作。类比:你登录银行后,浏览器保存了登录凭证(会话Cookie),现在一个被坏人控制的网站让你“点击”一个链接(其实是自动提交表单),坏人利用你的凭证向银行转账,而你不知情。

3) 【对比与适用场景】:

特性CSRF(跨站请求伪造)XSS(跨站脚本攻击)
定义伪造用户请求,诱导服务器执行操作注入恶意脚本,在用户浏览器执行
核心机制利用会话Cookie,自动携带注入脚本,用户点击后执行
攻击条件用户已登录目标网站用户访问包含恶意脚本的页面
防护重点验证请求的Token或来源输入验证、输出编码
使用场景转账、修改资料等需要权限的操作窃取信息、执行恶意操作(如盗取Cookie)

4) 【示例】:用户登录银行后,访问一个恶意广告(来自恶意网站),广告页面代码:

<form action="https://bank.com/transfer" method="POST" style="display:none;">
  <input type="hidden" name="amount" value="10000">
  <input type="hidden" name="to" value="badguy">
  <input type="hidden" name="csrf_token" value="abc123"> <!-- 前端动态生成Token -->
</form>
<script>document.forms[0].submit();</script>

请求头:

POST /transfer HTTP/1.1
Host: bank.com
Cookie: JSESSIONID=abc123; csrf_token=abc123
Content-Type: application/x-www-form-urlencoded
Content-Length: 68
amount=10000&to=badguy&csrf_token=abc123

银行后端验证token是否与用户会话匹配(通过JSESSIONID关联),匹配则转账。

5) 【面试口播版答案】:CSRF攻击是利用用户已登录的会话Cookie,伪造HTTP请求诱导非授权操作。比如用户登录银行后,访问一个恶意广告,广告页面发送隐藏的POST请求到转账接口,浏览器自动带Cookie导致银行执行转账。防御需前端加CSRF Token(每个请求带随机token),后端验证token。比如360浏览器内置CSRF防护,会自动生成token并存储,请求时检查token有效性,拦截可疑请求。具体来说,前端在表单或AJAX请求中添加token(如<input type="hidden" name="csrf_token" value="abc123">),后端验证该token是否与用户会话匹配,不匹配则拒绝。360安全卫士或浏览器通过内置的“智能安全检测”模块,分析请求来源(是否来自恶意网站)和token有效性(是否与用户会话关联),拦截或提示用户风险。同时,360会结合会话劫持防护,比如定期更新会话令牌,降低被劫持后CSRF攻击的成功率。

6) 【追问清单】:

  • 问题1:CSRF Token如何防止重放攻击?
    回答要点:Token动态生成(如UUID+时间戳),与用户会话绑定,后端验证时检查token是否与当前会话匹配,避免旧token被重用。
  • 问题2:360浏览器如何具体实现CSRF防护?
    回答要点:通过内置“安全检测”模块分析请求来源(恶意网站)和token有效性(会话匹配),拦截可疑请求并提示用户,同时记录异常日志。
  • 问题3:GET请求是否需要CSRF Token?
    回答要点:GET请求通常不需要,因为参数在URL中,攻击者难以构造恶意URL(除非URL长度限制允许,但通常较短,难以包含复杂参数)。
  • 问题4:CSRF与XSS的核心区别是什么?
    回答要点:CSRF是请求伪造,XSS是代码注入,CSRF攻击者需知道目标网站URL和操作接口,XSS需要知道用户访问的页面并注入脚本。
  • 问题5:Token的生成规则(随机性、有效期)如何影响防护?
    回答要点:Token需随机生成(如UUID+时间戳),与用户会话绑定并设置有效期(如5分钟),过期后失效,确保token不可预测且仅限当前会话使用。

7) 【常见坑/雷区】:

  • 坑1:认为CSRF需要用户主动点击恶意链接,忽略“访问恶意页面即可”的攻击方式。
    反问:CSRF攻击是否需要用户主动点击链接?
    答案:不需要,只需用户访问包含恶意代码的页面(如广告、社交链接),浏览器会自动执行请求。
  • 坑2:只做前端token验证,忽略后端验证。
    反问:如果前端token被篡改或绕过,如何防御?
    答案:后端必须验证token的有效性(与用户会话匹配),否则即使前端有token,攻击者仍可伪造请求。
  • 坑3:混淆CSRF和XSS,认为两者都是注入攻击。
    反问:CSRF和XSS的核心区别是什么?
    答案:CSRF是请求伪造,XSS是代码注入,CSRF攻击者需要知道目标网站的URL和操作接口,XSS需要知道用户访问的页面并注入脚本。
  • 坑4:忽略Token的生成规则(随机性、有效期),导致防护不严谨。
    反问:CSRF Token的生成机制是怎样的?
    答案:Token应随机生成(如UUID+时间戳),与用户会话ID绑定,并设置有效期(如5分钟),过期后失效。
  • 坑5:认为所有请求都需要CSRF Token,忽略GET请求的边界情况。
    反问:GET请求是否需要CSRF Token?
    答案:GET请求通常不需要,因为参数在URL中,攻击者难以构造恶意URL(除非URL长度限制允许,但通常较短,难以包含复杂参数)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1