2008-09-11 92 views
9

我将要实施PHP/mySQL设置来存储信用卡信息。如何保持mySQL数据库安全?

好像AES_ENCRYPT/AES_DECRYPT是要走的路,

,但我仍然感到困惑的一点:

如何保持加密密钥的安全?

将它硬连线到我的PHP脚本(它将与db一样位于同一台服务器上)似乎是一个主要的安全漏洞。

什么是“最佳实践”解决方案?

回答

15

你应该长时间思考,你是否真的需要保持CC#。如果你没有很好的理由,不要!每隔一周你就会听到一些公司被盗用和CC#被盗。所有这些公司都犯了一个致命的缺陷 - 他们保留了太多的信息。保持CC#直到事务清除。之后,删除它。

就保护服务器而言,最好的方法是保护硬件并使用内部系统套接字连接到MySQL,并确保阻止任何网络访问MySQL服务器。确保你使用的是系统权限和MySQL权限,以便根据需要进行访问。对于某些脚本,您可能会考虑只写身份验证。真的没有加密方法是万无一失的(因为你总是需要解密,因此必须存储密钥)。这并不是说您不应该 - 您可以将密钥存储在一个位置,并且如果检测到系统泄露,则可以销毁该文件并使数据无用。

+0

宾果 - 如果可能的话,不要存储信用卡数据。处理和丢弃,并让PayPal等服务处理重复交易。 – ceejayoz 2008-09-11 01:58:21

0

我同意,但不要cc,如果你不需要。但是,如果你真的有,请确保它的文件不能在网上访问。你可以编写一个返回键的二进制文件。这样它就不会以明文形式存储。但是,如果你的服务器妥协,它仍然很容易得到它。

0

您需要的安全性取决于您的应用程序。例如,如果cc#将被使用的唯一时间是用户登录时(瘦在线商店类型场景),那么您可以使用用户的纯文本密码的哈希加密cc#用户盐,以及专用的cc#盐。不要永久保存这个值。

由于您没有存储此值,因此只有在用户输入密码登录时才能获取此值,只需确保您具有良好的会话过期和垃圾收集策略即可。

如果这种情况不适用于您,请详细描述您的情况,以便我们提供更合适的答案。

3

MySQL,您可以通过六个简单的步骤来保护您的敏感数据。

步骤1:在授权表中删除通配符

第2步:要求使用安全密码

注意:使用MySQL的“--secure-auth的”选项,以防止利用旧的,不太安全的MySQL密码格式。

步骤3:检查配置文件的权限

步骤4:加密的客户端 - 服务器传输

步骤5:禁用远程访问

步骤6:主动监控MySQL的访问日志

安全工具