【问题标题】:Clarification for sending credentials via HTTPS通过 HTTPS 发送凭据的说明
【发布时间】:2016-11-03 01:57:20
【问题描述】:

我有一个在与JIRA REST API 集成的服务器上运行的网站。为了验证请求,该站点要求提供用户凭据并将其发送到 JIRA 以返回会话(请参阅this)。

显然,我不希望这些凭据以明文形式四处浮动。虽然这将在不面向外部的内部网络上运行,但它仍然很重要。

我的问题是(请原谅糟糕的解释):即使 JIRA 使用 HTTPS,我是否需要为我的服务器获取 SSL 证书。在这种情况下,JIRA 有一个有效的 SSL 证书并由 HTTPS 保护。

“流程”的粗略概述:

User enters user/pass and submits HTML form (index.html on nodejs) -> 
    -> Request (HTTP POST) is sent to my server w/ creds (nodejs)
        -> My server sends a request to JIRA (HTTPS)
        <- JIRA responds with JSON
    <- Response is received by my server
<- My server sends data back to index.html

我的想法是在这种情况下我需要 HTTPS,因为:

XX.XX.XX.XX <-/-> YY.YY.YY.YY <---> ZZ.ZZ.ZZ.ZZ

[XX] = client (index.html)
[YY] = server (nodejs)
[ZZ] = JIRA

在该“图表”中,客户端通过 HTTP 将凭据发送到我的服务器,这是不安全的。然后,服务器会将凭据发送到启用了 HTTPS 的 JIRA。

在这种情况下,我假设可以在 X 和 Y 之间嗅探凭据,但不能在 Y 和 Z 之间嗅探(我开始混淆自己......)???

(P.S. 由于CORS 的限制,我需要在中间放置一个服务器。除了 HTTPS 问题之外,一切正常。)

【问题讨论】:

    标签: javascript node.js rest ssl https


    【解决方案1】:

    你是对的:如果服务器 Y 上没有配置 SSL,那么客户端 X 和服务器 Y 之间的 HTTP 通信是明文的。可以在那里嗅探凭据,但不能在 Y 和 Z 之间。

    如果您在 X 或 Y 上运行它(或介于两者之间的任何可能看到数据包的东西),您可以使用类似 wireshark 的工具轻松检查:https://www.wireshark.org/。或者你的 tcpdump 命令行没有 GUI(在 Unix/Linux 上)。

    为了确保这一点,您确实需要在服务器 Y 上切换到 HTTPS,这意味着在其上放置 SSL 证书。您可以使用自签名证书进行测试(但浏览器会抱怨它),然后放入有效证书:因为您似乎处于公司环境中,您可能拥有内部浏览器信任的公司证书颁发机构。

    【讨论】:

      【解决方案2】:

      假设可以在任何地方嗅探凭据,加密所有内容。

      【讨论】:

        【解决方案3】:

        Request (HTTP POST) is sent to my server w/ creds (nodejs) 是 HTTP,而不是 HTTPS,这是一个安全问题。获取证书并使用 TLS 1.2 设置 HTTPS。

        请记住,如果安全性不好,用户会受到影响,把自己放在他们的位置上,您是否希望您在 Internet 上使用的服务具有最佳实践安全性?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多