我正在閱讀.net MVC,並剛剛達到本書的安全性章節。我已經瞭解了xss,並且我從不相信任何用戶輸入,而不必首先進行消毒(通常使用html編碼,甚至像php的strip_tags)。直到這一點,我不熟悉Javascript編碼字符串的保護。用JavaScript編碼防止/理解xss
\x3cscript\x3e%20alert(\x27test\x27)\x3c/script\x3e
所以很自然,當我得知我想測試一下新的東西:一書中的例子,像串了用戶的通行證。我創造了這個:
public ActionResult Index()
{
ViewBag.test = "\x3cscript\x3e%20alert(\x27test\x27)\x3c/script\x3e";
return View("index");
}
,並打印出的頁面上的測試字符串此視圖代碼:
@ViewBag.test
但是,我不能得到這個警告框,以顯示在所有。當我在頁面上查看源代碼,我得到
<script>%20alert('test')</script>
我試着用它打了幾個不同的方式
- 從查詢字符串
- 薪火@ViewBag把viewbag打印的內現有的腳本代碼(這是本書怎麼過的)
- 與實際空間
- 使用jQuery與ViewBag.test取代HTML更換%20:
$('#inject_here')。html('@ ViewBag.test');
沒有我嘗試執行此代碼(我猜這是一件好事?)。現在我知道這本書不會有一部分是專門針對那些根本不起作用的,所以問題必須在我的最後。我只是不知道它是什麼。有人有主意嗎?
你說得對。原來這本書的這部分只是展示了xss的概念性例子,而不是工作代碼。猜猜我跳過那部分:/ – CountMurphy