2016-06-01 192 views
0

我对加密技术并不熟悉,所以请耐心等待。我正在研究需要将敏感数据存储在数据库中的应用程序。此信息;但是,需要有适当证书的人才能访问(所以哈希不会起作用)。用PHP和MySQL存储敏感数据

数据从PHP表单收集。我的想法是使用准备好的SQL查询和MySQL的AES_ENCRYPT函数将密钥存储在数据库中。这是安全的(如果密钥是安全的 - 我的下一篇文章的重点)还是与这种方法相关的风险?

其次,你会如何建议生成和存储密钥?问题是需要访问这些敏感数据的用户不是任何形式的IT专家 - 她只是不熟悉交易工具。如果我只需要访问数据,这可能不会太困难,但我该如何确保密钥的安全性,同时允许没有数据库经验的用户轻松访问它?

非常感谢。

+0

您需要绘制出所有这些数据如何来回移动的图表。 AES是一个对称密钥解决方案。这些密钥需要供各方使用(加密,解密)。通常称为秘密密钥。我不太确定如果它需要从服务器传递到远在千里之外的客户端,它们之间有数十个服务器中继器以及它们自己的存储技术(用户,他们的存储)。即使有安全通道。 PKI解决了这个问题。 ala RSA类比。一个公钥对。没有问题交给新手。 – Drew

+0

@KellyMarchewa你需要定义安全级别,那就是你保护谁。用户将如何在本地或通过Internet访问数据?他们将如何认证?如何保护服务器,是连接到互联网的数据库服务器,是使用服务器的双因素身份验证,它存在数据访问限制,日常审查的良好日志记录等。 – zaph

+0

我对“外部',那就是黑客,而不是内部的任何人。身份验证可能只是一个密码。用户将通过托管在由Web主机(GoDaddy)提供的远程服务器上的数据库访问数据。我不完全确定服务器上的安全措施。我希望这有点多。谢谢! – KellyMarchewa

回答

0

如果您存储打开的密钥,您还可以存储明文数据,因为加密数据与密钥实际上是明文数据。好的,将数据和密钥存储在不同的系统上可以提高安全性,但这并不安全。显然你需要通过SSL从用户那里得到这个秘密。这可能是解锁加密密钥的密码。

问题是需要访问敏感数据的用户不是任何形式的IT专家。

这意味着用户不会乐于直接处理密钥对。因此,带有密码的替代方案应该是一个合理的妥协。不过,您应该执行高质量的密码来避免轻松的暴力攻击。

+0

其实安全就是要增加工作因素来应对威胁。例如:如果需要防范空闲的好奇只是加密可能就足够了。保护资金充足的政府是另一个极端。 – zaph

0

您需要了解SQL注入攻击。见Little Bobby Tables

您需要使用双因素身份验证才能登录服务器。

您需要使用HTTPS。您需要将密钥存储在http目录之上。

如果加密时没有很好的理解,最好使用MySQL的AES_ENCRYPT,那么安全加密很难正确使用。

这些是最低限度,不会防止合理的熟练的攻击者。