php mysql可以跨站_PHP_php中防止伪造跨站请求的小招式,伪造跨站请求介绍   伪造跨 - phpStudy...

php中防止伪造跨站请求的小招式

伪造跨站请求介绍

伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。这种攻击常见的表现形式有:

伪造链接,引诱用户点击,或是让用户在不知情的情况下访问

伪造表单,引诱用户提交。表单可以是隐藏的,用图片或链接的形式伪装。

比较常见而且也很廉价的防范手段是在所有可能涉及用户写操作的表单中加入一个随机且变换频繁的字符串,然后在处理表单的时候对这个字符串进行检查。这个随机字符串如果和当前用户身份相关联的话,那么攻击者伪造请求会比较麻烦。

yahoo对付伪造跨站请求的办法是在表单里加入一个叫.crumb的随机串;而facebook也有类似的解决办法,它的表单里常常会有post_form_id和fb_dtsg。

随机串代码实现

咱们按照这个思路,山寨一个crumb的实现,代码如下:

复制代码 代码如下:

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

复制代码 代码如下:

处理表单 demo.php

对crumb进行检查

复制代码 代码如下:

if(Crumb::verifyCrumb($uid, $_POST['crumb'])) {

//按照正常流程处理表单

} else {

//crumb校验失败,错误提示流程

}

?>相关阅读:

将阿拉伯数字转换为汉字数字,支持到百万亿

验证用户是否修改过页面的数据的实现方法

js 全兼容可高亮二级缓冲折叠菜单

Javascript在IE和FF里的兼容问题

基于json的jquery地区联动效果代码

FF下zoom的替代方案 单位em

js textarea自动增高并隐藏滚动条

一个正则的写法 php

Oracle启动但不能登录故障解决方法

Ajax初试之读取数据篇实现代码

在Vista、Win7下联网玩QQ对战平台、浩方、帝国时代2

Shell学习:关于替换命令-tr-ROT13法则

完全卸载MySQL数据库5.0的具体方法

php getsiteurl()函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用和引用提供了关于在phpstudy安装php扩展的指南。根据这些指南,你可以将php_yaf.dll文件放置在phpstudyPHP路径下,在php.ini文件手动添加extension=yaf的配置。具体来说,你可以将php_yaf.dll文件复制到D:\phpstudy_pro\Extensions\php\php7.3.4nts\ext路径下,并在php.ini文件添加extension=yaf配置项。这样就可以在phpstudy的面板启用yaf扩展了。引用则提供了一个可能导致问题的原因,即项目使用的php版本与cmd的版本不兼容。你可以通过检查项目使用的php版本是否与phpstudy的版本一致来确认这一点。如果版本不一致,可以在phpstudy切换php版本或者调整项目的php版本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [阿里云服务下安装Composer时出现 错误:添加到用户路径:C:/phpStudy/Extensions/php/php7.3.4nts 安装无法...](https://blog.csdn.net/qq_42345116/article/details/122595160)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [php7.3.4可用yaf扩展下载phpstudy小皮面板php_yaf.dll(亲测100%可用)](https://download.csdn.net/download/lingyun820/16593737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [执行php命令行出现 Failed loading D:\phpStudy\php\php7.3.4nts\ext\php_xdebug.dll](https://blog.csdn.net/weixin_42079053/article/details/105618234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值