6

好的,这可能是非常基本的,但在这个开发阶段,这些含义对我来说很重要。我感谢任何意见和讨论。

此示例中的数据未使用 SSL 加密进行保护。


page1.php/asp包含一个 POST 变量usernamepasswordpage2.php/asp.


  • 来自任何地方的任何人都可以通过监听我的 POST 数据来拦截我的 POST 数据,也许是使用 Firesheep 等第三方软件?

如果上述问题呈现 TRUE:

  • 我是否应该始终认为我的未加密 POST 数据可供任何人免费使用?
  • 我网站上的标准登录表单是否只是为了描述甚至不存在的安全层?
  • 那么我是否应该将登录功能视为我个性化用户体验的一种方式?
  • 鼓励用户不要使用他或她的正常(假设更安全)密码是否有意义,因为它在注册和登录过程中不会受到保护?

我思考这些问题,我感谢任何输入和反馈。

4

4 回答 4

10

当用户通过未加密的 HTTP 提交登录表单时,他们的数据会通过一系列路由发送到您的服务器。是的,在这些路线中的任何一条上,都可以有人嗅探数据。此外,如果用户的机器被感染,黑客可以在本地嗅探数据。

如果是登录表单,您应该使用 SSL,句号。还要确保用户的密码在您的数据库中被加密。登录过程应该是:

  1. 用户使用用户名和密码通过 HTTPS 提交登录
  2. 服务器获取密码并对其应用散列算法,通常使用 MD5,但推荐使用 SHA256 等强算法
  3. 服务器将加密值与数据库中的加密值进行比较

这样,如果您的数据库被黑客入侵,密码将非常难以弄清楚(除非他们使用了一些基本的东西,例如“密码”,但那是他们当时的错)。

鼓励用户不要使用他或她的正常(假定更安全)密码是否有意义,因为它不会受到保护?

你会把用户赶走。

于 2011-05-16T10:38:29.757 回答
2

是的。任何可以看到通过的数据包的人都可以看到用户名和密码。这使得它在开放的共享 Wi-Fi 网络等上特别容易受到攻击。

我想说您的所有假设都是正确的,这尤其是为什么在服务之间共享密码是不好的做法,尤其是在这些服务具有不同安全级别的情况下。

如果可以的话,我建议你改用 SSL 登录,部分原因是很多用户会忽略你给他们的关于使用通用密码的任何建议,部分原因是这只是一种很好的做法。在像 Firesheep 这样的东西对“普通”人来说变得如此容易使用之前,这是一种很好的做法,现在它变得更加重要。

于 2011-05-16T10:40:59.390 回答
2

来自任何地方的任何人都可以通过监听我的 POST 数据来拦截我的 POST 数据,也许是使用 Firesheep 等第三方软件?

不,交通必须在他们附近经过。

如果上述问题呈现 TRUE:

它没有,但即便如此。

我是否应该始终认为我的未加密 POST 数据可供任何人免费使用?

除非它只通过 LAN,否则可以。如果它仅通过 LAN 传输,则添加限定词“在该 LAN 上”,答案将是肯定的。

我网站上的标准登录表单是否只是为了描述甚至不存在的安全层?

那么我是否应该将登录功能视为我个性化用户体验的一种方式?

当然,您不应该在没有加密的情况下做任何严肃的事情。

鼓励用户不要使用他或她的正常(假设更安全)密码是否有意义,因为它在注册和登录过程中不会受到保护?

对于任何系统来说,这样做都是有意义的。即使通信是安全的,您的服务器将来也可能会受到威胁,或者第三方系统可能会受到威胁,然后那里的数据会用来攻击您的系统。

于 2011-05-16T10:41:11.067 回答
1
那么我是否应该将登录功能视为我个性化用户体验的一种方式?鼓励用户不要使用他或她的正常(假设更安全)密码是否有意义,因为它在注册和登录过程中不会受到保护?

这取决于使用登录表单的网站。Gmail 等大多数大型网站使用 https 进行登录验证,然后切换到 http。(有报道称此开关还引入了一些漏洞。)其他站点在隐藏的表单字段中发送盐值。您的原始密码将替换为盐和哈希。在服务器上重复相同的操作以确保您发送了正确的密码。这发生在幕后,因此用户无法真正确定是否未加密发送。期望好的网站可以做到这一点。普通网站可能不会这样做。路由器和调制解调器的许多配置页面没有使用加密或混淆。

于 2011-05-16T10:51:36.593 回答