我正在尝试阻止XSS攻击,所以我使用html agility pack来制作我的白名单和Microsoft Anti-Cross Site Scripting Library来处理剩下的工作。
现在我正在考虑编码所有html hrefs。我得到一大串可以包含href的html代码。如果您对MS库有一个URL编码,但如果您对整个URl进行编码,则无法使用它。因此,在示例中,它们只是编码查询字符串
UrlEncode不受信任的输入用于a URL(例如a中的值) 查询字符串)单击 这里!
http://msdn.microsoft.com/en-us/library/aa973813.aspx
所以现在我的问题是我如何通过href解析并找到查询字符串。它总是只是“?”然后查询字符串或者它是否有空格并以不同的方式编写?
修改
我不会写这个网址,而是会分享这些网址的用户。所以这就是为什么我需要一种方法来确保我获得所有查询字符串而不仅仅是有效格式的字符串。如果它可以工作无效格式我也必须抓住这些。黑客不会关心它是否是有效的格式,只要它仍然能够做到他们想要的。
答案 0 :(得分:5)
我相信总是 之后的部分?但你可以很容易地使用Uri类:
Uri uri = new Uri("http://foo.com/page.html?query");
string query = uri.Query;
那将包括?本身。当然,您也可以获取其他位,这可能很方便。
答案 1 :(得分:0)
使用加密查询字符串怎么样?在你的代码中你可以解密它 或者您可以使用不需要的Request.PathInfo吗?在查询字符串
中答案 2 :(得分:0)
这是W3C reference解决带有查询字符串的URI的组成,其中部分说明:
问号(“?”,ASCII 3F hex) 用于划定边界 在可查询对象的URI之间, 和一组用来表达的词 查询该对象。