我已经实现了搜索功能来查找以(部分)代码作为搜索条件的数据,其中包括一个 . (点)在值中,因此应该可以将其包含在搜索条件中。
考虑网址:
myhost/api/search/88.
开箱即用,无需执行任何额外操作,这将导致 404 错误。然而,毫不奇怪,如果我删除点,该 url 工作正常。
我找到了 this作为 StackOverflow 上的可能答案:
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
问题
这确实有效,但我不确定这是否是最佳解决方案。我的意思是,有一个宽松的 url 机制是好的,如果它在其他方面是无害的,但我不想遇到其他会造成比我现在想要的点更大的损害的字符。也许我只是为了这个修复打开了通往 hell 的大门......
我可以信任这个解决方案还是有更安全的替代方案?
最佳答案
如果传递到 URL 的值是用户可以输入的搜索词,我不会配置我的路由系统来处理这些值,因为它们是不可预测的。
您应该对字符串进行编码并将其通过查询字符串传递,或者将其发布并将其绑定(bind)到 WebAPI 中的对象。
就打开 hell 之门而言,我认为您应该考虑 points raised in this question .如果您必须设置类似 relaxedUrlToFileSystemMapping
的东西,这似乎可以放松 ASP.NET MVC 的一些默认安全系统,我倾向于倾向于不依赖于更改的解决方案像这样。
关于c# - MVC 网络 API : dot in URL parameter value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361785/