PHP防止跨站表單提交與同站跨頁偽造表單的攻擊

2022-03-24 20:49:36 字數 851 閱讀 7390

在以前的防止跨站攻擊的時候,使用了驗證提交的頁面是否是同乙個站點,這樣可以防止普通的攻擊,ereg("blog.qita.in",$_server['http_referer'])

不過也不是很安全的,因為攻擊者可以偽造http referer,如 header("referer: blog.qita.in"); 或者在惡意指令碼中偽造http頭

由於http referer是由客戶端瀏覽器傳送的,而不是由伺服器控制的,因此你不應當將該變數作為乙個信任源。

當然登入的時候可以使用驗證碼來解決,不過其他很多表單提交還是不適宜。

下面給出乙個防止偽造表單提交的方案,還解決了同乙個站點不同頁面的非法呼叫!

//--------------- ** -------------//

session_start();

#隨機取6位的雜湊值

function gen_token()

function ck_form()

}function token_input()

//使用方法,注意先後順序

if(_post('add')!='')

//------------ **結束 -------------//

原理:當不同的頁面跨站或同站非法跨頁提交表單的時候

跨站時獲取的隱藏域和session值都為空,可以判斷是非法提交,因為合法頁面的session和隱藏域我賦了同樣的雜湊值。

同站時session值和post得到的隱藏域的值不會相同,所以也可以判斷是非法提交。

note:

function _post($str)

function _get($str)

function _session($str)

PHP防止跨站表單提交與同站跨頁偽造表單的攻擊

在以前的防止跨站攻擊的時候,使用了驗證提交的頁面是否是同乙個站點,這樣可以防止普通的攻擊,ereg blog.qita.in server http referer 不過也不是很安全的,因為攻擊者可以偽造http referer,如 header referer blog.qita.in 或者在惡意...

php 防跨站表單提交

一種最優方式防跨站表單提交,使用者限時token 就是生成乙個隨機且變換頻繁加密字串 可逆和不可逆 放在表單中,等到表單提交後檢查。這個隨機字串如果和當前使用者身份相關聯的話,那麼攻擊者偽造請求會比較麻煩。對付偽造跨站請求的辦法是在表單裡加入乙個叫.crumb的隨機串 而facebook也有類似的解...

php表單防止XSS跨站指令碼攻擊

記住一句話,千萬不要相信使用者輸入的都是我們正常思維想到的東西,xss是什麼鬼?首先我們對使用者所有提交的資料都通過 php 的 htmlspecialchars 函式處理。當我們使用 htmlspecialchars 函式時,在使用者嘗試提交以下文字域 該 將不會被執行,因為它會被儲存為html轉...