PHP防止伪造跨站请求:表单中插入隐藏的随机串
来源:互联网 发布:人力资源网站源码 编辑:程序博客网 时间:2024/04/28 19:36
随机串代码实现
创建一个crumb的实现,代码如下:
<?php
class Crumb {
CONST SALT = "your-secret-salt";
static $ttl = 7200;
static public function challenge($data) {
return hash_hmac('md5', $data, self::SALT);
}
static public function issueCrumb($uid, $action = -1) {
$i = ceil(time() / self::$ttl);
return substr(self::challenge($i . $action . $uid), -12, 10);
}
static public function verifyCrumb($uid, $crumb, $action = -1) {
$i = ceil(time() / self::$ttl);
if(substr(self::challenge($i . $action . $uid), -12, 10) == $crumb ||
substr(self::challenge(($i - 1) . $action . $uid), -12, 10) == $crumb)
return true;
return false;
}
}
代码中的$uid表示用户唯一标识,而$ttl表示这个随机串的有效时间。
应用示例
构造表单
在表单中插入一个隐藏的随机串crumb
<form method="post" action="demo.php"><input type="hidden" name="crumb" value="<?php echo Crumb::issueCrumb($uid)?>"><input type="text" name="content"><input type="submit"></form>
处理表单 demo.php
对crumb进行检查
<?phpif(Crumb::verifyCrumb($uid, $_POST['crumb'])) { //按照正常流程处理表单} else { //crumb校验失败,错误提示流程}
- PHP防止伪造跨站请求:表单中插入隐藏的随机串
- php安全开发:添加随机字符串验证,防止伪造跨站请求
- PHP防止跨站表单提交与同站跨页伪造表单的攻击
- 【代码】利用php防止用户伪造跨站请求的小技巧
- 防止伪造跨站请求的小招式
- 跨站请求伪造CSRF的防御(PHP编程)
- 跨站请求伪造CSRF的防御(PHP编程)
- PHP安全编程:跨站请求伪造CSRF的防御
- Spring security防止跨站请求伪造(CSRF防护)
- Tornado 使用经验【防范 跨站伪造请求CSRF 或 XSRF;2、防止伪造 cookie 】
- 跨站请求伪造
- PHP代码审计CSRF 跨站请求伪造
- Pyspider中给爬虫伪造随机请求头
- PHP安全编程之跨站请求伪造CSRF的防御
- 【PHP-漏洞之一】跨网站请求伪造
- PHP伪造post请求
- XSRF 跨站请求伪造
- CRSF 跨站请求伪造
- excel报表导出报错The workbook you are trying to save has the same name as a currently open workbook
- 【转载】他是个残疾人 mynote V1.01发布
- Find 使用技巧
- 主题: 分页符的BUG,在不同浏览器下代码是不一样的
- Android中处理崩溃异常
- PHP防止伪造跨站请求:表单中插入隐藏的随机串
- 使用scons软件构建工具
- 第一、UITableView的使用大全
- 设计模式-03-抽象工厂模式
- Cocos2d-x 简单数据存储以及抗锯齿
- Cannot instantiate the type Map
- JS小知识
- 计算标准体重
- C# DateTime修改小技巧