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

标签 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 提出的很棒的建议和阴影。谢谢

最佳答案

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

关于c# - 从 URL 获取整个字符串,包括非查询字符串 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35147253/

相关文章:

c# - ASP.NET MVC 自定义错误

c# - 在 .NET 运行时解析 JSON

c# - 如何在 xamarin.forms 中绑定(bind)标签的 Horizo​​ntalOptions 属性

c# - RadGrid - 每列批量编辑多个编辑模板

c# - ASP.NET MVC 中 <% %> 和 <%= %> 有什么区别

c# - SpecFlow 在查找程序集时抛出错误,但这不是我的 SpecFlow 项目?

C#单元测试数精度题

c# - 如何在 'InputBindings'元素中正确执行 'Border'?

c# - ASP.NET:在回发不同数据后动态添加控件

c# - 将应用程序缓存与 session 数据相结合时的信任边界违规