【发布时间】:2013-03-25 07:42:54
【问题描述】:
我有一个用PHP 编写的网站,支持MySql 数据库。
我想Encrypt整个数据库。
基本上我想要的是如果有人获得数据库登录凭据,一定不能读取数据。
我已经阅读了 mysql ENCODE() 和 AES_ENCRYPT() 函数。但是这种方式会导致 php 脚本的很多变化以及一些性能问题。
是否有任何技术可以加密整个数据库文件或任何其他方式来实现这一点?
【问题讨论】:
-
您能否详细说明您的威胁模型;特别是,攻击者可能是谁,他们可能拥有什么资源,数据对他们有多大价值,他们可能从哪里发起攻击(即物理或远程)?您能否详细说明所需的响应;特别是,“不能读取数据”是什么意思?如果有足够的时间和资源,攻击者将能够破坏您设计的任何安全系统 - 安全是平衡威胁与您的响应的问题。就性能而言,没有什么是不付出代价的。
-
任何加密系统中的一个重要考虑因素是密钥管理:如果攻击者访问解密密钥是微不足道的,那么加密将毫无用处。但是,为了让您的应用程序正常工作,这些密钥必须存储在可以访问它们的地方。这是一个非常复杂的主题……而且大多数情况下,当人们问“如何加密数据库”时,答案是“别打扰”。
-
你想达到什么目的?在这里阅读一篇有趣的文章i.amniels.com/…
-
@eggyal.. 我只担心远程攻击。我只是不想让他们理解数据。
-
等等,例如,我在服务器上受到攻击,如果我可以访问数据库,我可以使用 PHP 代码通过 shell 执行到目录列表并查看 PHP 文件。现在,我可以访问 PHP 代码,所以从数据库中获取数据和返回并编码数据库系统的代码没有问题。但是您谈到远程攻击,但是如果远程攻击是通过 FTP/SSH/Telnet/... 并抓取一些 PHP 文件并查看加密是如何工作的呢? (示例攻击者复制攻击者本地服务器上的所有文件)?
标签: php mysql security encryption