Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net MVC 4隐藏客户端id的最佳实践&x27;它在前端_.net_Asp.net Mvc 4 - Fatal编程技术网

.net MVC 4隐藏客户端id的最佳实践&x27;它在前端

.net MVC 4隐藏客户端id的最佳实践&x27;它在前端,.net,asp.net-mvc-4,.net,Asp.net Mvc 4,我不熟悉.net世界,所以请耐心等待。我需要在控制器的视图中显示用户列表(带有razor引擎的MVC4应用程序) 当用户显示在视图中时,客户端可以单击链接并在单独的视图中获取特定的用户信息。我想实现这一点,但想对用户隐藏任何特定的客户端Id。客户端Id将用于服务器端检索客户端信息 我可以通过几种方式来实现这一点,例如:在链接中,我可以放置一个数据Id,然后在服务器端使用该Id从数据库中检索更多信息。我关心的是,客户机可以简单地从HTML源代码中看到这些id,并使用此id信息键入控制器url。我也

我不熟悉.net世界,所以请耐心等待。我需要在控制器的视图中显示用户列表(带有razor引擎的MVC4应用程序)

当用户显示在视图中时,客户端可以单击链接并在单独的视图中获取特定的用户信息。我想实现这一点,但想对用户隐藏任何特定的客户端Id。客户端Id将用于服务器端检索客户端信息

我可以通过几种方式来实现这一点,例如:在链接中,我可以放置一个数据Id,然后在服务器端使用该Id从数据库中检索更多信息。我关心的是,客户机可以简单地从HTML源代码中看到这些id,并使用此id信息键入控制器url。我也不喜欢隐藏字段


所以我的问题是,还有什么其他不同的方法或最佳实践来实现这些功能

以您描述的方式使用键在应用程序中导航是相当常见的

如果您担心安全性(某人能够将发现的或猜测的密钥传递给控制器上的某个操作,并看到一些他们不应该看到的信息),则在从该操作返回信息之前,在控制器/操作级别验证用户上下文,如果您认为不合适,则决定不返回安全信息

我能想象的唯一另一种方式是,允许用户界面通过必要的上下文信息与服务器端对话,可能是为发送到客户端的每个关键数据段生成代理guid字段,使用该代理将其发送回服务器端,将guid转换回真正的密钥,然后继续您的业务。(从本质上讲,guid不会像int那样容易猜测。)然而,我永远不会做这样的事情


想一想你试图解决的问题,并确保它保证了这种复杂性。

同意以上所有内容-如果你提供了一个用户界面,可以根据ID查看详细信息,你不能隐藏该ID-你必须将其发回。它可能不是实际的ID(即GUID),但这与此无关。您正在客户端提供一个ID,任何人都可以使用该ID根据该ID检索详细信息


问自己这样一个问题:“我想提供一个电话簿,但不显示电话号码。我可以这样做吗?”

谢谢大家的回答。我同意检查用户上下文的方法。谢谢你的回答。没错,但是经常有人担心猜测新ID的难易程度。使用guid而不是整数并不能解决控制对对象的授权访问的问题,但它确实使猜测不可见对象的id变得更加困难。