【发布时间】:2016-02-05 12:23:27
【问题描述】:
全部:
我正在使用 C# MVC4 处理的项目遇到问题
在项目中,我接受一个用户的URL和其他参数,然后做一些处理,并将处理的结果发送到由用户提供的URL用户。
使用以下代码发送结果:
var context = HttpContext.Current;
context.Response.Write("<html><head>");
context.Response.Write("</head><body>");
context.Response.Write(string.Format("<form name=\"myform\" method=\"post\" action=\"{0}\" >", postUrl));
context.Response.Write("</form>");
context.Response.Write("<script type=\"text/javascript\">document.myform.submit();</script></body></html>");
context.Response.Write("</body>");
context.Response.Flush();
context.Response.Clear();
context.ApplicationInstance.CompleteRequest();
每当用户尝试像传递 javascript%3aalert('xss')%2f%2f 的 url 值这样的 XSS 时,JavaScript 就会运行并显示弹出窗口。
我已经尝试 Antixss.HtmlEncode() 在将 URL 传递到 string.Format 之前对其进行编码,但仍然无法正常工作。我也尝试过 Antixss.UrlEncode(),但这会导致错误,因为表单没有提交到 URL。
请帮帮我,我有什么遗漏吗?我还能做什么?
提前致谢。
【问题讨论】:
-
将元素对象附加到 dom 并使用用户提供的值设置这些对象的属性,这会避开所有插值攻击...将用户给定的值作为 JSON 发送。
-
对不起,我没让你好。请提供示例代码。
-
我没有 c# 经验,但这似乎是一个很好的解决方案:weblogs.asp.net/jongalloway/…
标签: javascript c# asp.net-mvc-4 xss antixsslibrary