在以前的防止跨站攻擊的時候,使用了驗證提交的頁面是否是同乙個站點,這樣可以防止普通的攻擊,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轉...