2010-06-04 64 views
17

如果用戶查看我的JavaScript文件,複製函數的內容並使用AJAX向我的服務器發送請求,會發生什麼?有沒有一種方法可以防止這種情況發生?使AJAX調用安全

回答

15

的方式來反對這種保護是您免受任何 Web請求保護的方式沒有什麼不同。你這樣做是爲了讓你的網站需要某種形式的認證(即用戶必須登錄),如果請求沒有被正確認證,就不要做。

通常情況下,當你做一個AJAX請求,餅乾也與請求一起發送,所以你就應該能夠使用,你用你與你的AJAX請求定期請求相同的身份驗證方法。

+1

Ahh有意義。我只是不知道瀏覽器是否具有某種類型的跨域保護。感謝芽。 – 2010-06-04 06:00:04

+0

瀏覽器不允許來自其他服務器/域的xmlhttprequest。但是,如果您允許json-p請求,則可能發生,也有人可能會欺騙瀏覽器,像上面提到的那樣,像處理其他任何請求一樣處理對Ajax的請求。 – Tracker1 2010-06-04 06:10:03

9

按codeka,就沒有辦法防止有人各具特色自己的Ajax查詢是相同的,你在你的JavaScript要求有一個。跨域保護並不一定會保護你,如果他們願意的話,只要在你的網站的一個頁面上輸入Javascript到他們自己的地址欄中即可。

你唯一的保護是驗證通過在服務器端的Ajax查詢提供的輸入和參數。將每個PHP或Python或任何響應腳本限制爲非常特定的任務,並檢查服務器端的輸入。如果出現問題,請回復錯誤。

總之,有沒有辦法阻止別人發送請求,但你可以阻止他們這麼做,你不想讓他們到您的服務器上做一些事情。

+4

這是否意味着人們永遠無法使用AJAX創建安全的*和*廣義的CRUD體系結構? – dclowd9901 2011-04-30 18:50:55

0

假設你需要某種形式的認證:

我想你可以保持數據庫會話,以驗證請求是否來自一個真實的用戶來進行鍛造。使用加密的cookie來存儲會話ID,並將cookie會話ID引用到數據庫以驗證用戶