【问题标题】:Secure password encryption/decryption of strings in PHPPHP中字符串的安全密码加密/解密
【发布时间】:2011-10-17 21:47:07
【问题描述】:

我想知道是否存在一种简单但安全的方法来加密字符串(不是密码),使用 PHP 中未存储在服务器上的密码。

我检查了A reversible password encryption routine for PHP,但我不确定如果入侵者可以访问服务器和源,它是否足够安全。

我们谈论的是一个自动系统,其中计算机向服务器发送请求,服务器将信息存储在日志中。所以我想我可以在请求标头中发送加密密码,最好是加密的,但是如果不以某种方式将密码存储在服务器上,就很难解密。等等,我想我可能把事情复杂化了,但我希望你能明白……这是为了保证信息的安全,即使黑客可以完全控制服务器。

【问题讨论】:

  • 您要存储/传输什么样的字符串?您在寻找可逆的加密吗?
  • 你永远不会寻找可以解密的密码程序!
  • 是的,字符串应该是可逆的,它是一个用户访问日志,里面存储了ip,时间等,大约70个字符,alpha/num和符号。该请求只是与链接中的用户名的连接,没有额外的东西。
  • @Kumar 所有可以加密的东西都可以解密。
  • @mobinga,Fred 说得对,但解密的难易程度是需要注意的一点。

标签: php string security encryption passwords


【解决方案1】:

如果我理解正确,您的目标是由服务器加密的日志。请求以明文形式发送,但您希望记录每个用户的访问统计信息等内容,并且您认为这些数据是机密的,因此它应该由服务器加密并由服务器解密,如果必要的。

如果是这样的话,其实也不算太复杂。

  • 生成供服务器使用的加密密钥(AES 是一个不错的选择)。
  • 您将此密钥存储在一个文件中。
  • 确保应用程序和只有少数选定人员可以访问该位置。最坏的情况是它在您的公共文件中提供,任何人都可以从网络上下载它。所以把它放在一个远离你的公共资源的文件夹里:)
  • 使用基于密码的加密e.g. PBKDF2 in RFC 2898对该文件进行加密。

然后您将意识到您创建了一个鸡蛋问题 - 文件再次需要密码才能让服务器访问存储在其中的密钥。但这里有个窍门——你必须在服务器启动时手动输入密钥,这就是你需要的临时组件。文件的密码应该是带外信息(例如,放置在物理保险库中),而不是计算机本身的任何地方。

另一种选择(但可能不太安全,因为密码会以某种物理形式存在)是依赖操作系统特定的“密码库”,例如 Windows 的Isolated Storage

【讨论】:

    【解决方案2】:

    似乎可以满足您的要求的一种选择是使用公钥/私钥加密。如果您让用户使用公钥加密字符串,然后将加密数据存储在服务器上,攻击者将无法解密数据。

    当/如果您需要解密数据,只需将其复制到您拥有私钥的位置并使用它进行解密。

    【讨论】:

    • 如果明文传输数据不成问题,您可以将公钥存储在服务器本身并在那里加密数据,而不是依赖浏览器来执行此操作(少点失败)。
    • 非常正确,虽然发帖者提到的一个问题是如果攻击者控制服务器会发生什么情况,在这种情况下,使用已知公钥在客户端上加密可能是更好的选择,但这是一个权衡。
    • 在这种情况下,客户端无法对数据/请求进行加密,但您的回答也是一个很好的回答,至少要牢记在未来类似的场合。
    【解决方案3】:

    我会使用 Mcrypt 来加密/解密 php 中的数据。
    我选择的算法是双鱼。 您将需要一个密钥来加密/解密数据,并且通过请求发送它可能是一个安全问题,除非您实施了 ssl。 如果加密应该是按请求而不是实时的,那么您可以在控制台中执行脚本,这样密码就不会存储在服务器上。

    加解密的代码很简单:

    $encrypted= mcrypt_ecb(MCRYPT_TWOFISH, $key, $input, MCRYPT_ENCRYPT);
    $decrypted= mcrypt_decrypt(MCRYPT_TWOFISH , $key, $data, MCRYPT_DECRYPT);
    

    【讨论】:

      猜你喜欢
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 2017-01-17
      相关资源
      最近更新 更多