首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >跨站请求伪造(Cross-Site Request Forgery, CSRF)的检测和防御通

跨站请求伪造(Cross-Site Request Forgery, CSRF)的检测和防御通

作者头像
贺公子之数据科学与艺术
发布2025-08-29 18:32:59
发布2025-08-29 18:32:59
14000
代码可运行
举报
运行总次数:0
代码可运行

跨站请求伪造(Cross-Site Request Forgery, CSRF)的检测和防御通常涉及以下几个步骤:

  1. 使用防CSRF令牌:在表单提交或其他敏感操作中加入一个随机生成的token,这个token同时存储在服务器端的会话中和前端的cookie里。每次请求时都需要携带此token,服务器验证两者是否匹配以确认请求的真实性。
  2. 校验Referer头信息:虽然不能完全依赖,但可以检查HTTP Referer头来判断请求是否来自预期的源。攻击者通常无法伪造Referer信息。
  3. 二次确认:对于关键操作,可以采取二次确认机制,比如点击邮件中的链接完成登录或交易,进一步保证用户意愿。
  4. 启用HttpOnly和Secure标志:设置cookie的这两个属性可以阻止JavaScript获取和篡改token,增加安全性。 在服务器端,可以通过在设置cookie时添加HttpOnly和Secure标志来启用这两个属性:
代码语言:javascript
代码运行次数:0
运行
复制
res.cookie('token', token, { httpOnly: true, secure: true });

在上述代码中,res是服务器的响应对象,token是要设置的cookie的值。

httpOnly: true表示该cookie只能通过HTTP协议传输,不能通过JavaScript访问,从而防止了跨站点脚本攻击(XSS)。

secure: true表示该cookie只能通过HTTPS协议传输,不能通过HTTP协议传输,从而增加了对网络窃听的防护。

  1. 使用验证码:对于高风险场景,可以考虑使用验证码来防止自动化攻击。
  2. API层面的验证:如果涉及到API调用,可以在API端也添加CSRF验证,如在JWT(JSON Web Tokens)中包含一个nonce(一次性请求标记)。 API层面的验证可以通过以下方式进行:
  3. CSRF验证(Cross-Site Request Forgery):在API端添加CSRF验证可以防止恶意站点通过伪造请求发送给API。可以在请求头或请求体中包含一个CSRF令牌,API接收到请求后会验证该令牌的有效性。
  4. JWT验证(JSON Web Tokens):JWT是一种用于身份验证和信息传递的开放标准。在API调用中,可以将JWT作为认证令牌发送给API端,并在API端对JWT进行验证,以确保请求的合法性和完整性。可以在JWT中添加一个nonce(一次性请求标记),用于防止重放攻击。
  5. OAuth验证:如果API需要进行用户身份验证,可以使用OAuth来进行授权。OAuth提供了一种安全的授权机制,允许第三方应用程序通过授权令牌访问用户的资源,同时保护用户的隐私和安全。
  6. API密钥验证:可以为每个API调用生成一个唯一的API密钥,并在请求中包含该密钥。API端接收到请求后,会验证该密钥的有效性,以确保请求来自授权的应用程序。
  7. 定期审计和更新:保持警惕,定期审查代码库,查找是否有新的CSRF漏洞,并及时修复。
  8. 教育用户:让用户了解CSRF的风险,提醒他们不要随便点击不明来源的链接或填写表单。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档