将httpredirect到https是一个坏主意?
我正在阅读这个页面 ,它说,如果一个站点是SSL,并且用户试图通过普通的http访问它,那么应用程序就不应该把用户redirect到https。 它应该阻止他。 有人可以validation这个的有效性吗? 这听起来不是一个好主意,我想知道将用户转到https的真正风险是什么。 似乎没有技术原因,只是这是教育用户的好方法。
禁用对域的HTTP访问,甚至不redirect或链接到SSL。 只要通知用户这个网站不能通过HTTP访问,他们必须通过SSL访问它。
这是针对MITM和phising攻击的最佳做法。 这样,你的用户将被教育,应用程序永远不能通过HTTP访问,当他们遇到一个电话或MITM攻击,他们会知道一些错误。
保护您的应用程序免受MITM攻击和networking攻击的最好方法之一是教育您的用户。
包含会话ID cookie的HTTP请求会受到会话劫持攻击。 重要的是,如果您允许HTTP并redirect到HTTPS,则该Cookie将被标记为安全。
我看不出为什么HTTP需要被完全阻止的任何技术原因,并且许多站点都将HTTP转发到HTTPS。 当这样做时,强制实施HTTP严格传输安全(HSTS)是一种networking安全机制,它声明浏览器只使用HTTPS连接。
HSTS通过指定响应报头(如Strict-Transport-Security: max-age=31536000
。 遵守用户代理会自动将不安全的链接变成安全的链接,从而降低中间人攻击的风险。 此外,如果存在证书不安全的风险,例如根权限不被识别,则显示错误消息并且不显示响应。
从HTTP到HTTPS实际上是一个不太好的主意。 例如,攻击者可以使用像ssl strip这样的工具进行中间人攻击。 要解决这个问题,你应该使用HSTS协议 。 它受到所有主stream浏览器的支持(Internet Explorer是最新的采用者,从IE12开始支持它),并被许多顶级网站(例如Paypal,Google)使用。
我没有看到从HTTP到HTTPSredirect的任何技术风险(除了我的答案的最新更新之外)。 例如,Gmail和雅虎邮件正在这样做。 您可以通过使用HTTPdebugging工具(如Fiddler)来检查,您可以清楚地知道服务器返回的302redirect响应。
我相信,从可用性的angular度来看,阻塞是一个坏主意。 很多时候,用户在浏览器中input地址,而不指定HTTP或HTTPS。 例如,我通过input“mail.google.com”来访问Gmail,默认为“http://mail.google.com”,并自动redirect到“https://mail.google.com”。; 没有自动redirect,我将永远不得不input完整的地址。
我同意引用的文章,HTTPS是最好的方法来打击MITM攻击,但我不认为这是对付networking钓鱼的最佳做法。 用户教育确实是防止networking钓鱼攻击的关键因素(用户必须检查他们是否从正确的域名访问网站),但绝不能阻止HTTPredirect到HTTPS。
更新 @Pedro和@Spolto是正确的。 必须特别注意与敏感cookie(如会话或authenticationcookie)相关,这些cookies确实应该被标记为安全的,以便它们只能通过HTTPS传输。 我错过了那一个。 +1你们俩。
我只是注意到了这个问题,但我写了几个类似问题的答案:
- Webmasters.SE:如何防止没有SSL连接访问网站?
- 强制使用特定url的HTTPS
我不认为从HTTPredirect到HTTPS是有害的,但这应该做得很好。 重要的是,在开发阶段不要依赖这些自动redirect。 最多只能用于在浏览器中input地址的用户。
当用户期望的时候,检查用户的责任也仅限于他们使用HTTPS(并且证书没有发出警告)。
从HTTP切换到HTTPS的实际风险是,如果您select保留会话,则您可以可靠地信任切换之前完成的操作。 你的网站的stream程和stream程应该考虑到这一点。
例如,如果用户浏览您的购物网站并使用HTTP将各种商品添加到购物车中,并计划使用HTTPS获取付款详细信息,则还应使用户使用HTTPS确认其购物篮的内容。
另外,从HTTP切换到HTTPS时,可能需要重新validation用户,并放弃纯HTTP会话标识符(如果有)。 否则,攻击者可能会使用该cookie来移动到该网站的HTTPS部分,并潜在冒充合法用户。
从技术angular度来看,除了HTTPS采取什么外,IMO也没有副作用。
从UX / UIangular度来看,build议使用点击或延迟redirect,因为redirect本身受到MITM攻击,所以build议首先要求用户inputHTTPS URL。 但是,并不是很多HTTPS网站都这样做,因为它们提供的视觉效果让人们在浏览器的HTTPS页面上查找locking图标。