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我在示例中使用了{}语法,但任何模板库都可能容易受到这些攻击