ajax - 通过 HTTPS 服务单页应用程序的必要性

标签 ajax security ssl https single-page-application

我目前正在开发一个单页应用程序,该应用程序与托管在不同服务器上并受 SSL 保护的 REST API 对话。

我想知道我是否应该在为单页应用程序提供服务的服务器上设置 SSL 证书,或者是否只需在后端服务器上设置它就足够了,考虑以下因素:

  1. 单页应用程序是重置密码链接的端点,在查询字符串中带有 secret token 。这些链接通过电子邮件发送给我的用户。当用户单击链接时,他的浏览器会请求单页应用程序。因此,GET 请求未加密,查询字符串也未加密。

  2. 然后该应用会要求用户输入一个新密码,这个新密码会通过 ajax 发送到受 SSL 保护的后端。

所以我的看法是,首先考虑为我的单页应用程序设置 SSL 以确保安全性是值得的,因为 GET 请求因此未加密,查询字符串和 token 也不是敏感信息。但是,如果只考虑第二个考虑因素,则不需要考虑,因为单页应用程序和后端之间的连接是通过 SSL 完成的(因为单页应用程序使用 Ajax 与通过 SSL 保护的端点通信) .

我说的对吗?还是完全走偏了?谢谢!

最佳答案

您的直觉是正确的。第一种情况和第二种情况之间唯一有效的区别是,在 (1) 中,您将敏感信息( token )发送到前端服务器,以及 (2) 您将敏感信息(密码)发送到后端服务器。因此,由于您要向两者发送敏感信息,因此它们都需要通过 SSL 进行保护。


如果前端服务器没有受 SSL 保护,这里是一个可能的攻击途径:

  1. 当用户在查询字符串中发送重置 token 时,攻击者通过 MITM 访问前端服务器,攻击者获得对重置 token 的访问权限。

  2. 在真实客户端发送密码重置请求之前,攻击者将密码重置请求发送到后端服务器。

  3. 攻击者将新密码发送到后端服务器。密码被重置为攻击者知道的密码。

攻击者无需通过任何步骤破坏后端服务器的 SSL 即可对前端服务器发起攻击。当然后端服务器将从用户那里接收密码,所以它也需要 SSL。简而言之,为了防止中间人攻击,您的两台服务器都需要 SSL。

关于ajax - 通过 HTTPS 服务单页应用程序的必要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773457/

相关文章:

iOS 安全配置参数

security - Office 文档提示登录匿名 SharePoint 网站

ssl - 如何管理自托管 HTTPS 的 SSL key

javascript - Ajax 调用后加载脚本不起作用

javascript - 复选框值无法使用 AJAX 正确发送到 PHP

security - 这个 OAuth2 Native 应用程序流程可以被认为是安全的吗?

python-2.7 - 嵌入 SSL 证书

Node.Js/Express 应用程序、https 服务器和 nginx

php - 无法登录 - 并且没有错误消息。 - PHP

jquery - 从 iframe 内部加载 Jquery (Galleria) 脚本时出现问题