我担心如果我使用本地存储来存储用户信息,黑客可能会进入开发人员控制台/应用程序/本地存储以更改数据(如公司名称)并启动从我的数据库从其他公司获取数据。这里有一些更详细的信息安全使用本地存储的HTML Angular 2项目
我正在开发一个商业应用程序,在注册后,我会收到诸如公司,电子邮件,名称等基本用户信息。
纽约DATABSE(火力)数据结构的简化版本,看起来像
-company1
-filed1
-data1
-filed2
-data1
-company2
-field1
data1
这是我要做的事目前没有本地存储(以及它被提到的问题)
- 用户打开该网站登录,该应用转到firebase登录用户并检索用户详细信息以将其存储在变量中
- 每次用户想要进行查询时,我都会使用该变量并查找诸如公司名称(在这个例子中)。 然后,我告诉firebase搜索基于该公司名称(company1)的路径。
这一切工作正常。然而,问题在于,启动时没有用户,因此我的所有AuthGuard都会失败,导致用户重新返回到登录页面。 想象一下,如果用户已登录,然后按下刷新按钮,则这将导致重定向回登录页面,因为在Firebase返回一些数据之前没有用户。
// Auth guard
canActivate() {
if (!this.userService.getCurrentUser()) {
return false
}
return true
}
getCurrentUser(): User {
return this.currentUser
}
const APP_ROUTE: Routes = [
{ path: '', redirectTo: '/login', pathMatch: 'full' },
{ path: 'login', component: LoginComponent },
{ path: 'register', component: RegisterComponent },
{ path: 'somePath', component: SomeComponent, canActivate: [AuthGuard] },
{ path: 'somePath2', component: SomeOtherComponent, canActivate: [AuthGuard] },
{ path: '**', redirectTo: '/login' },
]
,我能想到的最简单的解决方法是创建一个本地存储来存储所使用的信息,并在需要时检查它在那里。 不过,我担心这种方法,用户有可能进入本地存储和例如,改变公司2将允许访问其他公司的数据
有没有一种方法来安全地存储在本地数据存储没有我的关注?
在security.stackexchange.com上,这个问题可能会更好。也就是说,如果有人可以通过相对基本的URL操作查看他们不应该能够访问的数据(使用JSON格式),那么您需要提高服务器端的安全性 - 这并不是真的你可以在打字稿中解决一些问题。 – Katana314