javascript - 通过 HTTPS 发送凭据的说明

标签 javascript node.js rest ssl https

我有一个网站正在与 JIRA REST API 集成的服务器上运行.为了对请求进行身份验证,该站点要求提供用户凭据并将其发送到 JIRA 以返回 session (请参阅 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 之间嗅探(我开始混淆自己......)???

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

最佳答案

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

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

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

关于javascript - 通过 HTTPS 发送凭据的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38132124/

相关文章:

node.js - 如何在 Mocha 测试中模拟无连接

java - 在 DispatcherServlet 中未找到名称为 'dispatcherServlet' 的 URI [/user] 的 HTTP 请求的映射

javascript - 选中 3 个复选框后的操作

javascript - GruntJS 可配置首次运行

javascript - 如何为需要测试其发射的 Angular Directive(指令)进行 Jasmine 单元测试?

api - 列出 Google 云端硬盘中的文件时如何排除已删除的文件

rest - Teamcity API,项目中构建配置的状态

javascript - 如何在选择及其父 div 及其邻居按钮上切换禁用

node.js - Hubot-hipchat 可以进行 1-1 聊天,但不能在房间内聊天

node.js - 如何在 Windows 机器上使用 Node Js 连接到 Oracle 数据库