簡體   English   中英

逃避<和>是否足以阻止XSS攻擊?

[英]Is escaping < and > sufficient to block XSS attacks?

我確信這個問題的答案是否定的,但我似乎找不到簡單地將<>轉換為&lt; &gt; 不會完全阻止反射和持久的XSS。

我不是在談論CSRF。

如果這不能阻止XSS,你能提供一個如何繞過這種防御的例子嗎?

在屬性中使用不受信任的字符串(引用" )時,您需要轉義為" as &quot

否則你可以輕松注入javascript。 例如, <a href="{{str}}"> str就是" onmouseover='something-evil'"

不。以下是一些逃避<>'"&不夠的例子:

例1:

<a href="{{myUrl}}">

XSS攻擊:

myUrl = "javascript:alert(1)"

例2:

<script>var page = {{myVar}};</script>

XSS攻擊:

myVar = "1;alert(1)"

有關防止這些攻擊的方法,請參閱https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

不,這還不夠。 請記住,XSS不僅僅是關於HTML中不受信任的數據,您還可以在JavaScript和CSS中找到它。 考慮一下諸如“var myVar = [input];”之類的情況。 你可以用這個[輸入]值做各種各樣的惡意事情而不需要靠近尖括號。 在XSS備忘單中有更多的例子: http//ha.ckers.org/xss.html

你在標簽中提到過ASP.NET; 你想看的是[AntiXSS library][1] 抓住這個並使用適當的輸出編碼:

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

等等。完全沒有理由嘗試在.NET中進行自己的字符替換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM