Sne*_*sta 6 php security encryption codeigniter
所以我使用mcrypt加密数据,将其存储在数据库中并对其进行解密.我想知道在public_html目录之外的php文件中存储加密密钥是否安全?
将其存储在文件中的原因是它需要用于多个加密,以便多个用户可以解密某些数据,并且我认为将其存储在文件中比在数据库表中更安全,就在加密旁边数据.
什么是潜在的安全风险?是否有可能让黑客获得对此文件的访问权限,从而获得密钥?
将它存储在public_html之上是个好主意.您的文件应配置正确的权限,以便只有Web服务器或需要它的用户才能读取它.
一个选项是将密钥拆分并存储在不同的位置,例如它的一部分在文件系统的文件中,并且部分在数据库中.这样做的好处是获取攻击者的完整密钥更加困难,因为他们需要访问文件系统和数据库.
还要考虑您的服务器环境对安全性有影响,例如,共享主机不如专用服务器安全.
没有人可以说攻击者无法访问密钥,因为这取决于整个服务器的设置和配置.服务器通常通过Web服务器等软件中的漏洞进行攻击,因此您应遵循良好的安全措施,例如使软件保持最新.
如果您的服务器(在其操作系统中)受到威胁,则无论您的密钥是存储在文件还是数据库中,都会"游戏结束".所以,是的,"黑客有可能获得对这个文件的访问权限,从而获得访问权限" - 通过打入服务器的操作系统.
如果apache或PHP被破坏,而不是操作系统,你最终会遇到鸡蛋和鸡蛋的问题:如果你把密钥放在哪里,apache/PHP可以访问它,那么任何人都可以使用apache/PHP .如果没有,则无法在您的webapp中使用它.
这只留下了一个场景,你的webapp被破坏了,而不是周围的基础架构 - 在这种情况下,一个文件可能确实是一个好主意:许多入侵(例如大多数SQL注入变量)获得对DB的访问权限,但不是文件系统.
对于敏感环境,我们有时选择一种模型,其中加密/解密通过一对FIFO处理,真正的加密由外部进程完成 - 这可以做一些启发式方法并拒绝对可疑模式进行解密.