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

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

大疆尚未確認推出新運動相機的計畫。相反,GoPro 今年似乎將領先其競爭對手,並透露將於 9 月 4 日推出兩款新的運動相機。

使用番茄小說軟體時,登入自己的帳號讓您可以享受更多個人化的服務和便利性。登入帳號後,您還能查看到自己的UID(用戶唯一識別碼),這是一個非常重要的訊息,有時候這個uid是非常重要的,那麼在番茄小說中自己的UID究竟在哪裡查看呢?想要了解的用戶們就快來跟著本文一起詳細了解查看步驟吧!番茄小說uid在什麼地方查看答案:【番茄小說】-【我的】-【反饋與幫助】-【意見反饋】-【點擊5下】。具體步驟:1、先打開番茄小說軟體,進入到首頁後我們需要點選右下角的【我的】;2、然後在我的頁面中我們滑到頁

哈嘍大家好,我是鹹魚。接觸過Linux的小夥伴都知道在Linux(或說類Unix)中,有三種類型的用戶:超級用戶(UID為0):也就是root用戶,擁有最高權限。系統用戶(UID為1~999):系統內建用戶,用於運行系統服務和守護程式。一般使用者(UID為1000~60000):為了讓使用者能夠使用Linux系統資源而建立的,使用者新建的帳號一般就是普通帳號。那麼現在問題來了,要如何快速找出Linux中的真實使用者(root使用者和一般使用者)?在正式開始之前,我們先介紹一個工具-getent。 getent

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

自 DJI 發布 Osmo Action 4(亞馬遜售價 299 美元)以來已經過去了近一年。從那時起,該公司開始專注於其他部門,包括新型 RS 相機萬向節。最重要的是,它還推出了各種無人機,例如 Avata

使用者UID和GID是Linux系統中用來識別使用者和群組的數字識別碼。在使用Linux系統時,我們經常需要查看使用者的UID和GID,以便管理使用者和檔案的權限。本文將深入介紹Linux系統中查看使用者UID和GID的多種方式,並附上具體的程式碼範例。一、透過指令查看用戶UID和GID查看目前用戶的UID和GID:id運行以上指令後,系統會顯示目前用戶的UID、GID以

Linux作業系統是一種廣泛使用的開源作業系統,它為使用者提供了豐富的命令列工具,讓使用者可以更輕鬆地管理系統。在Linux系統中,每個使用者都有一個唯一的使用者識別碼(UserID,UID)和一個群組識別碼(GroupID,GID)。了解使用者的UID和GID對於系統管理和檔案權限管理非常重要,本文將介紹幾種查看使用者UID和GID的技巧,以便更好地管理Linux系

UID不是帳號,而是使用者身分證明也就是User Identification的縮寫,是網路平台註冊時系統自動產生的數值;UID使用者在註冊網路平台後,系統會自動給你一個UID的數值,意思是給這名用戶編個號。
