Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSS-Javascript字符串_Javascript_String_Xss - Fatal编程技术网

XSS-Javascript字符串

XSS-Javascript字符串,javascript,string,xss,Javascript,String,Xss,是否可以对以下各项执行XSS: <script> var name = "USER_INPUT";</script> var name=“用户输入”; 其中,用户输入由用户提供。我有一个用户输入过滤器,它不接受

是否可以对以下各项执行XSS:

<script> var name = "USER_INPUT";</script>
var name=“用户输入”;
其中,用户输入由用户提供。我有一个用户输入过滤器,它不接受<和“字符,但接受”。
我不在html中使用变量名,只在脚本内部处理时使用它。

我认为检查针对您正在使用的编程语言清理用户输入的最佳实践非常重要


例如,对于php,您可以检查以下问题:

这取决于您如何处理变量
name
。如果您要对其求值,则XSS是可能的

支持性地,如果用户输入是
警报(1)
,并且您将在不纠正其值的情况下对其进行评估

eval(name);
或者,如果要将
名称
注入DOM,那么XSS也是可能的

看看下面的例子

const first = 'Wes';
const User_input = `I love to do evil <img src="http://unsplash.it/100/100?random" onload="alert('you got hacked');" />`;

const html = `
    <h3>${first}</h3>
    <p>${User_input}</p>
`;

const bio = document.body;
bio.innerHTML = html;
const first='Wes';
const User_input=`我喜欢做坏事';
常量html=`
${first}
${User_input}

`; const bio=document.body; bio.innerHTML=html;
但是,如果您正确地清理用户输入,则可以减少XSS攻击的机会


有一些方法可以清理用户输入。您如何清理?您可以显示吗?

在您提到的限制下,没有XSS的直接风险。如果允许使用反斜杠、换行符或html注释结束标记等字符,请确保任何带有
的用户输入,然后,它们至少可以破坏页面的格式或引发错误,从而停止脚本的其余部分运行

如果添加额外的变量,也有容易受到攻击的风险。比如:

<script>var name = "USER_INPUT", name2 = "USER_INPUT2";</script>
var name=“用户输入”,name=“用户输入2”;

然后,如果
USER\u INPUT
\
,而
USER\u INPUT2
+alert(1)/
,那么这将运行一个脚本。

如何给出输入?它是如何处理的?请使用经过验证的库来清理用户输入。@Xufox输入是由用户提供的。我使用该变量在javascript中执行一些逻辑。@Darkrum您可以与我共享负载吗?如果XSS是可能的。@如果可能的话,你能与我共享有效负载吗?我正在通过过滤<和“角色。仍然可以执行XSS吗?有什么有效载荷吗?不是在我的头上,但我也遇到了很多其他XSS类型,我无法直接想到,所以我不能认为有些东西并不总是意味着没有办法。请阅读问题,OP说他没有将其嵌入html,并拒绝使用正则表达式过滤字符。除“和”外,允许使用所有字符