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,输出校验结果

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中可以使用如下命令获得校验码和官方的校验码对 ...

随机推荐

JavaScript中的this陷阱的最全收集

JavaScript来自一门健全的语言,所以你可能觉得JavaScript中的this和其他面向对象的语言如java的this一样,是指存储在实例属性中的值.事实并非如此,在JavaScript中,最 ...

Poj2186Popular Cows

Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 31533   Accepted: 12817 De ...

java基础之 GC

Java程序员在编码过程中通常不需要考虑内存问题,JVM经过高度优化的GC机制大部分情况下都能够很好地处理堆(Heap)的清理问题.以至于许多Java程序员认为,我只需要关心何时创建对象,而回收对象, ...

oracle日期函数转换真麻烦。。。

--Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual  --2011 ...

atitit&period;自适应设计悬浮图片的大小and 位置

atitit.自适应设计悬浮图片的大小and 位置 #--------最好使用relate定位.. 中间,图片的大小和位置走能相对table, 没有遮罩左的或者哈面儿文本的问题,要悬浮,使用top:- ...

关于SOAP

http://www.tutorialspoint.com/soap/index.htm http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ SOAP协议规范介 ...

多校5 1001 HDU5781 ATM Mechine 记忆化搜索&plus;概率

// 多校5 1001 HDU5781 ATM Mechine // http://acm.hdu.edu.cn/search.php?field=problem&key=2016+Multi ...

BIOS

转自BIOS BIOS(Basic Input/Output System的缩写.中文:基本输入输出系统),在IBM PC兼容机上,是一种业界标准的固件接口.BIOS这个字眼是在1975第一次由CP/ ...

selenium&plus;Headless Chrome实现不弹出浏览器自动化登录

目前由于phantomjs已经不维护了,而新版的Chrome(59+)推出了Headless模式,对爬虫来说尤其是定时任务的爬虫截屏之类的是一大好事. 不过按照网络上的一些方法来写的话,会报下面的错误 ...

常用的Lambda表达式

Java 8 引入Lambda表达式,对于Java开发人员来说是一大福利,简化了代码,提高了开发效率. 本文主要讲解日常开发中使用频率比较高的几类Lambda表达式. 集合 Lambda表达式的引入 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值