关于asp.net:从URL中获取整个字符串,包括非查询字符串C#

Get entire string from URL including non query strings C#

本问题已经有最佳答案,请猛点这里访问。

我有一个页面default.aspx当用户将此页面浏览为-

www.mysite.com/default.aspx/?&;&;emp=1'];警报(2);['1

弹出警报。为了防止这种攻击,我希望在浏览器中键入整个字符串,但不能。

[注:如你所见,后面的文字?不必是查询字符串。这里是随机字符。如果它是一个查询字符串,我可以在代码中得到它。]

1
2
3
4
5
6
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"];
}

在"查询"中,我只得到/default.aspx/default.aspx/&

如何在地址栏中键入整个字符串。

更新:

HttpContext.Current.Request.Url.AbsoluteUri?&HttpContext.Current.Request.Url.ToString()给出http://mysite/default.aspx/?和;

这不是那个问题的副本,因为我的问题有字符,它们不是查询字符串,而且那个问题中的解决方案没有解决我的问题。谢谢您。

解决方案:可能会帮助有类似问题的人。解决方法是在客户端处理这个问题。我不知道之后的部分没有发送到服务器端。业余程序员提出的很棒的建议。谢谢你


#后的部分(包括#后)是uri片段,不按标准发送到服务器。它应该由浏览器使用,如果存在ID等于fragment browser的元素,则会滚动到它。现在,它也被用作一种将参数传递给页面上的javascript的方法。可以通过JavaScript间接地在服务器上获取片段,但只能在页面加载之后才能获得。