伪造跨站请求介绍
伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发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校验失败,错误提示流程
}

在使用番茄小说软件时,登录自己的账号这样您可以享受到更多个性化的服务和便利。登录账号后,您还能查看到自己的UID(用户唯一标识符),这是一个非常重要的信息,有时候这个uid是非常重要的,那么在番茄小说中自己的UID究竟在哪里查看呢?想要了解的用户们就快来跟着本文一起详细了解查看步骤吧!番茄小说uid在什么地方查看答案:【番茄小说】-【我的】-【反馈与帮助】-【意见反馈】-【点击5下】。具体步骤:1、首先打开番茄小说软件,进入到首页中后我们需要点击右下角的【我的】;2、然后在我的页面中我们滑动到页

DJI has not confirmed any plans to introduce a new action camera yet. Instead, it seems that GoPro will get ahead of its rival this year, having teased that it will introduce two new action cameras on September 4. For context, these are expected to a

哈喽大家好,我是咸鱼。接触过Linux的小伙伴们都知道在Linux(或者说类Unix)中,有三种类型的用户:超级用户(UID为0):即root用户,拥有最高权限。系统用户(UID为1~999):系统内建用户,用于运行系统服务和守护进程。普通用户(UID为1000~60000):为了让使用者能够使用Linux系统资源而建立的,用户新建的账号一般就是普通账号。那么现在问题来了,如何快速找出Linux中的真实用户(root用户和普通用户)?正式开始之前,我们先介绍一个工具——getent。getent

用户UID和GID是Linux系统中用来标识用户和组的数字标识符。在使用Linux系统时,我们经常需要查看用户的UID和GID,以便管理用户和文件的权限。本文将深入介绍Linux系统中查看用户UID和GID的多种方式,并附上具体的代码示例。一、通过命令查看用户UID和GID查看当前用户的UID和GID:id运行以上命令后,系统会显示当前用户的UID、GID以

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

UID不是账号,而是用户身份证明即User Identification的缩写,是网络平台注册时系统自动生成的数值;UID用户在注册网络平台后,系统会自动地给你一个UID的数值,意思就是给这名用户编个号。

Linux操作系统是一种广泛使用的开源操作系统,它为用户提供了丰富的命令行工具,让用户可以更轻松地管理系统。在Linux系统中,每个用户都有一个唯一的用户标识符(UserID,UID)和一个组标识符(GroupID,GID)。了解用户的UID和GID对于系统管理和文件权限管理非常重要,本文将介绍几种查看用户UID和GID的技巧,以便更好地管理Linux系

Insta360hasreleasedanewactioncamera,itssecondoftheyearaftertheInsta360X4(curr.$499.99onAmazon).Asexpected,thecompanyhasintroducedtheGo3S,anupgradedthatGo3thatadds4Kvideorecordingcapabilities.Specifically,whileInst


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!