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

本文关键字:字符串 包括非 查询 URL 获取 | 更新日期: 2023-09-27 18:32:53

我有一个默认页面.aspx
当用户以 - 身份浏览此页面时 -

www.mysite.com/default.aspx/?&#&emp=1']];警报(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/?&

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

溶液:可能会帮助有类似担忧的人。解决方法是在客户端处理此问题。我从来不知道#之后的部分没有发送到服务器端。业余程序员的真棒建议和阴影。谢谢

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

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