Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
Javascript 是逃跑<;及>;足以阻止XSS攻击吗?_Javascript_Asp.net_Xss - Fatal编程技术网

Javascript 是逃跑<;及>;足以阻止XSS攻击吗?

Javascript 是逃跑<;及>;足以阻止XSS攻击吗?,javascript,asp.net,xss,Javascript,Asp.net,Xss,我确信这个问题的答案是否定的,但我似乎找不到一种方法,简单地将转换为和不会完全阻止反射的和持久的XSS 我不是说CSRF 如果这不能阻止XSS,您可以提供一个如何绕过此防御的示例吗?当在属性中使用不受信任的字符串(用“”引用)时,您需要将“转义为” 否则,您可以轻松地注入javascript。例如,带有str的,例如,“onmouseover='something-evil'”并非所有XSS攻击都包含,具体取决于插入数据的位置 不,这还不够。请记住,XSS不仅仅是HTML中的不可信数据,您还可以

我确信这个问题的答案是否定的,但我似乎找不到一种方法,简单地将
转换为
不会完全阻止反射的和持久的XSS

我不是说CSRF


如果这不能阻止XSS,您可以提供一个如何绕过此防御的示例吗?

当在属性中使用不受信任的字符串(用
”引用)时,您需要将
转义为


否则,您可以轻松地注入javascript。例如,
带有
str
的,例如,
“onmouseover='something-evil'”
并非所有XSS攻击都包含,具体取决于插入数据的位置


不,这还不够。请记住,XSS不仅仅是HTML中的不可信数据,您还可以在JavaScript和CSS中找到它。考虑一种情况,例如“var myVar=[input];”可以使用[input]值进行各种恶意操作,而无需使用尖括号。XSS备忘单中还有更多示例:

您在标签中提到了ASP.NET;您想要查看的是
[AntiXSS库][1]
。抓住这个并使用适当的输出编码:

Encoder.CssEncode()
Encoder.HtmlEncode()
Encoder.HtmlAttributeEncode()
Encoder.JavaScriptEncode()

等等。绝对没有理由尝试在.NET中进行自己的字符替换。

没有。以下是几个示例,其中转义
&
是不够的:

示例1:

<a href="{{myUrl}}">
<script>var page = {{myVar}};</script>
示例2:

<a href="{{myUrl}}">
<script>var page = {{myVar}};</script>

请参阅以了解防止这些攻击的方法。

在后一种情况下,使用URL编码,而不是HTML实体;在这种情况下,
将变成刚好
%22
。您不能只对整个URL进行URL编码,因为这也会破坏查询字符串。啊,所以转义”将阻止简单的响应。写入(输入)vulns,但如果我有一个现有的脚本块或使用直接用户输入构建的DOM元素,其中运行输入不需要<和>,我仍然容易受到攻击。在本例中,需要HTML输出编码,或者更具体地说,HTML属性输出编码。URL编码用于附加到URL的字符串,如查询字符串或其他字符串erwise您的href属性最终看起来像“http%3a%2f%2fwww”。在这样的示例中,AntiXSS库中的Encoder.htmlAttributeNCode才是您真正想要的。感谢您的响应和链接!@michaelsnowden我在示例中使用了{}语法,但任何模板库都可能容易受到这些攻击