【问题标题】:How to get QueryString from a href?如何从 href 中获取 QueryString?
【发布时间】:2010-06-19 20:13:23
【问题描述】:

我正在尝试阻止 XSS 攻击,因此我使用 html 敏捷包来创建我的白名单,并使用 Microsoft 反跨站点脚本库来处理其余部分。

现在我正在研究对所有 html href 进行编码。我得到一大串可以包含h​​refs的html代码。根据 MS 库,它们有一个 URL 编码,但如果你对整个 URl 进行编码,那么它就不能使用。所以在示例中,他们只是对查询字符串进行编码

UrlEncode 不可信的输入用于 URL(例如 查询字符串)单击 这里!

http://msdn.microsoft.com/en-us/library/aa973813.aspx

所以现在我的问题是如何通过 href 解析并找到查询字符串。总是只是“?”那么查询字符串还是可以有空格并以不同的方式编写?

编辑

这些网址不是我写的,而是分享它们的用户写的。所以这就是为什么我需要一种方法来确保我获得所有查询字符串,而不仅仅是有效格式的查询字符串。如果它可以工作无效格式,我也必须抓住这些。黑客不会关心它是否是有效的格式,只要它仍然可以做他们想要的。

【问题讨论】:

    标签: c# asp.net security query-string


    【解决方案1】:

    我相信它总是在 ? 之后的部分但是您可以轻松地为此使用 Uri 类:

    Uri uri = new Uri("http://foo.com/page.html?query");
    string query = uri.Query;
    

    这将包括 ?本身。当然,您也可以获取其他位,这可能很方便。

    【讨论】:

    • 嗯。我会看的。所以基本上使用正则表达式或其他任何方法来查找所有 url,然后 foreach 循环它们并将它们放在这个 url 中,然后使用它。
    • @chobo2:老实说,我不建议使用正则表达式解析 HTML。但是无论您如何找到这些 URL,我都会这样做。
    【解决方案2】:

    如何使用加密的查询字符串并在您的代码中解密它
    或者你可以使用Request.PathInfo 让你不需要?在查询字符串中

    【讨论】:

    • 我并没有真正使用查询字符串。这是用户可能放入并与其他用户共享的内容。所以他们可以在查询字符串中放入不好的东西,所以我想对其进行编码。
    【解决方案3】:

    这是一个W3C reference 使用查询字符串解决 URI 的组合,其中部分内容是:

    问号(“?”,ASCII 3F hex) 用于划定边界 在可查询对象的 URI 之间, 和一组用来表达 查询该对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 2019-01-18
      • 1970-01-01
      相关资源
      最近更新 更多