我们正在使用Asp.net MVC和AngularJS。我们希望将用户的ID放在页面上的一些静态数据中。不用担心我们已经使用[Authorize]属性保护了所有MVC API控制器。然而,将用户的ID放在页面上确实存在风险有人问我,我真的不能想到为什么不这样做,尽管我仍然认为这不是一个好主意。
答案 0 :(得分:1)
这不是安全风险,因为知道用户的ID不足以获取任何机密信息。要获取此信息,您必须确保用户已通过身份验证,例如使用authorize属性并在服务器端检查是否允许登录用户执行当前操作。
答案 1 :(得分:0)
在客户端页面上保留普通用户ID可能会导致劫持风险。您需要授权其执行操作的所有请求,以及他是这样做的人。例如,我有一个配置文件页面,现在我在页面中更改我的用户ID并更新名字,您的代码将无法捕获此劫持,因为已获得授权,他可以更新配置文件。如果您想保留Id,请始终生成GUID并将其映射到服务器端的用户ID和GUID。您可以在每次登录同一用户时生成GUID。它将避免GUID劫持,因为它一直在变化。
您可以将此映射保留在数据库中以保持持久性,并将其保存在静态变量中或以字典形式缓存,以便从GUID更快地映射到用户ID。
Dictionary<string,int> mapping = new Dictionary<string,int>;