2011-08-30 166 views
0

可能重複:
How to authenticate AJAX call?AJAX PHP的安全問題

我有一個頁面ajax_check_user_pass通過AJAX檢查用戶的用戶名和密碼。

此頁中的Ajax代碼將用戶名和密碼張貼到php文件php_check.phpphp_check.php檢查用戶名和密碼以匹配數據庫。

如何確保php_check.php接收的用戶名和密碼來自ajax_check_user_pass並且不是由某人僞造的?

我已經使用會話,但它不工作。另外,我知道檢查引薦來源不是可靠的。

在此先感謝。

+3

真的很重要嗎?如果您擔心暴力破解,請在x次嘗試後實施自動阻止機制。 – Rijk

+1

這是用戶輸入;它怎麼可能是假的?你試圖抵禦什麼攻擊? – Quentin

回答

4

事實是,您不知道是誰向您發送用戶名和密碼,他們必須輸入此信息的事實證明您不知道他們是誰,只要您清理髮布的信息它應該按照你想要的方式工作。

許多網站實施了最大次數的嘗試,但這真的取決於您。

+0

他的問題不是「誰」,而是如何驗證請求的來源。 – thwd

+0

「誰」是*起源,請求者的身份。 – jondavidjohn

+0

>「我如何確保php_check.php收到的用戶名和密碼來自ajax_check_user_pass」 – thwd

0

這種類型的攻擊被稱爲CSRF,可以通過在會話中存儲挑戰令牌或Cookie,以避免在進行任何進一步操作之前,對錶單或Ajax調用在您的網站上發出的每個請求進行檢查操作。

閱讀:

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

同時確保再生此令牌每隔X分鐘或Y瀏覽量,無論先來了。

+2

這是我的觀點,CSRF在面向公衆的登錄表單上的保護似乎有點毫無意義... – jondavidjohn