我对密码学并不十分熟悉,所以请耐心等待。我正在开发一个需要在数据库中存储敏感数据的应用程序。此信息;但是,需要具有适当凭据的人才能访问(因此散列不起作用)。
数据是从PHP表单收集的。我的想法是使用准备好的SQL查询和MySQL的AES_ENCRYPT函数将密钥存储在数据库中。这是安全的(如果密钥保持安全 - 我下一篇文章的要点)还是存在与此方法相关的风险?
其次,您如何建议生成和存储密钥?问题是需要访问此敏感数据的用户不是任何形式的IT专家 - 她只是不熟悉交易工具。如果我只需要访问数据,这可能不会太困难,但我如何确保密钥的安全性,同时允许没有数据库经验的用户轻松访问它?
非常感谢。
答案 0 :(得分:0)
如果存储打开的密钥,您还可以存储明文数据,因为加密的数据与密钥一起实际上是纯数据。好的,将数据和密钥存储在不同的系统上可以提高安全性,但这还不安全。显然,您需要通过SSL从用户自己获取秘密。这可能是解锁加密密钥的密码。
问题是需要访问此敏感数据的用户不是任何形式的IT专家。
这意味着用户不会直接处理密钥对。因此,使用密码短语的替代方案应该是合理的妥协。尽管如此,你应该强制使用高质量的密码来避免轻易的暴力攻击。
答案 1 :(得分:0)
您需要了解SQL注入攻击。请参阅Little Bobby Tables。
您需要使用双因素身份验证才能登录服务器。
您需要使用HTTPS。您需要将密钥存储在http目录上。
如果没有很好地理解加密的使用,最好使用MySQL的AES_ENCRYPT,安全加密很难做到。
这些是最低限度,无法抵御相当熟练的攻击者。