保护SPA中的HTML元素

时间:2013-09-23 13:31:49

标签: javascript html security

我正在开发SPA,并想知道在页面上显示和隐藏HTML元素的最佳方法取决于用户凭据。

我有一个RestfulAPI后端和使用AngularJS的JS重客户端。在获得身份验证后,我希望页面的某些元素变得可见,而其他元素则隐藏,具体取决于用户有权执行的操作 现在,我在身份验证时从服务器发送一个JSON对象,其中包含权限列表(只是一个字符串数组),并根据权限数组中相应键的存在来显示/隐藏元素。
我的服务器端API是安全的,并确保在每个请求处理之前 - 用户授权 我认为,这将有助于我防止人们篡改我的HTML& JS和客户端上的启用元素,并尝试发出他们未被授权的请求。

作为另一个伪安全级别,我确保发送到客户端的权限名称只是实际权限的别名。当API尝试授权请求时,它所寻找的声明的命名方式不同 我的问题是 - 这是一种安全的方法吗? 那里有更好的方法吗?
我是否应该仅在授权中仅包含用户有权查看的HTML时才从服务器获取HTML模板? 如果我的服务器端授权是不透明的,用户是否能够查看所有HTML甚至无关紧要?

2 个答案:

答案 0 :(得分:4)

  

如果我的服务器端授权是不透明的,那么用户查看所有HTML的能力是否真的很重要?

你问题的最后一部分确实是整个问题的关键。

您的服务器授权必须是密不透风的,因为没有什么可以阻止任何人向您的ajax API发出直接的http请求。一旦API公开(一旦您发布您的网站),那么任何人都可以调用这些URL。因此,从安全角度来看,您的服务器代码必须绝对可靠。

但至于你的客户端代码,你是对的,这没关系。没有什么可以阻止某人查看您网站上的HTML,CSS和Javascript代码,所以不要担心试图阻止他们这样做(这是不可能的),您需要集中精力确保它没有'无论如何。

如果页面上有元素,则用户可以访问它。这就是客户端软件的本质。

但这是你需要保护的那些元素中的数据,而不是元素本身。

如果不允许用户查看给定的数据,那么首先不要将其提供给他的浏览器。这是唯一的方法。一旦进入浏览器,用户就可以完全访问它,因此在发送之前请确保他已获得授权。

答案 1 :(得分:1)

  

如果我的服务器端授权是不透明的,那么用户查看所有HTML的能力是否真的很重要?

从安全性的角度来看,它没有,你的方法是正确的。

从用户体验的角度来看,只要您确保HTML呈现代码足够健壮,不会将用户与错误时间出现的错误元素混淆,这是正确的。