2011-03-10 22 views
0

我在我的網站上有這個表單,我想阻止用戶從本地副本提交表單。或從其他域(Cross Site Scripting)提交表單。如何驗證使用HTTP_REFERER從同一服務器提交的表單?

HTTP_REFERER不可信,因爲它很容易僞造。

我有想法通過在提交信息之前調用服務器來驗證表單是在哪裏提交的。但我不太確定它的好主意。 謝謝 ilanko

回答

0

這就是CSRF並且通常通過在窗體中隱藏input來解決。所述input的值在服務器端被分配並存儲在會話中。在表單提交後,這兩個值將進行比較,並且表單提交只有在它們相等時纔會繼續。

+0

謝謝,但服務器會話超時允許有足夠的時間查看源代碼並保存表單,最後提交本地副本,包括有效的隱藏輸入。 – ilanko 2011-03-12 05:52:34

+0

@ilanko這是不可能的。當你在本地提交一個頁面時,你會得到一個全新的會話。 – 2011-03-13 22:13:25