2014-02-11 92 views
0

如何使XMLHttpRequest(ajax)調用php腳本安全。安全ajax腳本(JavaScript請求PHP腳本)

我的意思是,不要讓PHP文件功能的直接URL,只能通過從我的網頁腳本調用(我不想顯示數據庫結果不記錄用戶,並稱爲PHP腳本文件包含數據庫登錄和功能)。

我學習和發現無法使用:

  • 如果我用的.htaccess文件鎖定文件夾或使用國防部重寫(不是所有的正常工作,因此不建議)

  • 頁眉重定向無法正常工作(正是我不知道URL或域名從中將腳本調用) if(@isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']=="http://xxxxxxx.com/index.php?")

  • lastone不工作是在PHP腳本($ _ SERVER [「HTTP_X_REQUESTED_WITH」]),包括返回NULL:if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { header('HTTP/1.1 403 Forbidden'); exit; };
+1

爲什麼你不想在腳本中包含db auth函數? – hindmost

+0

MAN!我忘了!你是對的,現在就完成了。這麼多想想簡單的想法。 – Martin

回答

0

使用隨機化令牌怎麼樣?例如,請參閱best practice to generate random token for forgot password。您需要閱讀大量關於SO tho的文章,使用令牌時需要考慮很多事情。 (尤其是看他們的安全性。)

+0

好的如何在腳本中有效地提供令牌值?我可以通過GET或POST將該值發送到PHP腳本,但我如何從服務器請求令牌以比較是否匹配?它是唯一的解決方案,DOS不性別主義簡單的最佳實踐方式無法運行腳本以外的登錄環境? – Martin

+1

這實際上取決於你想要達到的目標。根據我對您的問題的理解,您擁有已登錄的用戶。因此您可以真正對腳本進行快速簽名檢查。如果你希望它能夠被純粹的腳本訪問,那麼你會想要使用令牌。在頁面調用時創建一個隨機化的標記,然後通過post /進入你的ajax調用添加它,檢查確切的標記(你可以將它保存在一個會話中)並在執行後直接刪除它。 –