我尝试让我的单页应用更加安全。在代码中,我发布请求返回用户信息。
user: {
city: "USA"
company: "1"
country: "Boston"
email: "mouse@test.ru"
favorList: "17 8 7 1"
id: "46"
name: "Alex"
password: "d89885b09d30673f2a8321eeb1f8ab3bb3p6f"
phone: "+7(000)000-09-00"
role: "user"
settings: "false true"
viewingList: "8 17 143 138"
}
这个对象的一些用户我用于ng-show / ng-if / ng-hide / ng-switch管理模板上的html。例如:<div ng-if="user.role == 'administrator'"
或
<div ng-if="user.role == 'user'"
但是用户可以在Chrome开发工具中打开并重新键入用户角色,然后转到模板并获取管理员仪式。
我如何解决这个问题?
答案 0 :(得分:2)
无法阻止用户在浏览器中修改dom。
您将公开此类属性的唯一原因是&#34;用户角色&#34;对客户端来说,如果你用它来改变美学上的东西。修改它应该不会影响他们的帐户行为。
此类数据应仅存储在服务器端的会话和/或数据库中
答案 1 :(得分:2)
Javascript是客户端脚本的定义,是一种保险语言。 可以通过注入js或由用户直接在浏览器中更改对象和函数。
因此,不依赖于j来保护您的应用程序非常重要。通常,应用程序的js / angular层只提供一个花哨的用户界面,它可以包含一些简单的业务逻辑或检查,但只是为了让用户更平滑或更快(如果你可以在发送之前检查一个电子邮件地址客户端)服务器的地址,你应该)。但是,这个UI&#39;会谈&#39;使用服务器端代码,您应该有另一个安全层,以防止用户未经授权的操作。
简而言之,为您的用户界面使用js并使用客户端脚本的速度对您有利,但请确保使用自己的安全层封装服务器端调用以防止未经授权的调用。
无法防止篡改js中的数据,因此请确保篡改不会泄露信息或更改用户无权访问的数据。
此致
了Sem