28

当 URL 的任何部分以“。”结尾时,我们的应用程序会失败。在里面'; 由于功能要求,我们无法避免这种情况。建议的解决方案是在 web.config 文件中打开 RelaxUrlToFileSystemMapping。我们想知道这种方法是否存在任何潜在的安全风险。

失败 URL 的格式:http ://server.com/path1/krishnakk./path2

它返回 404 错误。

4

2 回答 2

15

即使这个问题已有七个月之久,这里有一个答案,以防其他人遇到这样的情况。

关于问题的安全部分,默认情况下relaxedUrlToFileSystemMapping设置为 false,并且 ASP .NET 假定 URL 的路径部分是有效的 NTFS 文件路径。如果您通过设置relaxedUrlToFileSystemMapping为 true 来禁用此功能,那么您可能会打开您的站点以受到攻击,因为您正在禁用 ASP .NET 提供的默认保护。

如果您绝对需要设置relaxedUrlToFileSystemMapping为 true,您还应该确保在应用程序要求的约束范围内验证所有 URL

于 2013-02-21T05:34:15.420 回答
1

聚会有点晚了,但我想我会添加对我有用的东西。

我今天刚刚遇到这个问题,但幸运的是能够解决它。解决方案是将包含点(句点)的值作为查询字符串的一部分而不是 URL 传递。您失去了没有查询字符串的干净 URI 的优雅,但它可以在不降低安全性或更改任何设置的情况下工作。

例如http://localhost/Home/hi.how:areyou将失败,因为它包含两个非法字符作为 URI 的一部分,即点和冒号。但是http://localhost/Home/id=hi.how:areyou将完美运行。

对 Scott Hanselman 的支持,一如既往,他将在博客上发布几乎所有疯狂的场景和在进行 .NET 开发时可能遇到的问题。

于 2018-08-01T18:03:34.990 回答