【问题标题】:CSRF attacks and WebsocketsCSRF 攻击和 Websocket
【发布时间】:2020-02-16 22:11:50
【问题描述】:

websockets 是否容易受到 CSRF 攻击,如果Websocket 进行像登录一样的身份验证,如何做到这一点?

【问题讨论】:

    标签: javascript websocket


    【解决方案1】:

    我认为是的。

    如果攻击者以某种方式从客户端初始化了一个套接字连接并发送消息,那么是的,CSRF 攻击是可能的。

    当然,这只有在您使用基于 COOKIE 的身份验证时才是正确的。

    由于 CSRF 攻击使用 cookie,这些 cookie 由浏览器随请求自动发送,并且请求得到身份验证。

    如果您使用 cookie 来验证请求和连接,那么是可能的 CSRF 攻击。

    为避免这些攻击,最好使用基于令牌的身份验证,例如JWT。

    No Cookie-based authentication == No need for CSRF protection.

    这里有一些关于AUTHENTICATION的有用链接:

    cookies vs token authentication

    REST api authentication

    Do you need CSRF protection?

    【讨论】:

    • 我觉得这有问题。我们说基于令牌的身份验证优于基于 cookie 的身份验证,但您链接的第一篇文章谈到了将 JWT 存储在 localStorage 中。为什么这样更好?您已经缓解了 CSRF,但您引入了 XSS。我认为“深度防御”比说一种方法比另一种方法“更好”更好。
    • 大多数现代框架都带有输入清理功能,可以防止 XSS 攻击本身。但是,是的,我们应该注意此类攻击。
    • 我同意你的观点 --- '“深度防御”比说一种方法比另一种方法“更好”更好。我们必须选择最适合我们的实施和需求的方法。
    • 在哪里存储 JWT 令牌?我们必须将它存储在持久存储中并通过授权头发送,即使攻击者得到它,他也无法读取存储在其中的数据。
    • 这是一篇关于这个主题的好文章......不要被这个主题推迟,它不是 JWT 的热门工作:cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions
    【解决方案2】:

    我希望这还不算太晚,但是除了 HttpOnly 会话 cookie 之外,您还可以检查 Origin 标头。参考:https://security.stackexchange.com/questions/76816/preventing-csrf-attacks-against-websocket-communications

    Answer 还受以下因素影响:https://channels.readthedocs.io/en/latest/topics/security.html

    基于令牌的身份验证 imo 应保留给移动应用程序。

    【讨论】:

      猜你喜欢
      • 2019-04-25
      • 2018-03-05
      • 2022-01-03
      • 2013-05-06
      • 2013-04-17
      • 1970-01-01
      • 2011-09-30
      • 2013-08-15
      • 2016-01-30
      相关资源
      最近更新 更多