我已经实现了搜索功能,以查找带有(部分)代码作为搜索条件的数据,其中包括a。 (点)值,因此应该可以在搜索条件中包含它。
考虑网址:
myhost/api/search/88.
开箱即用,没有做任何额外的事情,这将导致404错误。虽然毫不奇怪,如果我删除点,网址也能正常工作。
我在StackOverflow上找到了this作为可能的答案:
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
问题
这就是诀窍,但我不确定这是否是最佳解决方案。我的意思是,如果它是无害的,那么有一个放松的url机制是好的,但我不想让其他字符有问题,这会导致比我现在想要的点更多的损坏。也许我正在为这个修复打开地狱之门...
我可以相信这个解决方案还是有更安全的替代方案?
答案 0 :(得分:1)
如果传递给URL的值是可以由用户输入的搜索词,我不会将我的路由系统配置为处理这些值,因为它们是不可预测的。
您应该对字符串进行编码并将其传递给查询字符串或将其发布并将其绑定到WebAPI中的对象。
就打开地狱之门而言,我认为你应该考虑points raised in this question。如果你必须设置类似relaxedUrlToFileSystemMapping
的东西,这似乎放松了一些ASP.NET MVC的默认安全系统,我倾向于倾向于不依赖于这样的变化的解决方案。