[英]Is escaping < and > sufficient to block XSS attacks?
我確信這個問題的答案是否定的,但我似乎找不到簡單地將<
和>
轉換為<
和>
不會完全阻止反射和持久的XSS。
我不是在談論CSRF。
如果這不能阻止XSS,你能提供一個如何繞過這種防御的例子嗎?
在屬性中使用不受信任的字符串(引用"
)時,您需要轉義為"
as "
。
否則你可以輕松注入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.