2011-03-24 63 views
4

我有一個社交網絡,我正在創建並存在安全問題。我有能力在網站上有朋友,當你請求一個朋友時,它會是一個按鈕,它會使用jQuery運行AJAX腳本。關於AJAX安全性的問題請諮詢

我知道javascript可以很容易地被黑客入侵,也可以在這裏閱讀http://www.acunetix.com/websitesecurity/ajax.htm,AJAX並不像看起來那麼安全。他們聲明:「由於XML HTTP請求通過使用與網絡上所有其他協議(HTTP)相同的協議來運行,從技術上講,基於AJAX的Web應用程序容易受到與」普通「應用程序相同的黑客方法的影響。

所以基本上我不想讓蠕蟲通過我的AJAX功能繼續運行朋友請求,並且有人在網站上簽名,他們有1400萬個朋友請求。這也是我在網站上運行的其他幾個AJAX腳本的問題。我的問題是,我應該只保留所有服務器端。我正在使用PHP,所以每個朋友的請求都應該是頁面的重新加載,儘可能避免這樣的事情? 請任何幫助將不勝感激。

回答

5

如果您有安全問題,它們並不是ajax獨有的,但是有一些簡單的方法可以讓事情變得更加困難。

1)正如Diodeus所說 - 絕對不要讓人們使用您的服務,而不通過會話進行身份驗證。與網站上的任何其他頁面相同,需要您登錄。

2)通過將客戶端信息嵌入到會話密鑰(cookie)中並在服務器驗證它,從而使會話劫持變得更加困難。 IP地址,瀏覽器版本。儘管如此,這仍然可能被欺騙。 3)如果特定會話在某個時間段(例如,每分鐘10個)中發出超過x個請求,則將其註銷並禁止一小時。設置一個更高的限制來禁止他們,直到由管理員恢復。當這種情況發生時,代碼會自行發送一封電子郵件,以便您知道您是否遇到問題。

4)如果你真的擔心,那麼使用SSL。這是絕對防止會話劫持的唯一方法(除了爲會話數據實現您自己的私鑰加密機制外)。 5)如果不使用SSL,你不能阻止會話劫持的可能性,但你可以很容易地保護你的用戶密碼不被窺探。身份驗證時,這樣做:

  • 客戶端腳本從服務器(一個隨機字符串)
  • 服務器發送鹽到客戶端請求鹽和與會話
  • 客戶端哈希使用Sha-256例如密碼記住它,用鹽,並用他們的用戶名&驗證密碼。服務器使用相同的salt散列與用戶相關的密碼,並驗證它是否與客戶端發送的散列匹配。服務器忘記它使用這一次的鹽。

這樣一來,有人看會話只能看到散列密碼,因爲散列每次都是不同的,他們不能真正再次登錄使用針對您的服務,哈希值。您仍然無法阻止他們劫持會話,但您可以阻止他們看到您的用戶密碼或能夠自行登錄。

實際上,會話劫持並不是那麼普遍,儘管高調的實現當然是通過wifi進行的Facebook。如果有人拿出Firefox插件來破解你的社交網絡,那麼你應該感到激動,因爲你知道你已經做到了。

+0

非常感謝,這真的幫助我。我會做很多關於如何實現所有這些東西的研究。 – Dom 2011-03-25 16:34:42

+0

謝謝傑米! – 2014-05-11 16:12:31

+0

//服務器在自己的末端使用相同的salt散列與用戶相關的密碼,並且驗證它是否與客戶端發送的散列匹配。 // 這意味着服務器將不得不以密碼保存密碼,對不對? – Aneeez 2015-10-08 04:29:42

0

在客戶端設置一個登錄cookie。發送cookie值與ajax請求並在服務器上驗證它。

+0

你究竟會怎麼做呢?你能更具體地 – Dom 2011-03-24 20:10:14

+0

而且人們仍然能夠看到ajax函數中的cookie值嗎? – Dom 2011-03-24 20:19:42

+0

這與cookie在常規網頁上的工作方式沒有什麼不同。谷歌「會話劫持」會話本身並不安全。但是,使用ajax方法所面臨的風險與任何網頁相同(除非其適度使用它們的程度除外)。 – 2011-03-24 20:25:00

0

我不確定我完全理解,因爲如果有蠕蟲或其他任何提交AJAX請求,爲什麼同一個蠕蟲不能發出非Ajax請求?

無論哪種方式,你應該肯定有服務器端驗證,以確保請求是有效的。您是否希望對可以進行的好友請求的數量進行驗證與您是否使用ajax無關。

1

這些不是AJAX特有的問題。最重要的是檢查和清理數據。我假設用戶必須註冊/登錄,纔可以添加朋友,所以這裏有一些明顯需要考慮的要點(畢竟,你是怎麼回事會跟蹤誰是朋友誰?):

  • 添加一個CAPTCHA或類似到您的註冊過程,以減少殭屍用戶。 reCAPTCHA這些日子似乎是行業標準(並且非常容易設置)。
  • 在處理AJAX呼叫時,請確保允許用戶執行他正在做的事(即他是否已登錄,是否已激活了他的帳戶等)
  • 處理好友請求時,忽略重複項。人們有時傾向於無視朋友的要求,當邀請者不耐煩時他們可能不希望再次獲得邀請。
  • 找到一種跟蹤可疑行爲的方法。如果用戶在過去的兩秒內發送了50個好友請求,則可能是機器人。暫時封鎖帳戶並進行人工檢查。隱藏來自被阻止的用戶的朋友請求也可能是一個好主意。

還有很多,但這些應該讓你開始。

-1

真的沒有AJAX這樣的東西。術語AJAX是組織事物方式的一般描述。所謂的「AJAX」請求只是一個HTTP GET或PUT。

+0

嗯,這是真的。 – Vagrant 2011-03-24 21:55:36