2011-10-04 55 views
0

我有一個codeigniter應用程序,我通過ajax調用大部分的東西。例如,讓我們創建帳戶。有一個表單有四個字段,用戶名,密碼,電子郵件和手機。安全的Ajax調用服務器端功能

frm = $("signupform").serializearray(); 
$.post(base_url + "/auth/ajaxlogin/", frm, function(data){ 
       if(data==="true") { 
        window.location.reload(); 
       } else { 
        $("#loginresult").show(); 
       } 
      }); 

這個腳本我正在發送帳戶詳細資料將在auth控制器帳戶創建方法,創建帳戶和登錄用戶的照顧。但是我相信,這是非常脆弱的,說任何用戶可以編寫一個惡意腳本在他們的js控制檯中連續創建賬戶。那麼保證某些功能的最佳方式是什麼?

+0

如果AJAX或標準POST提交,應該有消毒/保護措施來緩解這些類型的帳戶創建襲擊沒有關係。 – Jakub

回答

3

就服務器而言,Ajax是無關緊要的,HTTP請求是HTTP請求。

用於防禦那種進攻的正常途徑:

  • 確認選擇在測試發送到電子郵件地址
  • 限速
  • 驗證碼(只有上述不提供足夠的保護,他們惹惱人)
0

每個頁面都可以寫出一個唯一的密鑰,僅在構成提交的一小段時間內有效。此密鑰只有一次有效且只有幾分鐘的時間,並且對於要使用的表單提交必須有效。密鑰在當然的源代碼中可見,但由於它只有一次有效,所以會阻止持續創建帳戶。

您還可以縮小和隱藏您的JS,這將使惡意攻擊您的網站更難。

+0

但是可以通過簡單的方式反轉縮小和混淆。 – MacMac

+0

爲什麼還要反轉呢?只需使用諸如Firebug之類的東西來監視HTTP請求。 – Quentin

+0

我從來沒有說過會讓事情變得安全 - 這只是另一個障礙...... –

0

有許多方法可以實現安全 - 但是如果要鎖定單個用戶濫用,爲什麼不檢查傳入請求的IP並阻止來自同一IP內的重複內容,比如X分鐘?這不會是一個解決方案,但是可以添加其他方法的附加層。