2017-09-24 22 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