当 URL 的任何部分以“。”结尾时,我们的应用程序会失败。在里面'; 由于功能要求,我们无法避免这种情况。建议的解决方案是在 web.config 文件中打开 RelaxUrlToFileSystemMapping。我们想知道这种方法是否存在任何潜在的安全风险。
失败 URL 的格式:http ://server.com/path1/krishnakk./path2
它返回 404 错误。
当 URL 的任何部分以“。”结尾时,我们的应用程序会失败。在里面'; 由于功能要求,我们无法避免这种情况。建议的解决方案是在 web.config 文件中打开 RelaxUrlToFileSystemMapping。我们想知道这种方法是否存在任何潜在的安全风险。
失败 URL 的格式:http ://server.com/path1/krishnakk./path2
它返回 404 错误。
即使这个问题已有七个月之久,这里有一个答案,以防其他人遇到这样的情况。
关于问题的安全部分,默认情况下relaxedUrlToFileSystemMapping
设置为 false,并且 ASP .NET 假定 URL 的路径部分是有效的 NTFS 文件路径。如果您通过设置relaxedUrlToFileSystemMapping
为 true 来禁用此功能,那么您可能会打开您的站点以受到攻击,因为您正在禁用 ASP .NET 提供的默认保护。
如果您绝对需要设置relaxedUrlToFileSystemMapping
为 true,您还应该确保在应用程序要求的约束范围内验证所有 URL。
聚会有点晚了,但我想我会添加对我有用的东西。
我今天刚刚遇到这个问题,但幸运的是能够解决它。解决方案是将包含点(句点)的值作为查询字符串的一部分而不是 URL 传递。您失去了没有查询字符串的干净 URI 的优雅,但它可以在不降低安全性或更改任何设置的情况下工作。
例如http://localhost/Home/hi.how:areyou将失败,因为它包含两个非法字符作为 URI 的一部分,即点和冒号。但是http://localhost/Home/id=hi.how:areyou将完美运行。
对 Scott Hanselman 的支持,一如既往,他将在博客上发布几乎所有疯狂的场景和在进行 .NET 开发时可能遇到的问题。