关于csrf漏洞以下不正确的是
CSRF的关于经典防御手段是校验Referer头。很多人以为只要检查了Referer就万事大吉,漏洞但实际开发中,正确这个校验经常被绕过。关于比如,漏洞某些浏览器在用户访问 所以问题来了:下面哪个说法不正确? 有人说“CSRF只影响POST请求”。这话错得离谱。GET请求同样危险。你想想,一个 还有个常见误解:“只要用POST就安全了”。这更天真。攻击者可以用JavaScript动态创建一个表单,设置method为POST,然后自动提交。浏览器不会拦这种跨域表单提交——这是HTML规范允许的行为。你以为POST是护城河,其实只是条小水沟,跨过去连鞋都不湿。 再聊聊Token。很多人觉得“只要在表单里塞个随机token就完事了”。但token的生成和校验必须绑定会话。如果你把token放在Cookie里,或者用固定的密钥生成,那等于没设防。更隐蔽的坑是:token如果放在URL参数里,它可能被Referer泄露给第三方——你防了CSRF,却把token送给了统计平台。正确做法是token放在请求体或自定义Header里,并且每次会话刷新。 最后说个更反直觉的点:CSRF攻击不一定需要用户“点击”任何东西。有些攻击利用的是浏览器自动加载的资源,比如CSS里的 回到标题——如果题目问“以下关于CSRF不正确的是哪项”,我猜选项里八成有“必须用户主动点击才会触发”或者“只影响POST请求”。这两条都是典型的错误认知。CSRF的本质是浏览器自动携带Cookie这一机制被滥用,跟用户操作方式、请求方法都没必然联系。防御的核心永远是:让请求携带攻击者无法预知的内容,比如动态token、自定义Header,或者干脆用SameSite Cookie。至于Referer校验,只能算辅助手段,别把它当主力。http://evil.com时,正确如果页面里嵌入了对http://bank.com/transfer的关于请求,Referer会正常带上http://evil.com——但如果你写的漏洞是“只要Referer包含bank.com就放行”,攻击者完全可以在自己的正确域名里伪造一个http://bank.com.evil.com的路径。更糟的关于是,部分浏览器在用户从HTTPS页面跳转到HTTP页面时,漏洞干脆不发送Referer。正确于是关于你的校验逻辑就变成了“无Referer就拦截”——结果用户从邮箱里的链接点进来,请求全被误杀,漏洞你只好改成“无Referer也放行”,正确漏洞又回来了。标签就能发起GET请求,如果某个“删除操作”是用GET实现的——比如
http://bank.com/delete?id=123——那攻击者只要在论坛里发个图片链接,用户一浏览,钱就没了。现实中很多程序员图省事,把状态变更操作直接挂在URL上,这种设计本身就是给CSRF开大门。真正的防护核心,是让攻击者无法构造出合法的请求,而不是纠结于方法类型。url()、视频标签的src,甚至favicon。用户只是正常浏览网页,后台就悄悄发出了跨域请求。所以那些“提醒用户不要点击可疑链接”的建议,在CSRF面前基本是废话——用户根本没点,攻击就完成了。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-