所以我有以下代码:
Session.create(uc.user);
Session.location = 'Dashboard';
switch (uc.user.user_type_id)
{
case 1:
$state.go('app.dashboard-v1');
break;
case 2:
$state.go('app.dashboard-v1');
break;
case 3:
$state.go('app.dashboard-v1');
break;
case 4:
$state.go('client.dashboard');
break;
case 5:
// break (external partner)
break;
}
它控制新登录用户重定向到的位置。
如果我在谷歌浏览器中使用HTML编辑器(作为示例)并插入以下行:
Session.create(uc.user);
Session.location = 'Dashboard';
uc.user.user_type_id = 4; // this line
switch (uc.user.user_type_id)
{
case 1:
$state.go('app.dashboard-v1');
break;
case 2:
$state.go('app.dashboard-v1');
break;
case 3:
$state.go('app.dashboard-v1');
break;
case 4:
$state.go('client.dashboard');
break;
case 5:
// break (external partner)
break;
}
然后我能够" Crack"重定向并允许我的用户访问一些敏感数据。
我的问题是如何避免这种情况?
答案 0 :(得分:2)
完全没有关系到你如何编辑Javascript ...如果客户端无权访问该数据,则不得将任何敏感信息从服务器发送到客户端。如果数据已经在客户端上,并且所有阻止客户端看到它的是Javascript switch
语句,那么您已经丢失了。您可以很好地向客户端发送一些管理UI,但是只有在客户端对服务器进行了适当的身份验证之后才能发送填充该UI空白的实际数据;并且不得允许客户端在服务器上执行任何操作,除非服务器授权他们这样做。