Asp.net mvc 4 MVC4中的防篡改查询字符串url值

Asp.net mvc 4 MVC4中的防篡改查询字符串url值,asp.net-mvc-4,c#-4.0,query-string,Asp.net Mvc 4,C# 4.0,Query String,在我的mvc应用程序中,我有一个显示查询字符串值的页面 ~/Device/Devices?pageNumber=1&sortOrder=2&sortBy=DeviceName&recordsPerPage=50&refresh=1 正如我们所看到的,用户可以很容易地篡改这些值,并可能造成伤害。代码是这样的 @if (Model.HasPreviousPage) { <a href="@Url.Action("Devices", new { pageNumber = 1, sortO

在我的mvc应用程序中,我有一个显示查询字符串值的页面 ~/Device/Devices?pageNumber=1&sortOrder=2&sortBy=DeviceName&recordsPerPage=50&refresh=1

正如我们所看到的,用户可以很容易地篡改这些值,并可能造成伤害。代码是这样的

@if (Model.HasPreviousPage)  { 

 <a href="@Url.Action("Devices", new { pageNumber = 1, sortOrder = ViewBag.SortOrder, sortBy = ViewBag.SortBy, filterBy = ViewBag.FilterBy, ViewBag.FilterValue, recordsPerPage = pageInfo.RecordsPerPage }) ">
这里,来自用户的输入字段已经被编码,来自用户的filtervalues被解码如下

filterValue=HttpUtility.UrlDecodeRequest.Form[SearchString]


所以,现在我的问题是如何使我的url防篡改

你不能。用户始终可以篡改查询字符串


您必须围绕查询字符串不安全这一事实来设计应用程序。

至少这些值是不合理的,但当我通过编辑url将页码设置为-1112时,应用程序ui正在崩溃。我至少可以防止UI崩溃吗?我只会在无效的查询字符串上抛出一个异常。如果用户修改了它,那么他们就要责怪自己。只需确保不会对服务器造成损害,例如显示或更新错误的数据。