2017-09-24 40 views
2

我想了解跨站點腳本包含。我已閱讀塞巴斯蒂安萊克西斯(click here for paperslidevideo link)的論文,並對此有所瞭解。在這裏檢測動態JavaScript是方法的一部分,我在這裏有一些困惑。檢測動態JavaScript的xssi

動態javascript檢測意味着什麼。這裏告訴同一個腳本文件將被請求兩次。一個有認證,另一個沒有。但我的困惑是,如果我請求假設script.js文件兩次,它會有什麼不同。服務器將始終使用相同的代碼行發送文件。不是嗎???

獲取腳本文件後,瀏覽器將執行該文件,並在完成後,它可能會有所不同。

假設,

$http.get("home/GetInfo", function(response){ 
    $scope.userName = response; 
}); 

這裏$scope.userName值可能會有所不同,但腳本文件將保持不變。

我的理解有什麼問題..?

回答

0

動態JavaScript應該是服務器處理腳本文件以便在發送到客戶端之前基於cookie等插入值的位置。這有時用於將一些初始數據傳遞給客戶端。

所以腳本文件內容可能是這樣的:

sessionId = "<%= getSessionId() %>"; 

$http.get("home/GetInfo?sessionId="+sessionId, function(response){ 
    $scope.userName = response; 
}); 

並請求時,你得到的東西,如:

sessionId = "d8e8fca2dc0f896fd7cb4cb0031ba249"; 

$http.get("home/GetInfo?sessionId="+sessionId, function(response){ 
    $scope.userName = response; 
}); 

SessionID的字面每個腳本的請求的時間會有所不同,這當檢測到顯示動態JavaScript被使用。

+0

但這不是.js文件。它可能.jsp或.cshtml或類似的東西。因此它不是js文件,我怎麼能要求腳本文件兩次,如紙張所述(有和沒有身份驗證)? –

+0

@SadidKhan他們發現了基於cookie值生成不同的js文件。首先他們登錄到該網站並跟蹤每個js文件的內容。然後他們再次請求相同的文件而不啓用cookie。他們使用自定義擴展,但通過在請求之間手動登錄和退出網站,您可以獲得相同的結果。 – fgb