我有一个用 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/