CSRF 漏洞相关

发布于 2024-07-29 12:22:02 字数 1943 浏览 11 评论 0

1 定义与原理

CSRF - 跨站请求伪造

1.1 cookie 相关

用户登录的数据包:

响应的数据包:

当提交了用户名和密码登录后,在服务器返回的数据包中携带类的 Set -Cookie 字段,该字段就是为当前登录用户设置的 Cookie 的值。

浏览器在接收到这些 Cookie 的值后会将 set-cookie 字段的值存放在浏览器中。

通过修改请求数据包的 Cookie 为管理员的 Cookie,即使不输入密码也可以登录网站后台。

数据包的中 Cookie 的值是浏览器从本地存储中取出,并自动填充到数据包中如果攻击者控制了用户浏览器并且窃取了 cookie.浏览器会自动完成 Cookie 的填充,目标网站会误认为该数据包就是管理员发送的,会以管理员的权限进行相关的操作。

1.2 CSRF

前提:数据包的中 Cookie 的值是浏览器从本地存储中取出,并自动填充到数据包中

攻击者在一定攻击条件下,利用被攻击者的身份向服务器发起请求,服务器可以正常解析并返回结果。

原理:一般来说,攻击者通过伪造用户的浏览器的请求,向访问用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。

发生条件:

  • 攻击者在网站 A 处于登录状态
  • 必需要在网站 A 同浏览器中打开黑客提供的链接
  • 后台身份验证不严格(例如除 Cookie 外无其它验证)

2 防御

2.1 HTTP Referer 限制

站点可以对一些敏感操作限制其 Referer 字段的值,比如某站点转账的时候使用:

http://bank.example/withdraw?account=bob&am=1000000&for=Mallory

转账的操作一定是用户登录之后在本站点的页面上操作的,因为可以将 Referer 字段限制为只允许本站点。

2.2 Token

CSRF 成功的原因在于站点对于用户身份的辨别依赖于 Cookie,因此攻击者可以在不知道用户口令的情况下直接使用用户的 Cookie 来通过安全验证。

在 HTTP 请求中以参数的形式加入一个随机产生的 HTTP Token,服务器接收到用户请求后会验证 Token,如果没有 Token 或者 Token 不正确都会被认为是攻击而直接丢弃

  • GET 请求: http://url?csrftoken=tokenvalue
  • POST 请求: <input type="hidden" name="csrftoken" value="tokenvalue"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

人间不值得

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

内心激荡

文章 0 评论 0

JSmiles

文章 0 评论 0

左秋

文章 0 评论 0

迪街小绵羊

文章 0 评论 0

瞳孔里扚悲伤

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文