1

我正在使用 Microsoft AntiXss 3.1 库。我们有许多使用非拉丁文字的国际网站。我们使用的是对 SEO 友好的 URL,因此我们在 URL 中包含非 ASCII 字符。

AntiXss.UrlEncode(至少在 3.1 中)将“国际字符”视为安全的,因此我们最终使用 IRI 而不是 URI:

http://somesite.com/ja-JP/applications/search/セキュリティ-b200009

HttpUtility.UrlEncode 为 URI (RFC3986) 生成正确的编码:

http://somesite.com/ja-JP/applications/search/%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3-b200009

但我宁愿遵循我们使用 AntiXss 库的标准。

我知道 AntiXss/WPL 4.0 已经发布(并且默认情况下似乎不再将国际字符视为安全),但它更改了 API 名称,因此我必须对我们的应用程序进行重大更改才能升级。

因此,我很乐意回答以下任何问题:

  • 如何哄 AntiXss 做一个与 Uri 标准兼容的 UrlEncode。
  • 一些保证,如果我们使用 AntiXss 库的 IRI 兼容输出(这是更可取的),我们不会设置自己与泰国(或其他任何地方)的旧代理服务器的兼容性问题 - 我们可以针对我们的浏览器矩阵进行测试,但不是我们与客户之间可能存在的所有中间网络设备)。
  • HttpUtility.UrlEncode 是我们应该使用的,它的安全性并不明显低于 AntiXss.UrlEncode。
  • 还有一些我没有考虑过的更好的解决方案。

谢谢

4

1 回答 1

0

它并没有改变太多的 API 名称(除了 LdapEncode),非常旧的名称仍然存在。实际上,方法名称与 3.5 中的相同,并且我没有删除旧的不推荐使用的方法,因此您应该能够加入并得到与 3.5 相同的警告。

如果你确实发现你在使用 4.0 时遇到了问题,那么请随时给我发消息 .. bdorrans@ 那个大坏博格域名 :)

于 2010-10-25T15:51:11.900 回答