Javascript 无法复制查询参数html注入

Javascript 无法复制查询参数html注入,javascript,xss,query-parameters,Javascript,Xss,Query Parameters,我们在一个客户端的页面上运行了一个嵌入式脚本。我们从他们那里收到一份报告,称我们发送到该页面的查询参数没有针对XSS注入进行适当的保护 当我尝试以下url时: https://www.clientsite.com?somekey=%3Csvg%20onload%3Dalert(document.cookie)%3E 在他们的网站上,我确实看到了显示cookies的警告面板 但是当我在本地运行脚本时,我无法复制这种注入。无论我在查询参数的值中输入了什么,警报面板都不会出现 该脚本的一个非常简化的版

我们在一个客户端的页面上运行了一个嵌入式脚本。我们从他们那里收到一份报告,称我们发送到该页面的查询参数没有针对XSS注入进行适当的保护

当我尝试以下url时:
https://www.clientsite.com?somekey=%3Csvg%20onload%3Dalert(document.cookie)%3E

在他们的网站上,我确实看到了显示cookies的警告面板

但是当我在本地运行脚本时,我无法复制这种注入。无论我在查询参数的值中输入了什么,警报面板都不会出现

该脚本的一个非常简化的版本是:

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>XSS test</title>
</head>

<body>
  <div id="content"></div>
  <script>
   (function() {
    var url = window.location.href
    var someKey = 'somekey'
    var regexS = "[\\?&]"+someKey+"=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(url);

    var parentElement = document.querySelector('#content');
    var widget = document.createElement('div');
    // var svgInjection = '<svg onload=alert("alert!!")>'
    // var svgEncodedInjection = '%3Csvg%20onload%3Dalert("alert!!")%3E'
    widget.innerHTML = '<div>' + results[1] + '</div>';

    return parentElement.insertBefore(widget, parentElement.firstChild);
   })()
  </script>
</body>
</html>


XSS测试
(功能(){
var url=window.location.href
var someKey='someKey'
var regexS=“[\\?&]”+someKey+”=([^&\\]*)”;
var regex=新的RegExp(regexS);
var results=regex.exec(url);
var parentElement=document.querySelector(“#content”);
var widget=document.createElement('div');
//变量svgInjection=''
//var svgEncodedInjection='%3cssvg%20onload%3Dalert(“alert!!”)%3E'
widget.innerHTML=''+结果[1]+'';
返回parentElement.insertBefore(小部件,parentElement.firstChild);
})()

我不明白接收相同查询参数的相同脚本如何在客户端站点上显示警报面板,而在本地运行时却什么都没有。有什么想法吗?

您发布的代码是安全的,您需要使用
widget.innerHTML=decodeURIComponent(results[1])
才能工作/注入,否则它将被编码,您确定客户端的代码没有这样做,或者使用get param服务器端并将其放置在页面上,而不对其进行整体编码吗?@lawrencerone,客户页面非常满,各种各样的事情都在进行。有没有办法让我知道他们是否在某个地方解析参数?在控制台中,当我执行
window.location.href
时,参数如下:
%3Csvg%20onload%3Dalert(document.cookie)%3E
,因此基本上与输入相同。但我不知道该怎么做。