[英]Preventing / understanding xss with javascript encoding
我目前正在阅读.net MVC,并且刚刚进入本书的安全性一章。 我对xss有所了解,而且我不信任任何用户输入而不先对其进行净化(通常使用html编码或什至是php的strip_tags之类的东西)。 到目前为止,我还不熟悉用于保护的Javascript编码字符串。 本书中的一个示例让用户输入了类似以下的字符串:
\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>
我尝试过几种不同的方式
我没有尝试执行此代码(我想这是好事吗?)。 现在,我知道本书中不会有一部分内容专门针对最初没有用的内容,因此问题一定在我身上。 我只是不知道那是什么。 有人有想法么?
asp.net MVC会尝试为您解决此问题。 它会自动编码输出。 您必须不使用html编码就打印出字符串。
@Html.Raw(ViewBag.test)
在某些地方,您最终会在应用程序中执行此操作。 理想情况下,您将具有渲染模型的模板。 但是,在某些情况下,您将拥有动态的HTML部分,需要按原样打印。 在这种情况下,您将使用Html.Raw
并只需要注意您必须验证内容的完整性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.