0

我正在创建一个 cron 作业,它运行一个 php 脚本,该脚本将使用 curl 登录到外部网站并抓取页面以提取数据。

现在我的问题是我需要将凭据存储在数据库中,如何安全地存储它。问题是 curl 脚本需要以明文形式发布用户名和密码。

该服务类似于 Mint.com 所做的,即使用用户凭据提取帐单信息。

任何意见,将不胜感激。

谢谢

4

2 回答 2

0

数据可以加密(参见openssl_encrypt中的示例),然后在需要时在 php 脚本中解密,并将未加密的数据作为连接到 curl 调用的字符串传递。

于 2013-03-05T00:52:26.910 回答
0

如果外部系统不提供替代的(非基于密码的)身份验证方法(与支持 OAuth 的 facebook 不同),那么您就没有好的选择。您的应用程序将始终要求输入密码 - 有点尴尬且不兼容自动化。如果这还不够好,那么 DB+app 必须一起知道密码,所以任何可以访问两者的人也会知道密码。您唯一能做的就是确保仅访问其中一个是不够的:为应用程序创建一个密钥,并将其对数据库管理员隐藏(将其放在源中)。将其用作加密密码的密钥(您可能希望使用此密钥 + 一些不变的用户特定数据 [例如 userID] 来构建实际的加密密钥,以改进对密钥的保护)。因此,您可以将加密的密码存储在数据库中。虽然有很多隐私问题。一个人的密码不应该被其他任何人发现,但这里情况并非如此。如果数据库在网络服务器上,管理员将看到加密密码和密钥 - 失败。该应用程序将无限制地访问密码,因此其开发人员也将拥有该密码(例如,他们可以隐藏代码片段以发送电子邮件)。

于 2013-03-05T01:04:38.807 回答