我有一個PHP應用程序,它有一些jQuery和Ajax功能。我想知道,在每個Ajax請求(不加載頁面)時,如何重新生成會話令牌(我將發送它來驗證Ajax請求)?如何使用jQuery在每個Ajax請求上重新生成會話令牌?
我在頁面上有更多元素運行多個Ajax查詢,但是在這一刻他們都得到了相同的標記。所以如果有人擁有這個tokey,他們可以從另一個表單提交僞造的請求。
我有一個PHP應用程序,它有一些jQuery和Ajax功能。我想知道,在每個Ajax請求(不加載頁面)時,如何重新生成會話令牌(我將發送它來驗證Ajax請求)?如何使用jQuery在每個Ajax請求上重新生成會話令牌?
我在頁面上有更多元素運行多個Ajax查詢,但是在這一刻他們都得到了相同的標記。所以如果有人擁有這個tokey,他們可以從另一個表單提交僞造的請求。
在客戶端生成令牌毫無意義。你不能相信任何來自客戶端的東西,因爲你不知道它是發送請求的客戶端軟件還是惡意軟件。 您必須創建儘可能多的標記,因爲您擁有ajax可能的請求,並在每個響應中返回一個新標記。
我從來沒有說過我打算在客戶端生成令牌。我想在服務器端生成它們,這是創建會話的唯一方法。 –
對不起,我誤解了。那麼爲什麼你不爲你的頁面中的每個ajax調用生成一個不同的標記,並且每次調用ajax調用時都給它一個新的標記來代替它。這意味着你在服務器端的會話中存儲了一個令牌列表。 –
您應該爲每個用戶或每個會話在服務器端生成一個CSRF令牌。您可以將其存儲在數據庫中或會話中。您應該將該令牌發送給您的客戶端,並使用ajax請求等待它。它會工作,直到你的網站是不是XSS脆弱......
順便說一句的第一個步驟,以確保您的應用程序使用HTTPS協議...
聽起來像一個http://meta.stackexchange.com/questions/66377/what-the-xy-problem – andrew