Web安全系列之CSRF攻击

99 篇文章 3 订阅
57 篇文章 0 订阅

前面学习了 xss攻击的相关知识点,现在接着了解下 csrf攻击

什么是csrf攻击

csrf 全称跨站请求伪造(Cross-site request forgery),指的是攻击者携带网站cookie,冒充用户请求的攻击行为。

与 xss攻击 的区别

xss攻击主要指网站被攻击者利用漏洞恶意注入脚本并执行,是一种注入类攻击;csrf 描述的是攻击者携带cookie冒充用户的请求行为,它们属于两种不同维度上的分类。

可以预想的是,如果 xss攻击的执行脚本包含请求服务器的行为,其也会携带用户cookie达到冒充用户请求的行为,这时候也属于 csrf攻击,不过我们一般称这样的情况为 xsrf攻击。

经典的csrf攻击过程

  1. 用户C打开a网站,向服务器A发送请求进行登录

  2. 登陆验证通过,服务器返回cookieA

  3. cookieA被保存在浏览器中,生命周期默认为浏览器关闭

  4. 在浏览器未关闭的情况下(A域名的cookie还在),用户被攻击者诱导打开b网站

  5. 在网站b中,向服务器A发送跨域请求

  6. 在网站b的请求中浏览器为其自动携带上了服务器A的cookie

  7. 服务器A分析请求cookie得到此请求为用户C发起,正确处理网站b的请求

需要明确的是,浏览器设置和携带cookie是根据请求中服务器的域名来设置和获取的,而非请求所在网站域名。所以,用户首次在网站a请求服务器A得到的cookie对应服务器A的域名,在网站b中再次请求时也会携带服务器A域名下的cookie。其实仔细想想,如果cookie对应的是网站请求方的域名,那么一个网站如果请求多个服务器域名的话,那么它们之间的cookie很可能冲突,而且也无法通过cookie来做单点登陆了。

csrf的防范

  1. 验证 HTTP Referer 字段

HTTP 的 Referer 字段记录了该 HTTP 请求的来源(网址)。通过 HTTP Referer 可以判断请求所在的网址,进而拦截外站的非法请求。

使用这中方式防范 CSRF 的应当注意

  • 请求发起者可以设置不携带 Referer,重定向也不会携带 Referer

  • Referer 由浏览器携带,也可能由于浏览器的实现差异导致问题,或者因为浏览器安全漏洞导致被篡改。

  • 对于页面请求来说,要注意 Referer 可能是搜索引擎页面

关于 Referer 的知识可以参考阮一峰老师的HTTP Referer 教程

  1. 使用验证码校验

对于重要操作如支付来说,可以使用验证码验证用户身份。

  1. CSRF Token

CSRF 的本质在于盗用用户的 Cookie 信息然后作为用户凭证冒充用户的操作,如果在验证用户流程中多加个 CSRF Token 的验证,判断 Cookie 是否来自用户网站。那么第三网址发起的请求虽然携带 Cookie 但是获取不到用户网站的 CSRF Token,就可以在服务端设置拦截。

CSRF TOken 可以放置在请求参数中,也可以放在自定义 HTTP 头部字段。但是放在请求中可能由于 Get 请求被放置在 URL 中,再跳转第三方网站时被 Referer 携带泄露。所以推荐放在 HTTP 头部字段中

  1. 双重Cookie

csrf攻击的原因是请求会自动携带 Cookie,我们可以利用 JS 无法获取跨域 Cookie 的同源限制。发送请求时携带 Cookie 参数,服务器端校验开发者携带的 Cookie 和浏览器自动携带的 Cookie 是否一致来判断是否为正常请求。

双重 Cookie 有以下限制

  • Cookie 二级域名的跨域问题(Domain 设置为主域可能会由于其它子域被攻击而导致安全问题)

  • 无法设置 Cookie 的 HttpOnly

  • Cookie 导致请求数据加大,资源浪费

  1. 利用 Cookie 的新属性 SameSite

现代浏览器将 Cookie 的 SameSite 设置为 Lax 其实已经将大部分跨域请求都设置为不再携带 Cookie。当然如果设置为 Strict 就可以完全避免跨域携带 Cookie 了。具体详见做一个真正懂cookie的前端

