1

我有一个PHP带有MySql数据库支持的网站。

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

我已阅读有关 mysqlENCODE()AES_ENCRYPT()函数的信息。但是这种方式会导致 php 脚本的很多变化以及一些性能问题。

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

4

2 回答 2

1

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

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

对于 MySQL/等,您的里程会有所不同,但也应该是可能的。

避免使用AES_ENCRYPT()和等价物。ENCODE()也无济于事,因为编码不是加密

如果您需要加密单个记录,您可能对我们在 PHP 和 SQL 中的可搜索加密策略感兴趣,但这可能有点超出这个问题的范围。我们有一个名为CipherSweet的库,它在 PHP + SQL 中实现了可搜索的加密。

于 2017-12-28T20:15:41.567 回答
-1

用于密码和校验和SHA512的函数。bcrypt_encode()

对于其他特定数据,使用来自 PHP 文件的自己的 SALT + 使用某种机制进行编码base64_encode($your_db_table_data) + "MY_SALT_FROM_WEB".和向后,base64_decode($your_db_table_data) + MY_SALT_FROM_WEB.

您可以使用gzdeflatewhich decrpyt 并压缩您的数据 + 使用 salt 使解密变得困难。例子:

$data = gzdeflate($your_data) + YOUR_SALT;

这将像在数据库中一样简单地产生:��O�KWH�KQpI�r\���*JZ<��AR

解码 deflate 使用如下:gzinflate(gzdeflate($your_data_from_db + YOUR_SALT_FROM_WEB));

这是参考: http: //php.net/manual/en/function.gzinflate.php

如果您想对 char 和较小的数据库进行更复杂的解码,请使用 base64_enocode / base64_decode + YOUR_SALT_HIDDEN_FROM_WEB 数据库中的数据用于 CHAR() 和较小的文本。

这是我的想法,我将如何加密数据库中的数据以供 VARCHAR() 使用。对于文本数据,使用加密方式与 SALT 组合进行压缩。

我目前不知道另一种解决方案,或者使用 AES 技术结帐加密 MySQL 数据:http: //thinkdiff.net/mysql/encrypt-mysql-data-using-aes-techniques/

这在 MySQL 中使用AES_ENCRYPTAES_DECRYPT集成,但仅限于 VARBINARY(150) 或 VARCHAR(100)。使用 encrpyted 方法压缩可以做到这一点,而不是使用集成的 MySQLAES函数。

希望这会有所帮助。

于 2013-03-25T07:59:18.500 回答