防篡改php文件校验程序
<?php
/**
* 校验线上源文件是否和本地的一致
* User: Administrator
* Date: 2015/11/26
* Time: 9:30
*/
include_once 'functions.php'; class SrcVerifier
{
var $md5_files = array();
var $total = 0; public function scan($dir, $prefix_len, $excepts=array())
{
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != ".." && $file != "." && $file != ".svn" && $file!=".buildpath" && $file!=".htaccess" && $file!=".idea" && $file!=".project" && $file!=".settings") {
$real_location = $dir . "/" . $file;
$relative_location = substr($real_location, $prefix_len);
if ( is_dir($real_location) ) {
echo "[dir] - $relative_location [end]\n";
//$files[$file] = scandir($file_location);
if(!in_array($relative_location, $excepts)) {
$this->scan($real_location, $prefix_len, $excepts);
}
}else {
$this->md5_files[$relative_location] = md5_file($real_location);
echo "[file] - $relative_location , ".$this->md5_files[$relative_location]." \n";
$this->total++;
}
}
}
closedir($handle);
}
} public function list_file($dir, $except_dirs = array())
{
$list = scandir($dir); // 得到该文件下的所有文件和文件夹
foreach ($list as $file) {//遍历
$file_location = $dir . "/" . $file;//生成路径
if (is_dir($file_location) && $file != "." && $file != ".." && $file != ".svn") { //判断是不是文件夹
echo "[dir] - $file_location \n";
$this->list_file($file_location); //继续遍历
} elseif (is_file($file_location)) {
echo "[file] - $file_location \n";
$this->total++;
} }
} public function total_files(){
return $this->total;
}
} $root_path = 'd:/projects/php/test';
$start_time = microtime_float(); //step_1,扫描校验本地源文件,生成文件路径与其md5值之间的映射文件
$verifier = new SrcVerifier();
$verifier->scan($root_path, strlen($root_path), array('/data/files','/temp')); file_put_contents('md5_files.php', '<?php return '.var_export($verifier->md5_files,true));//校验结果写入本地文件 //统计数据
$scan_local_time = microtime_float() - $start_time;
echo "scan files: ".$verifier->total_files()."\n";
echo "total cost: {$scan_local_time} secs.\n"; //step_2,遍历刚取下的源文件,并和本地的线上源文件进行md5校验,如果存在不一致的,则写入日志 //step_3,输出校验结果
防篡改php文件校验程序的更多相关文章
- WebApi系列~安全校验中的防篡改和防复用
回到目录 web api越来越火,因为它的跨平台,因为它的简单,因为它支持xml,json等流行的数据协议,我们在开发基于面向服务的API时,有个问题一直在困扰着我们,那就是数据的安全,请求的安全,一 ...
- 使用数字签名实现数据库记录防篡改(Java实现)
本文大纲 一.提出问题 二.数字签名 三.实现步骤 四.参考代码 五.后记 六.参考资料 一.提出问题 最近在做一个项目,需要对一个现成的产品的数据库进行操作,增加额外的功能.为此,需要对该产品对数据 ...
- 网站如何防Session冒名顶替和cookie防篡改
做网站难免要面对安全性的问题,诸如sql注入拉,cookie冒名拉,等等,sql注入算是老生常谈,翻翻旧账有不少优秀的帖子在说明这个问题,所以我们来说说Session冒名顶替的风险以及应对的办法. 首 ...
- WebAPI 用户认证防篡改实现HMAC(二)签名验证 AbsBaseAuthenticationAttribute--转
public class ActionFilter : ActionFilterAttribute { public override void OnActionExecu ...
- UWP项目的包无法通过本地校验程序
在UWP工程中,我们打出的包Appx需要通过本地的校验程序校验通过后才可以进行商店的提交.在校验程序汇报的不通过原因当中,除了显而易见的因为美术资源不规范.代码调用不合法API等原因之外,还有一些奇怪 ...
- Cookie防篡改机制
一.为什么Cookie需要防篡改 为什么要做Cookie防篡改,一个重要原因是 Cookie中存储有判断当前登陆用户会话信息(Session)的会话票据-SessionID和一些用户信息. 当发起一个 ...
- HashTab---Windows资源管理器的文件属性窗口中添加了一个叫做”文件校验”的标签
HashTab 是一个优秀的 Windows 外壳扩展程序,它在 Windows 资源管理器的文件属性窗口中添加了一个叫做”文件校验”的标签.该标签可以帮助你方便地计算文件的 MD5.SHA1 与 C ...
- javascript高级技巧篇(作用域安全、防篡改、惰性载入、节流、自定义事件,拖放)
安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式字符串.每个类在内部都有一个[[Class]]属性 ...
- linux下文件校验的使用
为解决官方发布的软件包被别人更改或者软件在传输过程中出现传输错误等问题,软件官方在提供软件包的同时,还提供一个保存MD5校验码的文件. Linux/unix中可以使用如下命令获得校验码和官方的校验码对 ...
随机推荐
- Linux 命令ln
在linux中可用ln命令创建一个文件的链接(软链接或者硬链接) 硬链接的使用: root@IdeaPad:~# ln 2.txt e.txt root@IdeaPad:~# ls 1.txt 2.t ...
- meta name="viewport" 属性详解
随着高端手机(Andriod,Iphone,Ipod,WinPhone等)的盛行,移动互联应用开发也越来越受到人们的重视,用html5开发移动应用是最好的选择.然而,每一款手机有不同的分辨率,不同屏幕 ...
- Python实现ORM
ORM即把数据库中的一个数据表给映射到代码里的一个类上,表的字段对应着类的属性.将增删改查等基本操作封装为类对应的方法,从而写出更干净和更富有层次性的代码. 以查询数据为例,原始的写法要Python代 ...
- 安卓应用运营知识:VersionCode和VersionName
本文转载于:http://blog.sina.com.cn/s/blog_580a227a0101bdzb.html 小米应用商店运营了大概半年了,过程中有喜有泪,我们在运营过程中,发现有的运营和商务 ...
- Linux-同步异步非阻塞阻塞的解析
一.理解同步.异步.阻塞.非阻塞 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶). 1 老张把水壶放到火上,立等水开.(同步阻塞) 老张觉得自己有点傻. 2 老张把水壶放到火上 ...
- Python使用MySQL数据库的方法以及一个实例
使用环境:Windows+python3.4+MySQL5.5+Navicat 一.创建连接 1.准备工作,想要使用Python操作MySQL,首先需要安装MySQL-Python的包,在Python ...
- add to svn ignore disabled
The problem is that the folder is already under version control. Here's how I fix this type of probl ...
- FrameBuffer
http://blog.csdn.net/luxiaoxun/article/details/7622988 http://blog.csdn.net/godspirits/article/detai ...
- linux概念之/etc
[Thu Apr 02 15:04:32 1028 /dev/pts/0 192.168.2.250 /etc]#ll |grep -v "^d"|wc -l99[Thu Apr ...
- oracle-asm,acfs
两个类比asm与lvm比较asm实例与oracle实例比较 ASM是OMF的一个扩展,通过ASM和OMF的结合,oracle在上层将数据文件进行自我管理,在底层将存储进行自我管理.同时,ASM模式下, ...