在Angular2中,我怎样才能在用户无法操作客户端代码和访问路由的情况下隐藏路由呢?


How can I hide a route from users in Angular2 without them being able to manipulate the clientside code and access the route?

我知道警卫,我正在使用它们。

然而,守卫是用户可以操纵的客户端代码,这样他们就可以访问被保护的路由,从而绕过守卫。

我的整个Angular2应用程序有一个PHP后端,所以我想用AJAX,但我不能想出一个解决方案,他们不能修改AJAX响应和访问受保护的路由

不,你不能阻止用户访问UI的一部分,也不能阻止用户从服务器上的任意url请求或提交数据,也不能详细检查网络流量。

客户端路由保护和权限检查基本上是UX关注的问题,只向用户提供允许他们执行功能的UI元素。

服务器应用程序的工作是"真正"实现数据安全,拒绝访问执行敏感功能和访问敏感数据,使用身份验证令牌,角色和权限等。

结果是,如果用户通过bug或欺骗方式访问受保护的路由,该路由的组件将向服务器请求安全数据(该数据不能包含在angular2组件中),或者尝试执行受限制的操作,但请求将失败,因为用户的安全令牌权限不足。

您无法隐藏在浏览器中进行的ajax调用。所有流行的浏览器都允许您检查网络流量。

据我所知,除非在浏览器和服务器之间有中间人,否则无法修改Ajax调用的响应。但是,您不能阻止用户修改ajax请求。

它们可以通过curl、wget、Postman等方式发出相同的请求(由浏览器发出)。所以,如果你想对私有路由进行限制,让它们登录并检查服务器端的凭据。