如何防止站外提交數據

 如何防止站外提交數據?從理論上說是沒有絕對可行的辦法。若是你要找絕對可行的辦法。請跳過此文,此文只是提升站外提交的難度。 瀏覽器

1、爲何要防止站外提交數據?

一、有的人爲了減輕對服務器的壓力,把對用戶輸入的數據的有效性判斷放在了JS裏,而從站外提交時,數據沒有進行有效性判斷。(其實這種方法很笨。)安全

二、防止機器人提交數據。好比,批量用戶註冊。批量發帖。服務器

三、安全性。ide

2、防止站外提交的方法

本文來自李平生的博客。本文網址:http://www.lishengping.com/archives/46網站

一、判斷HTTP中的Referer。Referer記錄了來源頁的網址。判讀來源頁的域名便可知道是否站外提交。(破解方法:僞造Referer)spa

二、Session法。當用戶進入網站的時候設置一Session,當用戶提交數據時在判斷這個Session。但問題是,爲了標識用戶是哪一個Session,服務器迴向瀏覽器寫入一個標識的Cookie。(破解方法:訪問一個表單頁,記錄Cookie,當提交的時候把Cookie也提交)圖片

三、設置強大的Hash。當打開表單頁時,給表單生成一個Hash,當提交是判斷這個Hash。(破解方法:正則匹配Hash,提交時將Hash一塊兒提交)get

四、驗證碼。在表單中設置驗證碼。若是驗證碼不夠強大,能夠被程序識別。若是驗證碼強大,能夠提交數據以前人工識別。(破解方法:雖然仍是要人工錄入驗證碼。但已經和在網頁裏提交數據相比,要省事多了)博客

3、以上防止站外提交數據的方法的通用破解方法。

通常網站是使用HTTP協議。那麼只要僞造一個和原來HTTP請求類似的HTTP請求就可了。域名

4、增長站外提交數據的難度。

一般站外提交數據的方法有2種:一、外站的FORM。二、非瀏覽器進行POST數據。

第一種方法侷限性很大,好比不能夠僞造HTTP頭信息。很容易就獲得了防止。

第二種方法能夠僞造HTTP請求。若是是高手破解防站外提交數據,幾乎是沒辦法防止站外提交數據的。

一般狀況下,非瀏覽器提交數據都是不會去下載JS、圖片、CSS文件。也就是說,當用戶打開表單頁。瀏覽器會下載當前頁的圖片、JS、CSS文件。而非瀏覽器卻只下載HTML文件。也就是說,當下載HTML是設置一個SESSION,當下載HTML所包含的JS或其餘類型文件時改變這個SESSION的值。當提交數據時判斷這個SESSION是否改變值。這種方法不會讓HTTP請求發生改變。所以破解者很難發現防止站外提交數據的方法和其餘文件有關。讓破解者琢磨不透。

這個SESSION的值能夠是整數。下載一個文件加1,假如這個FORM所在頁有2個CSS文件,4個JS文件,7個圖片,那麼能夠判斷這個SESSION的值應該大於幾(例:8)。

這只是增長外站提交數據難度的一個方法。非必定能防站外提價數據。

相關文章
相關標籤/搜索