【问题标题】:How to secure communication in client-server app?如何保护客户端-服务器应用程序中的通信?
【发布时间】:2013-03-28 12:51:44
【问题描述】:

我的后端在tomcat 服务器上运行,客户端在浏览器中运行。应用程序建立在 Spring 3 MVC + Spring 安全框架之上。如何保证通信安全?除了将服务器设置为仅通过 HTTPS 访问之外,还有其他选择吗?我没有这方面的经验,所以这可能是一个愚蠢的问题,但这会影响我的应用程序,我是否必须在我的应用程序中设置一些东西,当服务器通过 GET/POST 请求通过 https 与客户端通信时?

【问题讨论】:

    标签: java spring security https


    【解决方案1】:

    这在某种程度上取决于您所说的“安全”是什么意思。如果您想要隐私,则必须使用 TLS (SSL) 作为传输。

    如果您只关心身份验证,那么您还有另一个选择:摘要式身份验证

    摘要式身份验证允许客户端(通常是浏览器)和服务器以安全的方式交换身份验证凭据,而无需保护整个通信。如果您使用摘要式身份验证,那么第三方仍然可以:

    1. 查看客户端和服务器交换了哪些数据
    2. 在客户端和服务器之间插入自己并更改交换

    第三方不能做的是欺骗身份验证或在传输过程中窃取用户名/密码。

    如果这还不够安全,您需要 TLS。您不一定要购买证书。您可以使用 OpenSSL 生成您自己的。但是,此证书不会自动被浏览器信任,因此您不能真正将其用于公共站点。

    您需要查阅服务器文档以了解如何设置 HTTPS 或摘要式身份验证,具体取决于您的需要。

    【讨论】:

      【解决方案2】:

      您的应用程序不应受到从 HTTP 切换到 HTTPS 的影响,Tomcat 会处理这个问题,或者可能是前面的 Apache。重要的是要理解,HTTPS 是服务器事物,而不是应用程序主题,因为客户端与服务器 (Tomcat) 建立连接,而不是与您的应用程序建立连接。查看 Tomcat 文档,它的工作原理非常清楚。

      而且,就像其他人所说的那样:根据您的说法,最好使用 HTTPS (TLS/SSL)。证书一开始有点吓人,但值得花时间。

      【讨论】:

        【解决方案3】:

        HTTPS 是 HTTP 的 (S)ecure 形式,因为您有一个 HTTP 客户端服务器应用程序,我当然会使用 HTTPS。您只需要为您的网站创建一个 SSL 证书并将对您网站的访问限制为仅 HTTPS,那么您的安全性就达到了 99.99%。 您的证书可以是来自 Versign 的商业证书或等效证书,也可以是某些开源引擎。 对于客户端来说,不需要做任何事情来支持 HTTPS

        【讨论】:

        • 所以我唯一需要修改的是限制通过 HTTP 的访问,并且只允许在我的安全上下文配置文件中通过 HTTPS 进行 Spring 安全性?
        • @Dworza 仅使用 HTTPS 是保证安全性的最简单方法。
        • @Dworza 您在 tomcat 中配置 HTTPS(如果我没记错的话是 web.xml)。检查文档,它很详细。
        猜你喜欢
        • 2017-04-11
        • 2012-05-06
        • 2016-01-11
        • 1970-01-01
        • 1970-01-01
        • 2018-08-26
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        相关资源
        最近更新 更多