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