【发布时间】:2013-05-26 14:14:11
【问题描述】:
我目前正在阅读 .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>
我尝试了几种不同的方式
- 从查询字符串传递@ViewBag
- 将 viewbag 打印放在现有脚本代码中(这就是本书的内容)
- 将 %20 替换为实际空格
- 使用jquery将html替换为ViewBag.test:
$('#inject_here').html('@ViewBag.test');
我尝试的任何方法都不会执行此代码(我猜这是件好事?)。现在我知道这本书不会有一部分专门讨论一开始就不起作用的东西,所以问题一定出在我的头上。我只是不知道它是什么。有人有什么想法吗?
【问题讨论】:
标签: javascript asp.net-mvc-4 xss