在PHP中加密变量的最佳方法 我不想让人们看到,并且仍然能够解密它?



我有一个curl脚本登录到一个网站,我写在PHP完成一个任务。

问题是我必须将我的密码以明文形式存储在PHP文件中,以便curl可以使用它来正确登录。

我是否有办法加密密码,所以如果其他人访问FTP或其他任何东西,如果他们要查看文件的位置,他们将无法读取密码,然而,curl将能够读取它并仍然正确使用它?

谢谢!M

如果你加密你的密码,你的curl脚本将不得不解密它使用它作为你的PHP任务的密码。

要加密您的密码,您必须使用加密密钥,也称为密码。您将需要存储解密密钥,以便curl脚本可以解密用于PHP的密码,但是现在您已经存储了用于解密密码的密码。

这是所有DRM(例如DVD加密)都会遇到的问题——你必须让密钥可用来解密你试图保护的内容,因此你会危及安全性。

确保安全的最佳方法是有一个驱动程序"程序"(可以是脚本或其他),它以交互方式询问密码并挂起它,直到运行真正的作业(在本例中是您的curl脚本),此时驱动程序可以提供密码。

完全非交互的替代方案是像现在一样保留密码,但可能在比源本身更少的可用空间中,或者使用证书身份验证来协商安全且可信的连接-这当然涉及从证书颁发机构获取证书。

安全不容易。


我同意Teofilo Israel Vizcaino Rodrig在评论中提到的答案。

FTP是(或者至少应该是)受密码保护的。如果有人足够聪明,可以通过这一点进入你的FTP,你怎么能指望阻止他们获得你其他东西的密码呢?

换句话说,我认为你担心得太多了。只要密码在web-root目录下的文件中,就可以了。

可以加密服务器上的文件,以便只有系统的某些用户可以解除加密。GPG是我能想到的具体例子。这里有一些关于GPG (GnuPG)文件加密的链接:

  • GnuPG维基百科
  • PEAR包Crypt_GPG
  • Zend的文章使用PHP和GnuPG进行加密和解密

如果是根用户帐户被泄露,你总是有麻烦。

PS -如果你担心安全,你实际上是使用FTP(而不是SFTP),我建议你配置你的服务器只允许SFTP连接

最新更新