检测思路:
在url用参数和key上生成一段hash值,如果参数别修改则生成的hash值和正确的hash值对不上,则验证失败
使用的加密类库:
PEAR2里的Crypt_HMAC2,需要下载引入
用户url列表,生成hash值
cryptForm.php
<?php
require( 'D:\PHP\PEAR\Crypt\HMAC2.php' );
#生成hash值的key
define( 'HASH_KEY' , 'Test Hash Key' );
#生成hash值类
function createHash( $paramsArray )
{
$data = '';
$ret = array();
#构造加密字符串
foreach( $paramsArray as $key => $value )
{
$data .= $key . $value;
}
$cryptor = new Crypt_HMAC2( HASH_KEY , 'md5' );
$hash = $cryptor->hash( $data );
return $hash;
}
?>
<html>
<head>
</head>
<body>
<ul>
<li>
<a href="validateHash.php?id=1&hash=<?php echo createHash( array( 'id' => 1 ) ); ?>">ChatLiu</a>
</li>
<li>
<a href="validateHash.php?id=2&hash=<?php echo createHash( array( 'id' => 2 ) ); ?>">BruceLee</a>
</li>
</ul>
</body>
</html>
生成的页面为
<html>
<head>
</head>
<body>
<ul>
<li>
<a href="validateHash.php?id=2&hash=5dbd509b6e9dd26a8d3c7d1a5e3cc4e5">ChatLiu</a>
</li>
<li>
<a href="validateHash.php?id=2&hash=84ecf3a0d5859281e074ee58d4f1d51d">BruceLee</a>
</li>
</ul>
</body>
</html>
点击url后的验证类
<?php
require( 'D:\PHP\PEAR\Crypt\HMAC2.php' );
define( 'HASH_KEY' , 'Test Hash Key' );
#验证用户是否修改url类
function validateHash( $paramsArray , $userHash )
{
$data = '';
$ret = array();
#构造加密字符串
foreach( $paramsArray as $key => $value )
{
$data .= $key . $value;
}
$cryptor = new Crypt_HMAC2( HASH_KEY , 'md5' );
$hash = $cryptor->hash( $data );
#验证url传过来的hash值是否与加密hash值相等
return $hash == $userHash ? TRUE : FALSE;
}
if( isset( $_GET['id'] ) && isset( $_GET['hash'] ) )
{
$id = $_GET['id'];
$hash = $_GET['hash'];
$result = validateHash( array( 'id' => $id ) , $hash );
if( $result )
{
echo 'good guy, you didn\'t touch my url';
} else
{
echo 'bad guy, don\'t touch my url';
}
} else
{
die( 'parameter missed' );
}
?>
若url未被修改,返回
引用
good guy, you didn't touch my url
如果用户修改了id,则传入和hash和正确的hash对不上,返回
引用
bad guy, don't touch my url
分享到:
相关推荐
### 网御入侵检测系统V3.2.72.0用户手册知识点解析 #### 一、系统介绍 **1.1 概述** 网御入侵检测系统V3.2.72.0是一款先进的网络监控解决方案,旨在帮助企业监测、分析并应对网络安全威胁。该系统集成了实时监测...
4. **安全检测**:检查URL是否安全,避免点击潜在的恶意链接。 5. **分享和导出**:将整理好的URL列表导出为文本文件或CSV,方便共享和备份。 **应用场景** 1. **SEO优化**:SEO专业人员可以使用插件批量修改URL的...
标题中的“一个检测一个URL是否在Cache中的程序”指的是一个计算机程序,它的主要功能是检查指定的统一资源定位符(URL)是否已经被浏览器或者网络缓存系统存储。这个程序可能是用编程语言编写的,比如VBScript...
这些数据集通常包含大量已标记的URL,标记信息表明URL是否为恶意。训练模型时,通常会将数据集分为训练集、验证集和测试集,以便评估模型的性能。 总的来说,这个项目展示了如何结合深度学习和对抗学习来构建一个...
在 dogetpass 函数中,有一个逻辑判断语句,该语句用于检查提交的验证码是否正确,但是该语句存在逻辑错误,导致攻击者可以修改任意用户的密码。 该漏洞的成因是由于在 dogetpass 函数中,直接使用 $this->post['...
标题中的“URL解码器(恶意网址修改辅助工具)”是指一种专门用于处理和解析URL编码的软件工具,尤其在网络安全领域中,它被用来帮助识别和分析潜在的恶意网址。这种工具通常能够将经过编码的URL转换回其原始形式,...
标题中的“一个检测一个URL是否在Cache中的程序”是指一个计算机程序,它的主要功能是检查指定的统一资源定位符(URL)是否已经被浏览器或者本地缓存系统存储。这个程序可能是用Visual Basic(VB)编写的,因为提供...
这个工具类可以方便地集成到你的项目中,通过修改URL地址即可实现远程版本信息的获取。 首先,我们来详细了解一下CheckVersion工具类的工作原理。通常,该类会通过网络请求到一个服务器接口,该接口返回一个包含...
- **成功修改后的测试**:在成功修改信息后返回主页,检查数据库中的用户信息是否已正确更新。 - **未登录情况下的测试**:尝试直接访问个人信息修改页面的URL(例如:http://.//pages/customer/userEdit.jsp),应...
通常,这样的功能会通过网络过滤(如Netfilter或iptables)或者网络驱动程序来实现,通过对网络数据包进行深度检测和修改,将用户的请求重定向到不同的服务器。这个内核模块的实现涉及到了内核级的网络包处理、内存...
整合ASP与Ucenter,通常需要编写或使用现成的接口脚本,例如`ucenter.asp`,将ASP应用的用户注册、登录、修改、删除等操作与Ucenter的数据同步。 2. **注册功能** 用户注册通常涉及收集用户信息,如用户名、密码、...
5. **配置管理**:允许用户自定义检测设置,如检测频率、目标URL、检查的网络条件等。 6. **异常处理**:良好的源码会包含异常处理机制,确保在遇到网络问题或其他异常情况时,程序能稳定运行并记录错误信息。 7. ...
标题“url scan”指的是URL扫描技术,这在网络安全和网站漏洞检测中扮演着重要角色。URL扫描是通过自动化工具来探测、分析和测试网站URL的行为,以找出潜在的安全漏洞、非法活动或者信息泄露等问题。这一过程有助于...
对于防护系统的改进,可以包括将用户访问的URL和参数以及用户的行为特征一起纳入检测范围。这样,即使攻击者试图通过改变SQL注入载荷来避免触发规则,其异常的行为模式也将被识别出来。 总的来说,基于用户行为分析...
示例中提到了一个名为`url::replace`的函数,它用于修改URL中的参数。虽然在PHP标准库中没有内置这样的函数,但可以通过自定义函数实现类似功能,例如替换URL中的某些参数: ```php function replaceUrlParams($...
在获取报告后,可以将死链信息导入到FTP客户端,批量删除或修改有问题的URL。此外,对于大型网站,还可以结合使用XML Sitemap来帮助检测,确保每个页面都被正确地检查。 总之,死链和无效链接的检测是网站维护的...
4. **黑白网络.url**:这是一个快捷方式文件,指向一个网站,可能是工具开发者或相关的技术支持论坛,用户可以在遇到问题时寻求帮助或获取更新信息。 使用这款工具时,用户应先阅读说明文件,了解如何导入待修改的...
1. **电池状态监测**:实时显示电池的当前容量,这有助于用户了解电池是否在正常工作,或者是否需要更换。此外,它还可以显示电池的充电状态,如正在充电、放电还是已充满。 2. **电池健康度评估**:通过监测电池的...
在C#编程中,检测当前用户的网络连接状态是一项常见的任务,尤其对于依赖网络服务的应用程序而言,这至关重要。本文将详细讲解如何使用C#来实现这一功能,以及相关的知识点。 首先,C#提供了多种方法来检查网络连接...
标题中的“多功能修改电脑机器码序列号”是指一种技术,允许用户改变计算机的硬件标识,如机器码(也称为系统UUID或硬件指纹)和序列号。这些标识通常由制造商设置,用于唯一识别每台计算机。在某些情况下,比如测试...