2011-10-02 120 views
2

我的問題是,假設在我的web應用程序中,我使用ajax調用服務器端的方法,是不是在應用程序中創建安全漏洞?比如說,我可以選擇讓用戶停用該帳戶,這可以通過點擊按鈕來完成。這是通過Ajax完成的。Ajax,PHP和安全性?

那麼,黑客不能向服務器發送請求來取消激活帳戶而不是用戶? 幫助!

回答

1

我的問題是,假設在我的web應用程序中,我使用ajax調用服務器端的方法,是不是在應用程序中創建安全漏洞?

從安全角度來看,涉及JavaScript的HTTP請求與不涉及JavaScript的HTTP請求(例如使用常規表單或手工製作的)之間沒有區別。

...但您不能從客戶端調用方法,只能向URI請求。服務器可能會根據接收到對特定URI的請求來調用方法。

那麼,黑客不能向服務器發送請求來取消激活帳戶而不是用戶嗎?

他們可以,這就是爲什麼你需要(守信)認證/授權和CSRF保護(就像你的請求,禁止不涉及Ajax的帳戶)。

0

這不僅僅是AJAX的問題,而是任何想要認證/維護會話的任意HTTP請求。用戶需要以某種方式進行身份驗證才能發出請求,這通常是通過cookie完成的。使用AJAX並不會使問題變得更糟,儘管它仍然是一個HTTP請求。

雖然只有身份驗證是不夠的,但有人可以一直在線上監聽並捕獲身份驗證cookie,從而獲得會話 - 「成爲你」。此處唯一的解決方案是在較低的OSI圖層級別(使用SSL/TLS)加密連接。這就是爲什麼當涉及到身份驗證時,您總是應該使用SSL。

0

這個Ruby on Rails security guide對如何處理可能被利用的AJAX請求有很好的解釋。它不是特定於RoR,因此這些概念可以應用於任何平臺。

降低跨站請求風險的一種方法是使用POST來修改或刪除數據的操作。

+0

POST應該用於防止意外修改/刪除數據...但它不提供任何針對CSRF的重要保護。 – Quentin