我们目前正在处理一个ASP.NET MVC项目中的一些XSS问题.我发现了两个问题 - 第一个问题与我们的请求验证模式有关.攻击者现在可以使用此安全漏洞删除数据库中的一些不良内容.
第二个问题是我们如何显示这个内容,我们使用Html.DisplayTextFor方法,它似乎"破碎".
只需创建一个新的MVC 3 WebApp,将其放在HomeController中:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "<SCRIPT/XSS SRC=\"htpp://ha.ckers.org/css.js\">";
User foo = new User();
foo.Name = "<SCRIPT/XSS SRC=\"htpp://ha.ckers.org/css.js\">";
return View(bla);
}
public ActionResult About()
{
return View();
}
}
public class User
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
风景:
@Html.TextBoxFor(m => m.Name) <br/> ||| <-- will be encoded
@Html.Encode(ViewBag.Message)<br/> ||| <-- will be double encoded
@Model.Name <br/> ||| <-- will be encoded
@Html.DisplayTextFor(m => m.Name) <-- no encoding
<br/> |||
Run Code Online (Sandbox Code Playgroud)
DisplayTextFor的输出将是整个字符串 <script xss="" src="htpp://ha.ckers.org/css.js">
问题是:错误,功能还是我使用它错了?
归档时间: |
|
查看次数: |
4077 次 |
最近记录: |