我正在ASP.net中实现URL重写,我的URLs给我带来了一系列问题。
URL是从部门和类别的数据库生成的。我希望员工能够向数据库添加任何适当的特殊字符而不会破坏网站。
我在构造URL之前对数据进行编码。
有几个问题:
1. IIS在到达.net之前解码URL,使得无法正确解析任何包含“/”的内容。 2. ASP.net对URL感到困惑,在某些页面中“~”无用。 3. 我从内置测试服务器迁移到了本地IIS服务器(XP机器),任何包含编码的&(%26)的URL都会给我“Bad Request”错误。 4. UrlEncode会保留某些破坏性字符,例如'。'
我确实在这个主题上有另外两篇相关文章,但当时我只看到了小问题,没有看到上游的大问题。我已经找到了一些注册表技巧来解决“Bad Request”问题,但我将要部署到共享托管环境,这使得它无用。我也知道这是某些安全问题的解决方法,所以我不想绕过它而不知道我打开了什么样的问题。
与其试图强制.net传递原始url,或者覆盖IIS设置,我更愿意首先创建真正安全的URL。
我要注意的是,我已经尝试过AntiXss.URLEncode,HttpUtility.URLEncode,URI.EscapeDataString。我甚至尝试了愚蠢的事情,比如双重URLEncodng。是否有一个能够满足我的需求的实用程序,或者我真的需要自己编写。我甚至考虑做一些hacky的事情,比如用一个不寻常的字符串替换%。最终结果应该至少是可读的,这也是使用URL重写的目的。
抱歉发了这么长的帖子-我只是想确保我包括了所有必要的细节。我似乎找不到任何相关信息,而且它似乎会是一个普遍的问题-所以也许我错过了什么大问题。感谢您的帮助和耐心解释!
URL是从部门和类别的数据库生成的。我希望员工能够向数据库添加任何适当的特殊字符而不会破坏网站。
我在构造URL之前对数据进行编码。
有几个问题:
1. IIS在到达.net之前解码URL,使得无法正确解析任何包含“/”的内容。 2. ASP.net对URL感到困惑,在某些页面中“~”无用。 3. 我从内置测试服务器迁移到了本地IIS服务器(XP机器),任何包含编码的&(%26)的URL都会给我“Bad Request”错误。 4. UrlEncode会保留某些破坏性字符,例如'。'
我确实在这个主题上有另外两篇相关文章,但当时我只看到了小问题,没有看到上游的大问题。我已经找到了一些注册表技巧来解决“Bad Request”问题,但我将要部署到共享托管环境,这使得它无用。我也知道这是某些安全问题的解决方法,所以我不想绕过它而不知道我打开了什么样的问题。
与其试图强制.net传递原始url,或者覆盖IIS设置,我更愿意首先创建真正安全的URL。
我要注意的是,我已经尝试过AntiXss.URLEncode,HttpUtility.URLEncode,URI.EscapeDataString。我甚至尝试了愚蠢的事情,比如双重URLEncodng。是否有一个能够满足我的需求的实用程序,或者我真的需要自己编写。我甚至考虑做一些hacky的事情,比如用一个不寻常的字符串替换%。最终结果应该至少是可读的,这也是使用URL重写的目的。
抱歉发了这么长的帖子-我只是想确保我包括了所有必要的细节。我似乎找不到任何相关信息,而且它似乎会是一个普遍的问题-所以也许我错过了什么大问题。感谢您的帮助和耐心解释!