2013-01-12 91 views
3

我是.net世界的新手,请耐心等待。我需要在控制器(带有剃须刀引擎的MVC4应用程序)视图中显示用户列表。MVC 4在前端隐藏客户端ID的最佳实践

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

我可以通过几种方式做到这一点,例如:在链接中,我可以放一个数据标识,然后在服务器端使用此标识从数据库中检索更多信息。我担心的是,客户端可以简单地从HTML源代码中查看这些id,并使用此id信息查看类型控制器url。我也不喜欢隐藏的领域。

所以我的问题是什么是其他不同的方式或最佳实践来实现这样的功能?

+0

谢谢大家的回答。他们以某种方式帮助了他们。 –

回答

3

以您描述的方式使用密钥对于在应用程序中导航相当常见。

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

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

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

+0

我同意检查用户上下文的方法。感谢您的回答。 –

0

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

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

+0

的确如此,但通常会有人担心新ID可以被轻易猜出。使用GUID而不是整数不能解决控制对对象的授权访问的问题,但它确实使得难以猜测未看见的对象的ID。 – Richard

相关问题