【问题标题】:GWT RPC Cookie authenticationGWT RPC Cookie 认证
【发布时间】:2011-01-17 05:35:04
【问题描述】:

我在我的 glassfish 服务器上使用 gwt,并且我正在尝试通过 cookie 对我的一些 RPC 调用进行身份验证。这可能吗?有没有关于如何编码的例子?

【问题讨论】:

    标签: java authentication gwt cookies


    【解决方案1】:

    仅依赖 cookie 进行身份验证将使您的网站/服务容易受到跨站点请求伪造/XSRF/CSRF 攻击 - 请阅读 Security for GWT Applications 了解更多信息。

    最好的方法是仔细检查您从 cookie 获得的值以及通过其他方式传输到服务器的值 - 作为请求的一部分(标头、自定义字段等)。

    除此之外,还有许多涵盖该主题的教程 - 只需搜索 Java(servlet)身份验证 - 它不必是特定于 GWT 的。 Google Web Toolkit Group也有很多threadsaboutthesubject

    【讨论】:

      【解决方案2】:

      我假设您使用 GWT 的 RPC servlet 来处理客户端发出的请求。

      我想到的一个选择是在请求到达 GWT 的 servlet 之前编写和配置一个可以检查 cookie 的 ServletFilter。

      【讨论】:

        【解决方案3】:

        您可能会重新考虑使用 cookie,因为它是一个潜在的安全漏洞。 为什么不将您的通信使用 HTTPS?

        【讨论】:

        • HTTPS 不能防止 XSRF 攻击,AFAIK,所以你“只是”保护免受中间人攻击。它还有一个额外的怪癖,使大多数浏览器缓存 HTTPS 请求的内容。另外,使用 GWT 和所有 AJAX 东西,您要么保留网站 HTTP 或 HTTPS - 将它们混合起来可能会在某些浏览器上导致一些可怕的警告 - 这不是您想向用户展示的东西 :)
        • 是的......但我想把整个网站放在 HTTPS 下而不是混合它。
        • 对,然后用户每次使用该网站时都必须下载整个应用程序(JS文件),可能会抱怨加载速度有多慢等。当然,如果这是一个银行网站或类似的东西,安全性是第一优先级,整个站点应该是 https。尽管如此,我关于仅 cookie 身份验证的观点仍然成立。
        【解决方案4】:

        你能不能只使用标准的“会话”范围,即

        request.getSession()
        

        我在 GWT 应用程序中使用的一种模式是有一个单独的“老式”登录表单来设置会话。成功登录后,将显示 GWT 应用的主机页面。

        如果会话中没有必要的值,则说明用户未登录。您的服务应该返回一个异常,可能会指示 GWT 应用重定向到登录页面,或显示错误。

        【讨论】:

        • 不为每个 RPC 有效负载发送自定义会话 ID 可能会使 RPC 服务对 XSRF/CSRF 攻击开放
        猜你喜欢
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        • 2011-06-11
        相关资源
        最近更新 更多