security - 仅用于登录页面的 HTTPS - 是否推荐?

标签 security http authentication https session-cookies

我有一个网站需要用户登录。由于无法通过 https 访问所有内容,因此我们决定仅将 https 用于登录页面。

页面上提交的所有其他数据都不是敏感数据,不需要加密。

这种方法会破坏用户的登录凭据吗?将所有其他页面放在 http 上 - 攻击者能否从用户 session cookie 中获取凭据?

我看到很多网站都采用这种方法,所以我认为它可能是安全的 - 但我想了解其背后的技术细节。

最佳答案

在登录页面上使用https是不安全的:

  • 这意味着您不使用 HSTS,这是针对 SSLSrip 的唯一保护措施
  • 这意味着攻击者可以在您的 http 页面上用其他东西替换您到登录页面的链接(比如向他的服务器提交凭据的 popin)
  • 一旦用户连接上,cookie必须具有安全属性(没有安全属性很容易窃取 cookie。参见 firesheep)

唯一安全的方法是在您域的所有页面中使用 https,使用 HSTS 并将所有 http 请求重定向到 https。

Can this approach compromise user's login credentials? Having all other pages on http - can an attacker get access to the credentials from the user session cookies?

攻击者可以窃取 session cookie,因此他可能会造成很多伤害(取决于您的安全措施、更改密码、电子邮件、提取个人数据...)并且他可以模拟断开连接并再次请求http 网页上的密码。

I could see many sites having this approach so I think it might be safe

不,不是。他们的网站可能太大而无法在所有地方启用 https,因此他们尽其所能来限制损失。 (或者他们只是懒惰)

关于security - 仅用于登录页面的 HTTPS - 是否推荐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38762355/

相关文章:

使用移动应用程序进行 API 身份验证(通过 SMS)

PHP 防止注销后返回页面

sql-server - 无法远程或通过 IP 访问 SQL Server,但可以使用 localhost 或计算机名在本地访问它

android - 如何从 Android 中的 Instagram 注销?

ios - 如何从 iPhone 应用程序中删除客户端证书?

java - 人们去哪里获取安全警报通知?

javascript - 向angular js发送http请求

http - 将 interface{} 参数转换为 Go 中的 *http.Request 或 *http.Response

http - 杀死已经在使用的绑定(bind) tcp 连接

asp.net - 如何使用 LoginControl 存储 UserID 和 Name?