2013-01-20 58 views
0

我創建了一個php函數,它的作用類似於「路由器」,意思是它接收帶有一些變量的Ajax調用,加載正確的方法和函數,然後返回數據,以便JS可以處理它。Ajax調用和安全

我提供的大多數函數都使用$_SESSION變量,這些變量沒有通過調用/響應過程,所以一般而言,如果沒有正確加載會話,應該返回任何內容。但據我所知,我相信肯定有辦法解決這個問題,更重要的是,我可能遺漏了一些功能,即使沒有加載任何會話也能工作。

所以我想知道如何限制對會話的訪問。我認爲的一種方式是通過ajax調用用戶標識或其他一些唯一標識符,然後將其與會話進行比較,並且只有在兩者匹配時才繼續。

但是這樣做會暴露用戶ID,如果可能的話,我寧願隱藏儘可能多的用戶ID。另外,我甚至不確定它會阻止任何欺騙性的Ajax呼叫。

所以我想知道,有沒有更好的方法?

謝謝!

PS了什麼事情,我正在做的調用使用jQuery

回答

0

保護您的會話數據的最佳方式是將它與您只在服務器上存儲密鑰來加密。每次您將會話數據解密時,都需要進行任何更改並加密,然後將其放回$_SESSION。只要客戶端沒有加密密鑰,他們將無法解密數據(這將默認存儲在客戶端的cookie中)。

如果惡意客戶端試圖發送自己創建或修改的會話數據,則無法使用密鑰進行解密(因爲它未經加密或使用其他密鑰加密),因此您可以假設會話數據無效並將其清除。

有關PHP加密的更多信息,請參閱this question

+0

即使這是一個完全不同的方式比我計劃,這一個似乎相當安全,我只需要確保我所有的Ajax調用函數只與會話,它應該完成,謝謝! – ghego1