Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何安全地存储用于登录第三方网站的密码_Php_Mysql_Security_Encryption - Fatal编程技术网

Php 如何安全地存储用于登录第三方网站的密码

Php 如何安全地存储用于登录第三方网站的密码,php,mysql,security,encryption,Php,Mysql,Security,Encryption,首先,我不是在寻找一种方法来存储我自己网站的密码,以允许用户登录(我可以很容易地使用密码的salt散列) 我正在建立一个个人网页,我希望能够检查我的贝宝在主页上的余额。要做到这一点,我需要将我的PayPal凭证存储在MySQL数据库中,这样我可以稍后从PHP中检索它,登录PayPal并获得余额。我知道我可以把我的证书留在PHP脚本上,但我想允许更多的用户使用这个网站(每个用户都使用自己在我的网站上注册的帐户登录) 所以,我需要的是一种安全的方式来存储我的服务器上的贝宝密码,而不是被保存在纯文本。

首先,我不是在寻找一种方法来存储我自己网站的密码,以允许用户登录(我可以很容易地使用密码的salt散列)

我正在建立一个个人网页,我希望能够检查我的贝宝在主页上的余额。要做到这一点,我需要将我的PayPal凭证存储在MySQL数据库中,这样我可以稍后从PHP中检索它,登录PayPal并获得余额。我知道我可以把我的证书留在PHP脚本上,但我想允许更多的用户使用这个网站(每个用户都使用自己在我的网站上注册的帐户登录)

所以,我需要的是一种安全的方式来存储我的服务器上的贝宝密码,而不是被保存在纯文本。我对加密知之甚少,所以我想问一下,哪种方法是最好的

我不确定这个问题应该出现在程序员网站上还是就在这里;对不起,如果我做错了


谢谢。

你不应该这样做。但既然你可能会这样做,我建议用用户登录你网站时使用的密码加密用户的PayPal密码

正确的基于密码的加密使用可识别的密钥派生函数,如PBKDF2。除了密码之外,密钥派生还需要一些salt(由加密随机数生成器生成)和若干轮(PBKDF2至少需要6万轮)


您应该使用相同的算法(使用不同的salt)进行身份验证;从他们的密码派生加密密钥后,使用它加密常量、已知的纯文本,如主机名。如果它与注册期间设置的值匹配,则会对其进行身份验证。

您需要非常小心。您需要定期对您的站点和DB进行彻底的渗透测试,以确保没有安全漏洞。请专业人士帮你做这件事

如果是我,并且我承诺要这样做,我会通过使用密钥使用对称加密算法(使用AES)对密码进行加密,从而将密码存储在我的服务器上。把秘密钥匙放在一个非常安全的地方。以纯文本形式存储密码(正如您所指出的)是一种严重的罪恶,而以双向加密方式存储密码只会稍微好一点。最好的做法是使用一个单向的盐散列

正确的答案是“不要这样做”

回答你的第二个问题:

谷歌钱包或贝宝如何存储您的信用卡安全 数目及详情


你们可以从非常有趣的阅读开始。

仅仅因为《无答案秀》的PayPal对此事的看法:

1.3应用程序ID和API凭据。PayPal将为您提供一个唯一的机密身份代码、证书和应用程序ID,使您能够使用开发人员的工具。PayPal还可以为您提供用于测试和/或生产的API凭据。PayPal可自行决定以任何理由立即终止或撤销您的应用程序ID和/或API凭据。您不得向任何第三方(代表您提供服务的服务提供商除外)出售、转让、再许可或披露您的应用程序ID、API凭据或其他PayPal帐户凭据,并且您同意立即通知PayPal您违反本句中义务的行为。如果您出售或以其他方式转让您的应用程序,或允许API调用方操作它,PayPal同意向操作您的应用程序的API调用方颁发新的应用程序ID。API调用方对PayPal被指示向其传输的任何个人数据负责。您对使用您的应用程序ID、API凭据或其他PayPal帐户凭据执行的所有活动负责

5.2.1法律协议和相关政策。您的应用程序和开发人员工具的使用必须遵守以下法律协议和政策:

(a) 本协议

(b) 用户协议,适用于您的版本以及适用于您的PayPal启用服务用户的任何其他版本;如果您接受来自您居住所在国家(或注册成立,如果是公司)以外国家的用户,则用户所在国家的用户协议版本适用于该用户

注意,即使您不使用开发人员工具或API,存储用户的凭据也会使您有机会开发一个“应用程序”用于PayPal

链接自:

如果您认为:

发生未经授权的交易、未经授权访问您的帐户或发生其他错误

您的账户对账单(您可以通过登录您的账户访问您的账户对账单)或通过电子邮件发送给您的交易确认中存在错误

您的密码或PayPal手机PIN已被泄露

您的贝宝借记卡或贝宝手机已丢失、被盗或停用;或

您需要有关对账单或交易确认书上列出的交易的更多信息


重复别人说过的话:不要将任何人(包括你自己)的paypal密码存储在你的网站上(代码本身或数据库中)

但是,可以将paypal集成到您的网站中,并使用集成API阅读您自己的paypal余额。我已经很久没有使用贝宝API了,但我知道这是可能的。您可以使用获取帐户的paypal余额。为了做到这一点,您需要设置paypal开发人员帐户,获取API密钥,并能够从web应用程序调用SOAP API


总而言之,在您自己的个人网页上实现一项功能可能需要花费太多的工作。

我很确定要存储PayPal用户证书