看到有人写透视宝做php监控的原理图,跟你分享下。我估计大家做的方式都是差不多。
PHP运行支撑的ZendEngine早在设计过程中已经预留了丰富的Hook,可以有效干涉处理过程中的几个关键步骤。利用了以下几个Hook,就能方便的获取数据:
1. zend_compile_file &zend_compile_string
加载分析文件或字符串,本身就会造成非常大的IO,如果过多地执行加载,无疑会造成内存和CPU的消耗.通过这两个hook,可以取得文件名、执行行数、使用内存和CPU占用时间。
2. zend_execute &zend_execute_internal
通过这两个hook的使用,我们可以准确地分析得出一个PHP应用中的类调用、方法调用、方法参数、内存占用和CPU占用,加以分析,便可以准确得出应用系统运行过程中的方法运行栈,API调用地址,SQL语句,CacheKey以及Cache命中等关键信息。
3. zend_throw_exception_hook
利用异常钩子,可以准确地得到应用系统运行过程中出现的异常信息,当然包括异常发生的类\方法位置,参数,异常code和异常message。
4. zend_error_cb
错误钩子则更加直接,可以准确得到系统运行过程中出现的任何一个warning,代码错误或语法错误。
楼主,如果你的网站只是你个人管理,并且你的IP是固定的【一段时间内】,那么你可以通过限制IP来确定文件的访问权限。如果php脚本截获了一个与你预先设定的IP不符的地址,那么就应该立刻发邮件提醒你,截获该IP的PHP文件名称,或者通过写网站运行日志的方式,将可疑行为记录到文本文件中
以上方法可以用于后台php文件的安全防范;
前台呢?
不太好处理,看到楼主的问题,应该是服务器被攻破了,那么更好的办法应该是从服务器安全方面入手,比如限制文件的读写权限等
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)