我一直在研究一个应用程序,该应用程序允许构建第三方扩展来扩展应用程序的功能。当然,所有这些都在PHP中。我想通过校验和功能在特定目录中运行文件来添加一些安全填充。如果文件未通过校验和,则文件不被“包含”,通知该安装的管理员,并且该模块被禁用,直到管理员采取行动(重新启用并记录该异常或重新安装模块) 。包含之前的PHP校验和()
我现在遇到的问题是无论何时用户运行include()
函数都可以运行该校验和。我宁愿不让他们为了包含一个文件而背靠背运行两个函数,但是如果必须的话,我会的。并非所有的第三方扩展都会非常愿意运行两个函数(类似于if(checksum_function($bleh)) include($bleh);
),即使它们是,执行include()
时运行校验和会更容易(也更安全),而不是双倍行数为include()
报表。
我已经做了一些搜索,并没有找到太多。想法?提前致谢!
crc碰撞可以使用代数来计算。 – rook 2010-07-15 07:24:07
感谢Pekka。我打算为我的校验和使用md5,但我想这会更加昂贵。我没有想过使用__autoload()。我可能会放弃这个想法,因为一旦实施其他一切,实际上可能会非常昂贵。不过,我肯定会玩一些__autoload()。谢谢! – Swivel 2010-07-15 07:32:38
@您认为恶意脚本修复该文件是否意味着它通过了检查?在大多数情况下,我认为这不会成为一种危险,因为如果攻击者a)知道安全机制并且b)可以在相关网络空间上写入文件,则无论如何都会丢失。不过,好点。 – 2010-07-15 07:33:02