最近,我一直在思考我正在开发的应用程序的安全性。客户端是在Rails API后端的角度上构建的。据我所知,一般的共识是,如果它是在客户端,假设它可能会被破坏。因此,这让我想知道何时以及是否应该在路由中使用类似canActivate之类的东西,或者每次在服务器上检查路由请求时是否应该检查授权。我想把auth请求放到canActivate中的服务器上,但是我假设canActivate可以被黑客攻击以响应true,而不需要服务器响应?如果是这样的话,如果它只是一个玻璃门,那么像canActivate这样的东西有什么意义呢?
发布于 2018-08-02 00:50:03
TL;DR:canActivate警卫不是用于安全性,而是用于用户体验。应该始终通过需要身份验证的API来保护数据。
假设您有一个具有始终可访问的登录路由的应用程序和一个显示登录用户的秘密内容的机密表:
AuthGuard检查用户是否已登录,如果未通过身份验证,则重定向到登录。就像你说的,就像客户端的任何事情一样,这可能会被破坏。这就是为什么您的SecretsTable的秘密数据应该来自一个受保护的API调用。即使数据是静态的(对于任何用户来说都是如此),您也不会仅仅将其包含在客户端应用程序中,而是使用这个API调用来保护它。
那么我们需要AuthGuard做什么呢?它与其说是为了安全性,不如说是为了用户体验。假设用户通过聊天信使接收myapp.io/secrets-table URL。如果我们没有一个AuthGuard,用户可能会收到一个错误消息(401)或者看到一个空表视图。我们的数据是受保护的,但它仍然是糟糕的用户体验。更好的是: AuthGuard立即重定向到登录,甚至可能在成功的身份验证之后将用户带回机密表。另外,我们不必为每个视图实现这个逻辑,而是可以将我们的AuthGuard重用到多个受保护的路由。
https://stackoverflow.com/questions/43784689
复制相似问题