使用 SameSite 严格模式的缺点

  • 新标签重新打开也不携带 Cookie,需要用户重复登录

  • 二级域名无法共享 Cookie,需要用户重复登录

  1. 检测、监控

  • CSRF检测工具:CSRFTester

  • CSRF监控:代理层统一拦截监控

  1. 防止网站被利用

  • 严格管理所有的上传接口,防止任何预期之外的上传内容(例如HTML)。

  • 添加Header X-Content-Type-Options: nosniff 防止黑客上传HTML内容的资源(例如图片)被解析为网页。

  • 对于用户上传的图片,进行转存或者校验。不要直接使用用户填写的图片链接。

  • 当前用户打开其他用户填写的链接时,需告知风险(这也是很多论坛不允许直接在内容中发布外域链接的原因之一,不仅仅是为了用户留存,也有安全考虑)。

总结

CSRF攻击利用了浏览器跨域自动携带 Cookie 的特点,我们可以从不同维度防范与减少 CSRF攻击的风险。对于前端安全这块,我也是刚刚开始学习和研究,如果有错误的地方,欢迎大家指出。

01网络安全工程师(白帽子)企业级学习路线

第一阶段:安全基础(入门)

第二阶段:Web渗透(初级网安工程师)

第三阶段:进阶部分(中级网络安全工程师)

学习资源分享

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《Web安全漏洞加固手册v2.0》是一本针对web安全漏洞的加固手册。这本手册涵盖了许多常见的web安全漏洞,并提供了详细的加固方法和技巧。 这本手册的主要目的是帮助开发人员和网络管理员加强他们的网站和应用程序的安全性。它提供了一系列安全措施和建议,以减少常见的漏洞和攻击面。 手册中首先介绍了一些web安全的基础知识,如跨站脚本攻击(XSS)、SQL注入、跨站请求伪造(CSRF)等。然后详细介绍了这些漏洞的工作原理和可能的攻击场景。接下来,手册提供了一系列的加固措施和建议,以避免这些漏洞的利用。 手册中的加固方法包括输入验证、输出编码、会话管理、访问控制、密码安全等方面。它提供了具体的代码示例和配置建议,以帮助开发人员和网络管理员快速理解和实施这些安全措施。 除了加固方法,手册还提供了一些常见的安全测试工具和技术,以帮助用户评估他们的网站和应用程序的安全性。这些工具和技术包括漏洞扫描器、渗透测试、安全审计等。 总的来说,《Web安全漏洞加固手册v2.0》是一本非常有用的指南,可以帮助开发人员和网络管理员提高其网站和应用程序的安全性。它提供了详细的加固方法和技巧,以及一些常见的安全测试工具和技术。使用这本手册可以增强对web安全漏洞的防范和应对能力。 ### 回答2: Web安全漏洞加固手册(v2.0)是一份指导开发人员和网站管理员加强网站安全的手册。该手册包含了识别和解决常见Web安全漏洞的方法和建议。 首先,手册详细介绍了各种常见的Web安全漏洞,如跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、SQL注入、文件上传漏洞等。手册通过详细解释漏洞的原理和攻击方式,帮助开发人员更好地了解这些漏洞的风险和潜在威胁。 其次,手册提供了加固漏洞的方法和建议。对于每种漏洞,手册列出了相应的修复措施和最佳实践,包括输入验证、输出转义、使用安全密码存储、限制访问权限等。这些方法和建议可以帮助开发人员及时修复漏洞、提高网站的安全性。 此外,手册还介绍了与Web安全相关的其他主题,如安全的会话管理、HTTP安全策略(CSP)配置、安全的加密传输(SSL/TLS)、安全的第三方API使用等。这些内容进一步提升了开发人员对Web安全的认识,并提供了相应的解决方案。 需要注意的是,Web安全是一个动态的领域,安全威胁和攻击技术不断演变。因此,手册还提供了定期更新和加固的建议,以保持技术的时效性和有效性。 总之,Web安全漏洞加固手册v2.0是一个全面指导开发人员加强Web安全的资源。通过遵循手册中的方法和建议,开发人员可以最大程度地减少Web安全漏洞的风险,并提高网站的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值