XSS/XSRF攻擊我有遵循一個基本模式的一些Ajax請求:避免與靜態參數
function(visitorId, sessionId, ...parameters more specific to method call..)
訪問者和會話ID是隨機生成的服務器端。訪問者和會話id始終用於在我們的軟件中通過實時會話驗證真實訪問者。一種方法與簽名:
function(visitorId, sessionId, issueId)
返回狀態(開,關,等待,等)表示爲int
當前客戶的問題。今天,我被我們的客戶指出的一個安全報告,這個特殊的方法很容易受到跨站請求僞造,因爲
測試結果似乎表明一個漏洞,因爲同樣的請求在不同 發送兩次標記會話,同樣收到答覆。這表明沒有參數是動態的 (會話標識符僅在cookie中發送),因此應用程序易受CSRF攻擊。
幾件事情要注意:
這些方法只適用於POST請求,如果該事項。
我們軟件中的「會話」與瀏覽器或IIS的會話沒有關係。我們的軟件是Windows服務,所以IIS可能關閉,瀏覽器可能關閉,我們會保留該會話,直到我們的內部會話跟蹤器確定它的時間擺脫它。
3. Ajax請求正在發送到WCF服務,然後中繼請求到我們的Windows服務。
這讓我撓腦袋,因爲我們的大多數方法遵循這種靜態參數模式,但他們也傾向於返回唯一的數據。這讓我想知道,如果我只是返回狀態以及一些隨機數據,我可能會通過這個安全測試,但這看起來似乎不對。解決這個問題的最好方法是什麼?