PHP安全登录-客户端选项?
好吧,现在我很困惑。我一直从SO用户那里得到关于库的建议,以便与codeigniter一起用于身份验证。我已经研究了dx_auth和simpleloginsecure(我认为我将使用后者,因为它假定是安全的哈希和较小的占用空间) 但是,在客户端对密码进行哈希处理怎么样?我在图书馆的文档中没有看到任何提到这一点。不管这些库有多安全,难道不需要一些客户端加密(js)以便密码永远不会以纯文本形式发布吗?或者是我遗漏了什么,而这些图书馆不知怎的涵盖了这一点 谢谢 更新:下面的几个答案建议使用SSL。然而,我的印象是这些php(codeigniter插件)库代替了SSL(我在这里完全错了吗)?如果我错了,有没有一种安全的方法可以在没有SSL的情况下实现这一点?(在过去,我在发布密码之前使用javascript md5哈希函数对密码进行加密……但我希望有更安全的东西)PHP安全登录-客户端选项?,php,javascript,security,authentication,codeigniter,Php,Javascript,Security,Authentication,Codeigniter,好吧,现在我很困惑。我一直从SO用户那里得到关于库的建议,以便与codeigniter一起用于身份验证。我已经研究了dx_auth和simpleloginsecure(我认为我将使用后者,因为它假定是安全的哈希和较小的占用空间) 但是,在客户端对密码进行哈希处理怎么样?我在图书馆的文档中没有看到任何提到这一点。不管这些库有多安全,难道不需要一些客户端加密(js)以便密码永远不会以纯文本形式发布吗?或者是我遗漏了什么,而这些图书馆不知怎的涵盖了这一点 谢谢 更新:下面的几个答案建议使用SSL。然而
更新2好的-看来大家一致认为我应该使用SSL。如果是这样的话,那么所有那些执行各种散列的高级php身份验证库有什么意义呢。如果SSL负责从客户端到服务器的加密,那么使用这些库(dx_auth等,除了添加角色功能之外)有什么意义?是否只是为了确保数据在服务器/数据库上的安全存储?(我会将我正在处理的项目数据的敏感度与stackoverflow的敏感度进行比较。没有信用卡或任何过于敏感的东西,只有用户名、密码等。)要加密客户端数据,您需要ssl 基本上,ssl在每个会话开始时向浏览器发送加密密钥,然后使用post变量等进行加密,并在另一端由服务器再次解密 JS加密实际上会降低系统的安全性,因为它会暴露您的哈希算法 更新:
对密码进行哈希运算并不能防止它在客户端和服务器之间被窥探,而是意味着如果有人入侵了您的网站,或者以任何方式访问了您的数据库,则无法以纯文本形式查看所有密码。这一点尤其重要,因为许多人对多个站点使用相同的密码。要加密客户端数据,您需要使用ssl 基本上,ssl在每个会话开始时向浏览器发送加密密钥,然后使用post变量等进行加密,并在另一端由服务器再次解密 JS加密实际上会降低系统的安全性,因为它会暴露您的哈希算法 更新:
对密码进行哈希运算并不能防止它在客户端和服务器之间被窥探,而是意味着如果有人入侵了您的网站,或者以任何方式访问了您的数据库,则无法以纯文本形式查看所有密码。这一点尤其重要,因为许多人在多个站点上使用相同的密码。在不知道CodeIgniter的任何一点的情况下,我认为您的选择是:
对敏感信息进行哈希处理的目的是,如果存储该信息的数据库受到破坏,则不会造成重大损害,因为攻击者不会立即获得有用的信息。在不知道CodeIgniter的任何一点的情况下,我想您的选择是:
对敏感信息进行哈希处理的目的是,如果存储该信息的数据库受到破坏,则不会造成重大损害,因为攻击者不会立即获得有用的信息。在客户端进行加密没有任何好处。如果您没有使用SSL,那么无论发生什么情况,都可以拦截数据。因此,即使您使用md5对密码进行散列,md5散列仍然以纯文本形式发送,然后被拦截,然后第三方可以将其发回登录页面。当然,他们可能不知道原始密码,但仍然可以获得访问权限。如果您担心安全性,可以制作一个自签名证书,或者向RapidSSL经销商支付10美元以获得可信证书。在客户端加密没有任何好处。如果您没有使用SSL,那么无论发生什么情况,都可以拦截数据。因此,即使您使用md5对密码进行散列,md5散列仍然以纯文本形式发送,然后被拦截,然后第三方可以将其发回登录页面。当然,他们可能不知道原始密码,但仍然可以获得访问权限。如果您担心安全问题,可以制作一份自签名证书,或者向RapidSL经销商支付10美元以获得受信任的证书。让浏览器和服务器为您处理所有密码加密。为此,请确保您使用的是安全连接(然后协议将是
https
,例如.Y