【发布时间】:2017-09-01 16:03:19
【问题描述】:
我被要求做一些关于如何加密表单提交数据并确保它安全地存储在数据库中的研究。提交的表格将包含有关员工的个人详细信息,这些信息必须保密。
我在研究过程中遇到了 AES_ENCRYPT() 并设法应用此函数,以便将数据成功存储在数据库中。
我使用的示例 SQL 语句:
"INSERT INTO employee (firstname) VALUES (AES_ENCRYPT('$name', '$encryption_key'))"
但是,我在这方面的知识非常有限,不确定这是否足以提供足够的保护来防止数据被黑客入侵。这提供了什么级别的安全性?有什么我遗漏的或者我可以用来改进我的实现的其他技术吗?
此外,我已将加密密钥存储在单独的 PHP 文件中,但我不知道推荐的存储方式是什么。对此的任何建议将不胜感激。
对不起,如果这个问题含糊不清或相当宽泛。我是这个领域的一个完整的初学者。如果需要,我很乐意提供更多信息。
【问题讨论】:
-
如果您容易受到SQL injection 的影响,加密就无关紧要了。您应该使用prepared statements 构建您的查询。
-
我简化了我的语句以减少问题中的代码量,但使用了: $stmt = $conn->prepare("INSERT INTO employee (firstname) VALUES (AES_ENCRYPT(?, '$加密密钥'))"); $stmt->bind_param("s", $name);
-
好吧,我想可能是这样。
-
虽然非常好!我确实看到了很多解释如何使用不使用准备好的语句的 AES_ENCRYPT 的示例,因此作为初学者很容易忽略它们。
标签: php mysql database security encryption