c# - MVC 网络 API : dot in URL parameter value

标签 c# asp.net-mvc asp.net-mvc-4 url asp.net-web-api2

我已经实现了搜索功能来查找以(部分)代码作为搜索条件的数据,其中包括一个 . (点)在值中,因此应该可以将其包含在搜索条件中。

考虑网址:

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/

相关文章:

.net - 创建需要类型信息的 MVC3 ValueProviderFactories?

javascript - 如何将名字姓氏放在文本框的顶部,如图所示

c# - 如何将 C# DateTime 转换为 AngularJs

c# - HTTP 错误 404.15 - 未找到

c# - 如何在 MVC 中读取 DataSourceRequest 以进行过滤和排序

c# - 在 WPF 中从串口接收数据时做一些事情

c# - 为方法抛出的所有异常生成代码

c# - 依赖注入(inject)会导致额外的内存消耗吗?

c# - 我无法使用 wpf 设置 Web 文本框值

c# - 以编程方式确定系统是否具有可切换图形