比使用 routeguard 更安全地保护有角度的路线?
Posted
技术标签:
【中文标题】比使用 routeguard 更安全地保护有角度的路线?【英文标题】:secure an angular route more safely than with routeguard? 【发布时间】:2020-04-05 08:41:13 【问题描述】:我必须使用 Angular 8 创建一个 SPA。
在 SPA 中,我将有一个带有表单的组件,该表单只有在用户拥有权限时才能看到。
为此我打算使用路由守卫,问题是守卫在客户端的浏览器中运行,这并不能保证恶意用户看不到表单的组件(例如,编辑js )。
RestAPI 后端在接收表单数据时会有安全性(权限检查等),但我需要确保任何没有权限的人都看不到表单。
有没有办法有效地阻止角度组件的可视化?
【问题讨论】:
只是隐藏空表单的视觉效果?如果这个恶意用户通过了路由器保护但没有通过服务器端身份验证,那么他们将看不到任何数据。 你可以看看 Angular 中的延迟加载。基本上,您只需要将表单放入单独的用户专用模块中。用户通过身份验证后,然后加载表单。顺便说一句,昨天同样的问题被否决了两次,但这个问题得到了一个疯狂的支持! @Steve 隐藏视觉效果是什么意思?使用 javascript 或类似的东西隐藏它们? @Antediluvian 懒加载加载的模块也不存储在客户端? @RangerCode 直到惰性加载器加载它。 【参考方案1】:不可否认,您的客户端代码无法被恶意代码篡改访问。
您对此无能为力,因为 SPA 代码依赖于前端,因此如果您知道变量并且可以从控制台或其他方式更改函数,那么您无能为力。
就访问控制或阻止 UI 元素而言,您可以拥有强大的后端,不会授权未经授权的访问。这种方式只能看到 UI,但运行该 UI 所需的数据将不可见(由于后端访问控制)。
你可以用逻辑的方式思考,
-
如果敏感数据不可见,那么 UI 元素可见则没有问题。
如果恶意用户可以看到某个操作按钮,因为要执行此操作需要后端,这将不起作用,因为恶意用户无法访问终端端点。
底线是您的带端应该非常强大以处理授权请求并将自己与未经授权的请求分开。
【讨论】:
以上是关于比使用 routeguard 更安全地保护有角度的路线?的主要内容,如果未能解决你的问题,请参考以下文章
为保护其App Store,苹果不惜拉踩安卓:iOS比Android更安全!