php - 加密数据库

标签 php mysql security encryption

我有一个用 PHP 编写的网站,支持 MySql 数据库。

我想加密整个数据库。
基本上我想要的是如果任何人获得数据库登录凭证,一定不能读取数据。

我已经阅读了有关 mysql ENCODE()AES_ENCRYPT() 函数的信息。但是这种方式会导致 php 脚本发生很多变化,也会出现一些性能问题。

是否有任何技术可以加密整个数据库文件或任何其他方式来实现这一点?

最佳答案

如果您正在寻求标准合规性,只需确保您的数据库使用的文件系统受到全盘加密的保护。

对于 PostgreSQL,这通常可以通过关闭 PostgreSQL,将 /var/lib/postgresql 复制到加密驱动器,然后重命名旧目录并将新驱动器安装到 /var 来实现/lib/postgresql 在再次启动数据库服务器之前备份。 (一旦确定迁移成功,请务必粉碎旧目录的内容。)

对于 MySQL/etc.,你的里程会有所不同,但它应该也是可能的。

避免使用 AES_ENCRYPT() 和等价物。 ENCODE() 也无济于事,因为 encoding is not encryption .

如果您需要加密个人记录,您可能会对我们的 searchable encryption in PHP and SQL 策略感兴趣,但这可能有点超出了这个问题的范围。我们有一个名为 CipherSweet 的图书馆在 PHP + SQL 中实现可搜索加密。

关于php - 加密数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15609907/

相关文章:

php - PHP如何管理并发请求

php - (.on(input, function)) 中的替代方式

php - Laravel Log channel 未定义方法

php - 如何修复 302 重定向并使其成为 301?

PHP $_POST 和 id,没有名字

mysql - 为什么这个 IF NOT EXISTS 语句不起作用?

mysql - 同一查询但条件不同的 2 个计数

php - 合并两个查询并根据 Laravel 中的 created_at 对它们进行排序

Azure 全局网络防火墙

api - 解析用户对象 ACL