在我看来,我有以下片段:
<div id="recommendFooter">
<% string urlRecommend = Url.Action("RecommendProduct", "Products", new { url = ViewContext.RequestContext.HttpContext.Request.Url.ToString() }); %>
<div>
<a href="<%= urlRecommend %>">This product is awesome!</a>
</div>
</div>它应该像这样输出Html:
<div id="recommendFooter">
<div>
<a href="http://www.mysite.com/Products/RecommendProduct?url=http://www.mysite.com/products/productbykey/20" >This product is awesome!</a>
</div>
</div>如果我能对ViewContext.RequestContext.HttpContext.Request.Url.ToString().或值urlRecommend进行Html编码的话,我是不会接受的。
我已经启用了请求验证,但是对于这个部分,让我们假设我没有启用它。我可以而且应该在这里进行Html编码吗?
编辑1
我想这就是古法的意思:
<div id="recommendFooter">
<% string urlRecommend = Url.Action("RecommendProduct", "Products", new { url = Server.UrlEncode( ViewContext.RequestContext.HttpContext.Request.Url.ToString() )});
string urlRecommendXssSave = Server.HtmlEncode(urlRecommend );
%>
<div>
<a href="<%= urlRecommendXssSave %>">This product is awesome!</a>
</div>
</div>发布于 2012-01-31 09:34:23
该值应该是HTML编码的,因为它在HTML代码中的一个属性中,但这并没有什么区别,因为没有字符需要转义。
您需要做的是对URL中查询字符串中的值进行URL编码。
链接的HTML代码应该是这样结束的:
<a href="http://www.mysite.com/Products/RecommendProduct?url=http%3a%2f%2fhttp%3a%2f%2fwww.mysite.com%2fproducts%2fproductbykey%2f20">This product is awesome!</a>(注意:我将重复的http://保存在您的问题中的值中,您可能也应该修复这个问题。)
https://stackoverflow.com/questions/9077078
复制相似问题