如何保证mySQL数据库安全?

时间:2008-09-11 01:31:57

标签: php mysql security aes

我将实施PHP/mySQL设置来存储信用卡信息。

似乎AES_ENCRYPT/AES_DECRYPT是要走的路,

但我仍然对某一点感到困惑:

如何确保加密密钥安全?

将它硬连接到我的PHP脚本(它将与数据库存在于同一服务器上)似乎是一个主要的安全漏洞。

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

5 个答案:

答案 0 :(得分:15)

你是否应该长时间地考虑是否真的需要保留CC#。如果你没有充分的理由,请不要!每隔一周你就会听到一些公司遭到入侵,CC#被盗。所有这些公司都造成了致命的缺陷 - 他们保留了太多信息。保持CC#直到事务清除。之后,删除它。

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

答案 1 :(得分:3)

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

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

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

注意:使用MySQL“--secure-auth”选项可以防止使用较旧的,安全性较低的MySQL密码格式。

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

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

步骤5:禁用远程访问

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

安全工具

答案 2 :(得分:0)

我同意,但如果你不需要cc,请不要。但是如果你真的也有,请确保在网络上无法访问拥有它的文件。您可以编写一个返回密钥的二进制文件。这样它就不会以明文形式存储。但如果您的服务器受到损害,它仍然很容易获得。

答案 3 :(得分:0)

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

由于您没有存储此值,因此您可以获取此值的唯一时间是用户输入其密码进行登录。只需确保您具有良好的会话过期和垃圾收集策略。

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

答案 4 :(得分:0)

将您的数据库文件放置在计算机外部,例如说外部硬盘,并将其保存在安全的地方。仅当您可以在仅放置此外部驱动器的位置上开发此项目时才有效:) 或者,您至少可以使用文件系统加密工具(例如, https://itsfoss.com/password-protect-folder-linux/

在生产环境中,我同意Kyle Cronin。