2016-07-13 259 views
0

我創造了這個功能。防止表單提交

function blacklisted_ip() { 
    $('form').remove(); 
    $('.wrapper').removeClass('form-success'); 
    $(".login_text").html("Your IP has been blacklisted"); 
} 

,去除HTML表單 - 我刪除的形式停止與列入黑名單的IP記錄用戶

我有一個PHP在張貼表單時處理登錄的同一頁面頂部的腳本。

是否還有一種方法可以阻止其他頁面發佈到此頁面?

php的開始是這樣的:

if($_POST) { 

} 

我想過加入一個隱藏字段的值,但後來以爲有人將能夠查看源代碼,只是複製嗎?

+1

我建議,如果黑名單對業務至關重要,那麼在將HTML發送到瀏覽器之前,請先刪除PHP代碼中的表單。做它的客戶端使得重新啓用表單變得微不足道。 –

回答

0

最好的方法是使用CSRF令牌。如果你起訴任何框架,他們已經開箱即用,如果不是,如果你想自己實現它,你可以做到這一點。


CSRF代表跨站請求僞造,這是當一個惡意網站,電子郵件,博客,即時消息或程序,使用戶的網絡瀏覽器來執行中出現的攻擊類型用戶當前通過認證的受信任站點上的不需要的操作。

參考:https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet


解決方案來防止這是有一個獨特CSRF令牌針對每個用戶爲各形式。當用戶打開頁面並加載表單時,您將一個令牌/密鑰指定給該頁(頁面+表單),並將其保存到您選擇的展開的會話中。

添加此令牌與形式隱藏字段和後沿,隨着其他DATAS,現在當你處理表單比較來自客戶端一起接收到的令牌與你會話的令牌。如果它們匹配,則認證它們,否則不處理表單。

您可以使用任何方法來生成CSRF令牌,你的情況,他們將只是唯一爲每個頁面+形式。

+0

非常感謝。這是我第一次做這樣的事情 - 你能提供一個例子嗎? – charlie

+0

我沒有具體的例子,但是這很簡單,就像我寫的一樣。 –