security - CSRF 不是浏览器安全问题吗?

标签 security browser csrf

关于跨站请求伪造 (CSRF) 攻击,如果 cookie 是最常用的身份验证方法,为什么 Web 浏览器允许从另一个域生成的页面发送某个域(和该域)的 cookie?

通过禁止这种行为在浏览器中是否可以轻松防止 CSRF?

据我所知,这种安全检查没有在网络浏览器中实现,但我不明白为什么。我做错了什么吗?

关于CSRF:

  • On wikipedia
  • On coding horror

  • 编辑:我认为在上述情况下不应该在 http POST 上发送 cookie。这就是让我感到惊讶的浏览器行为。

    最佳答案

    为什么浏览器不发送cookies?

    站点 A ( http://www.sitea.com ) 为用户设置了 cookie。

    用户导航到站点 B ( http://www.siteb.com )。站点 B 具有与站点 A 的集成功能 - 单击此处在站点 A 上执行某些操作!用户点击“这里”。

    就浏览器而言,用户正在有意识地决定向站点 A 发出请求,因此它以与处理对站点 A 的任何请求相同的方式来处理它,这包括将请求中的站点 A cookie 发送到站点 A。

    编辑:我认为这里的主要问题是您认为身份验证 cookie 和其他 cookie 之间存在区别。 Cookie 可用于存储任何内容 - 用户偏好、您最近的高分或 session token 。浏览器不知道每个 cookie 的用途。我希望我的 cookie 始终可供设置它们的站点使用,并且我希望站点确保它采取了必要的预防措施。

    或者您是说如果您在雅虎搜索“gmail”,然后单击将您带到 http://mail.google.com 的链接,即使您告诉 gmail 保持登录状态,您也不应该登录,因为您单击了其他站点的链接?

    关于security - CSRF 不是浏览器安全问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/224049/

    相关文章:

    java - 如何使用特定模式的 CSP header URL

    security - 上传的白名单或黑名单文件扩展名?

    java - 从插件中以编程方式显示 SWT 浏览器

    browser - 我应该使用 HTML5 和 CSS3 吗?

    php - 这足以进行 CSRF 保护吗?

    php - ZF2 表单的 CSRF 即使使用无效值也会进行验证

    javascript - 为什么Cloudfront在我的Web应用程序中加载脚本? (我不使用它)

    security - JBoss 6将JMX限制为本地主机

    java - Java 的浏览器兼容性问题

    java - Spring Security CSRF 与 enctype ="multipart/form-data"