从URL中获取整个字符串,包括非查询字符串C#

时间:2016-02-02 07:16:13

标签: c# asp.net

我有一个页面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"];
}

在“查询”中,我只获得/default.aspx/default.aspx/&

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

更新:

HttpContext.Current.Request.Url.AbsoluteUri提供?& HttpContext.Current.Request.Url.ToString()提供http://mysite/default.aspx/?&

这不是该问题的重复,因为我的问题有字符,不是查询字符串,而且该问题中的解决方案也没有解决我的问题。谢谢。

解: 可能会帮助那些有类似顾虑的人。 修复是在客户端处理此问题。我从来不知道#之后的部分没有发送到服务器端。 AmateurProgrammer&阴影。谢谢

1 个答案:

答案 0 :(得分:3)

#之后的部分(包括#)是URI片段,它不会通过标准发送到服务器。它应该被浏览器使用,如果有一个id等于片段浏览器的元素将滚动到它。 如今,它还用作将参数传递给页面上的JavaScript的方法。 可以通过JavaScript发送服务器来间接获取片段,但只能在页面加载后才能获得片段。