【问题标题】:Necessity to serve a single page application through HTTPS通过 HTTPS 提供单页应用程序的必要性
【发布时间】:2015-09-25 01:38:51
【问题描述】:

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

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

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

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

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

我说的对吗?还是完全偏离正轨?谢谢!

【问题讨论】:

    标签: ajax security ssl https single-page-application


    【解决方案1】:

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


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

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

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

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

    攻击者无需破坏后端服务器的 SSL 即可在前端服务器上实施此攻击。当然后端服务器会收到用户的密码,所以它也需要 SSL。简而言之,为了防止中间人攻击,您的两台服务器都需要 SSL。

    【讨论】:

      猜你喜欢
      • 2019-04-07
      • 2011-02-27
      • 2011-10-30
      • 2021-02-04
      • 2011-04-23
      • 1970-01-01
      • 2018-04-24
      • 2013-09-20
      • 1970-01-01
      相关资源
      最近更新 更多