2011-05-02 127 views
3

如何正確鎖定通過AJAX調用的文件?你如何阻止某人直接調用響應URL並獲得響應?通過AJAX調用URL的安全性

爲了幫助解釋,我會使用自動建議功能的一個例子。具體而言,輸入幾個字母將顯示與該短語匹配的所有成員的列表。

所以在某處的Javascript定義「http://mysite.com?code=」的網址。然後在查找腳本中,我們有

loginRequest.open("GET", url + characters, true); 

它返回所有成員的名稱中包含「字符」的XML。什麼是阻止黑客將該URL直接輸入到瀏覽器中,並反覆發送新的名稱片段以努力獲得我的整個成員基礎?

沒有我遇到的網絡示例似乎解決了這個問題。

我只是(錯誤地)偏執?

+0

一點也沒有無論URL是否可以直接訪問,都無關緊要。它可以被訪問,這是重要的。 – 2011-05-02 18:26:07

+0

如果您沒有任何類型的身份驗證,並且簡單的GET可以請求您網站上的某個頁面,則任何人都可以隨時請求這些頁面。 – 2011-05-02 18:26:59

+2

要記住的一個關鍵是AJAX並不能真正使Web工作以不同的方式工作。您仍然需要執行通常會保護文件的所有功能。 AJAX只是一種向用戶提供更方便的請求和交付的機制。 – 2011-05-03 17:01:28

回答

2

如果URL地址可在客戶端,你不能完全防止黑客或任何機器人作出重複查詢到它,不給任何迴應。 您至少應該使用某種服務器端身份驗證來確保只有有效的用戶才能訪問數據。

,當然還有,這個合法的用戶也可能是惡意的,因此,你必須仔細設計系統,以確保您不會送走任何關鍵數據。

+0

我已經更新了腳本並增加了安全性。當頁面被調用時,它會創建一個名爲'security_string'的變量,它是一個base64編碼的字符串,其中包含用戶ID,會話ID以及基於ID和鹽的MD5 chksum。然後,我更新了網址爲「var url = ajax_url +'?security ='+ security_string +'&data ='+ characters;」。 AJAX文件解碼,驗證,然後做它的事情。謝謝你的建議。 – MivaScott 2011-05-04 19:15:42

0

如果您擔心,請添加一些使用限制。計算每個IP有多少請求,並將其每天鎖定到一定數量。

還要考慮會不會有人看到你的用戶列表中的任何值。您是否發佈了有人可能有興趣抓取的關於您用戶的有用信息?這是一個真正的問題嗎?

0

如果安全是非常重要的不能使用會話ID,並驗證它你的Ajax處理程序內?

0

與「rasonable」門檻檢查/油門
和侵權事件時有像captha或假PVC門或wathever
與loged或不loged用戶的任何行動,因爲谷歌和其他人做自己的東西