我有一个名为default.aspx的页面。
当用户浏览此页面时,如下所示 -
www.mysite.com/default.aspx/?&#&emp=1']];alert(2);[['1
会弹出警报。为了防止这种攻击,我想获取在浏览器中键入的整个字符串,但无法获取。
[注意:正如您所看到的,问号后面的文本不一定是查询字符串。这里是随机字符。如果它是一个查询字符串,我可以在代码中获取它。]
protected void Page_Load(object sender, EventArgs e)
{
string query = HttpContext.Current.Request.ServerVariables["URL"] +
HttpContext.Current.Request.ServerVariables["PATH_INFO"] +
HttpContext.Current.Request.ServerVariables["QUERY_STRING"];
}
在“query”中,我只获得/default.aspx/default.aspx/&
我该如何获得在地址栏中键入的整个字符串。
更新:
HttpContext.Current.Request.Url.AbsoluteUri
返回?&
HttpContext.Current.Request.Url.ToString()
返回 http://mysite/default.aspx/?&
这不是那个问题的重复,因为我的问题有一些不是查询字符串的字符,并且那个问题中的解决方法并没有解决我的问题。谢谢。
解决方案: 可能会帮助到有相似问题的人。 解决方法是在客户端处理。我从未知道#后面的部分不会发送到服务器端。 AmateurProgrammer和shadowed提供了非常棒的建议。谢谢。
Request.Url
。 - user2864740Request.Url
吗? - IrshadHttpContext.Current.Request.Url.AbsoluteUri
的东西? - Joachim Isaksson&
后面的部分在客户端作为JavaScript执行,那么它怎么可能成为URL的一部分呢?我的建议是在客户端检测这个字符串并自行处理。 - Bhushan Shah