MVC 4隐藏前端客户端ID的最佳实践

时间:2013-01-12 03:44:42

标签: .net asp.net-mvc-4

我是.net世界的新手所以请耐心等待。我需要在控制器(带有剃刀引擎的MVC4应用程序)的视图中显示用户列表。

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

我可以通过多种方式实现这一点,例如:在链接中我可以放置一个数据ID,然后在服务器端使用此ID从数据库中检索更多信息。我担心的是客户端只能从HTML源代码中看到这些id,并输入带有此id信息的控制器URL。我也不喜欢隐藏的领域。

所以我的问题是实现这些功能的其他方法或最佳实践是什么?

2 个答案:

答案 0 :(得分:3)

以您描述的方式使用键在导航应用程序时非常常见。

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

我可以想象的唯一另一种方式是允许UI通过相似的必要上下文信息回到服务器端,这可能是为发送到客户端的每个关键数据生成代理guid字段,使用该代理发送回服务器端,将guid转换回真正的密钥,然后开展业务。 (GUID本身并不像下注那样合理。)但是,我绝不会做这样的事情......

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

答案 1 :(得分:0)

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

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