PHP安全登录-客户端选项?

PHP安全登录-客户端选项?,php,javascript,security,authentication,codeigniter,Php,Javascript,Security,Authentication,Codeigniter,好吧,现在我很困惑。我一直从SO用户那里得到关于库的建议,以便与codeigniter一起用于身份验证。我已经研究了dx_auth和simpleloginsecure(我认为我将使用后者,因为它假定是安全的哈希和较小的占用空间) 但是,在客户端对密码进行哈希处理怎么样?我在图书馆的文档中没有看到任何提到这一点。不管这些库有多安全,难道不需要一些客户端加密(js)以便密码永远不会以纯文本形式发布吗?或者是我遗漏了什么,而这些图书馆不知怎的涵盖了这一点 谢谢 更新:下面的几个答案建议使用SSL。然而

好吧,现在我很困惑。我一直从SO用户那里得到关于库的建议,以便与codeigniter一起用于身份验证。我已经研究了dx_auth和simpleloginsecure(我认为我将使用后者,因为它假定是安全的哈希和较小的占用空间)

但是,在客户端对密码进行哈希处理怎么样?我在图书馆的文档中没有看到任何提到这一点。不管这些库有多安全,难道不需要一些客户端加密(js)以便密码永远不会以纯文本形式发布吗?或者是我遗漏了什么,而这些图书馆不知怎的涵盖了这一点

谢谢

更新:下面的几个答案建议使用SSL。然而,我的印象是这些php(codeigniter插件)库代替了SSL(我在这里完全错了吗)?如果我错了,有没有一种安全的方法可以在没有SSL的情况下实现这一点?(在过去,我在发布密码之前使用javascript md5哈希函数对密码进行加密……但我希望有更安全的东西)


更新2好的-看来大家一致认为我应该使用SSL。如果是这样的话,那么所有那些执行各种散列的高级php身份验证库有什么意义呢。如果SSL负责从客户端到服务器的加密,那么使用这些库(dx_auth等,除了添加角色功能之外)有什么意义?是否只是为了确保数据在服务器/数据库上的安全存储?(我会将我正在处理的项目数据的敏感度与stackoverflow的敏感度进行比较。没有信用卡或任何过于敏感的东西,只有用户名、密码等。)

要加密客户端数据,您需要ssl

基本上,ssl在每个会话开始时向浏览器发送加密密钥,然后使用post变量等进行加密,并在另一端由服务器再次解密

JS加密实际上会降低系统的安全性,因为它会暴露您的哈希算法

更新:


对密码进行哈希运算并不能防止它在客户端和服务器之间被窥探,而是意味着如果有人入侵了您的网站,或者以任何方式访问了您的数据库,则无法以纯文本形式查看所有密码。这一点尤其重要,因为许多人对多个站点使用相同的密码。

要加密客户端数据,您需要使用ssl

基本上,ssl在每个会话开始时向浏览器发送加密密钥,然后使用post变量等进行加密,并在另一端由服务器再次解密

JS加密实际上会降低系统的安全性,因为它会暴露您的哈希算法

更新:


对密码进行哈希运算并不能防止它在客户端和服务器之间被窥探,而是意味着如果有人入侵了您的网站,或者以任何方式访问了您的数据库,则无法以纯文本形式查看所有密码。这一点尤其重要,因为许多人在多个站点上使用相同的密码。

在不知道CodeIgniter的任何一点的情况下,我认为您的选择是:

  • 在提交密码之前,让JavaScript跳转并散列密码。这可能吗

  • 使用SSL连接

  • 同样,你必须考虑你在传递什么。除非这是威胁生命的敏感信息,否则问问你自己——这真的需要散列传输吗

    最后,如果有人的电脑上有键盘记录器或其他恶意软件,它将使客户端哈希毫无意义


    对敏感信息进行哈希处理的目的是,如果存储该信息的数据库受到破坏,则不会造成重大损害,因为攻击者不会立即获得有用的信息。

    在不知道CodeIgniter的任何一点的情况下,我想您的选择是:

  • 在提交密码之前,让JavaScript跳转并散列密码。这可能吗

  • 使用SSL连接

  • 同样,你必须考虑你在传递什么。除非这是威胁生命的敏感信息,否则问问你自己——这真的需要散列传输吗

    最后,如果有人的电脑上有键盘记录器或其他恶意软件,它将使客户端哈希毫无意义


    对敏感信息进行哈希处理的目的是,如果存储该信息的数据库受到破坏,则不会造成重大损害,因为攻击者不会立即获得有用的信息。

    在客户端进行加密没有任何好处。如果您没有使用SSL,那么无论发生什么情况,都可以拦截数据。因此,即使您使用md5对密码进行散列,md5散列仍然以纯文本形式发送,然后被拦截,然后第三方可以将其发回登录页面。当然,他们可能不知道原始密码,但仍然可以获得访问权限。如果您担心安全性,可以制作一个自签名证书,或者向RapidSSL经销商支付10美元以获得可信证书。

    在客户端加密没有任何好处。如果您没有使用SSL,那么无论发生什么情况,都可以拦截数据。因此,即使您使用md5对密码进行散列,md5散列仍然以纯文本形式发送,然后被拦截,然后第三方可以将其发回登录页面。当然,他们可能不知道原始密码,但仍然可以获得访问权限。如果您担心安全问题,可以制作一份自签名证书,或者向RapidSL经销商支付10美元以获得受信任的证书。

    让浏览器和服务器为您处理所有密码加密。为此,请确保您使用的是安全连接(然后协议将是
    https
    ,例如.Y