我正在構建一個瀏覽器遊戲,並使用大量的ajax代替頁面刷新。我使用的是PHP和JavaScript。在做了很多工作之後,我注意到ajax並不完全安全。我擔心的威脅是說某人想要查看我的SQL服務器上的某些信息,他們只需將正確的信息輸入到與我的ajax調用相關聯的.php文件中即可。我正在使用GET風格的ajax調用,這是一個壞主意。無論如何,經過大量的研究,我有以下安全措施。我切換到POST(這不是真的更安全,但它是一個小錯誤)。我也有一個提到的地方,它又是僞造的,但又是另一個威懾力量。Ajax安全(我希望)
最後的措施我已經到位,並且是這個問題的焦點,當我的網站被加載時,我有一個80個字符的十六進制密鑰生成並保存在會話中,當我發送ajax調用時,我也發送在
challenge= <?php $_SESSION["challenge"]; ?>
形式的挑戰,現在關鍵當AJAX的PHP文件中讀取這一點,檢查是否發送的詢問配襯會話的挑戰。現在這本身不會做太多,因爲你可以簡單地打開螢火蟲,看看發送的問題很容易。所以我所做的就是一旦使用了這個挑戰,它會在會話中產生一個新的挑戰。
所以我的問題是,從這個地方看,只有看到挑戰關鍵字發送後什麼時候才能看到什麼,然後它會更新並且在發送之前再也看不到它,這使得它成爲不可能從另一個來源發送僞造的請求。所以沒有人看到任何這種安全方法的循環漏洞或有任何額外的想法或想法。
這聽起來就像我想要的那樣,你能給我一些關於如何使用這個唯一標識符來驗證他人的信息嗎? – tye 2011-03-17 13:53:10
如果您正在製作遊戲,我會假設您可能已經制定了用戶和註冊。除此之外,你正在尋找通常被稱爲「ACL」的東西。從本質上講,用戶(或用戶組)被賦予許可權限(「可以添加小部件」,「可以編輯*自己的小部件」,「不能刪除小部件」等)。對另一個問題來說,這是一個很好的話題,而且這個問題可能已經被很好地提出來了。 – 2011-03-17 14:08:01