AJAX 安全性



非同步 JavaScript 和 XML (AJAX) 是開發 Web 應用以提供豐富使用者體驗的最新技術之一。由於它是一項新技術,許多安全問題尚未完全確定,以下是 AJAX 中的一些安全問題。

  • 攻擊面更大,因為需要保護更多的輸入。

  • 它還會暴露應用程式的內部功能。

  • 未能保護身份驗證資訊和會話。

  • 客戶端和伺服器端之間界限模糊,因此可能發生安全錯誤。

示例

這是一個 AJAX 安全性的示例:

2006 年,一個蠕蟲病毒利用 XSS 和 AJAX 感染了雅虎郵箱服務,該病毒利用了雅虎郵箱 onload 事件處理中的漏洞。當開啟受感染的電子郵件時,蠕蟲會執行其 JavaScript 程式碼,並將副本傳送給受感染使用者的全部雅虎聯絡人。

動手操作

步驟 1 - 我們需要嘗試使用 XML 注入向允許的獎勵集合中新增更多獎勵。以下是場景快照。

xml_injection

步驟 2 - 確保我們使用 Burp Suite 攔截請求和響應。設定如下所示。

burp_settings

步驟 3 - 輸入場景中給出的帳號。我們將能夠獲得我們有資格獲得的所有獎勵的列表。我們有資格獲得 5 個獎勵中的 3 個。

xml_injection1

步驟 4 - 現在我們點選“提交”,看看我們在響應 XML 中得到了什麼。如下所示,我們有資格獲得的三個獎勵作為 XML 傳遞給我們。

xml_injection2

步驟 5 - 現在讓我們編輯這些 XML 並新增另外兩個獎勵。

xml_injection3

步驟 6 - 現在所有獎勵都將顯示給使用者供他們選擇。選擇我們新增的獎勵並點選“提交”。

xml_injection4

步驟 7 - 出現以下訊息:“*恭喜!您已成功完成本課程。”

預防機制

客戶端 -

  • 使用 .innerText 代替 .innerHtml。
  • 不要使用 eval。
  • 不要依賴客戶端邏輯來保證安全性。
  • 避免編寫序列化程式碼。
  • 避免動態構建 XML。
  • 切勿將金鑰傳輸到客戶端。
  • 不要在客戶端程式碼中執行加密。
  • 不要在客戶端執行影響安全性的邏輯。

伺服器端 -

  • 使用 CSRF 保護。
  • 避免編寫序列化程式碼。
  • 使用者可以直接呼叫服務。
  • 避免手動構建 XML,使用框架。
  • 避免手動構建 JSON,使用現有框架。
廣告