JS变量是否安全,不受用户操纵


Are JS variables secure from user manipulation?

我试图将PHP和JS的混乱分开。我不是在初稿中寻求完美,但任何事情都比现在的状态更好。

当前(全部在一个文件中):

<?php if( checkSecureUserStuff ): ?>
//bunch of js like including admin features
//not fun stuff
<?php endif; ?>

提出:

PHP文件

if( checkSecureUserStuff ){
  $userAccess = 'admin';
}
...
//Later in file, I know this still not ideal
<script>
var useraccess = <?= json_encode($userAccess) ?>;
</script>

JS文件

if( useraccess == 'admin' ){
  // do the admin related JS stuff here
}

显然,在最终的HTML中,var useraccess = 'admin';将是可见的。在这一点上,它是否可以纵?我知道这个设计不是很好,但它是非常不安全的吗?

哦,是的,我应该提到。仍会在服务器上检查操作。这更多的是关于保护 UI 并保持某些内容被禁用。服务器仍将验证操作。

我想问题更多的是关于如果在文档加载时设置和检查变量,用户是否可以操作 UI。米勒布尔提到设置断点已经部分回答了.没想到

是的。用户将能够打开其浏览器控制台,查看代码,在设置的断点处暂停代码,然后在控制台中编写代码以编辑变量。

你永远不应该相信你的前端的安全类型的东西 - 是的,编写代码来限制访问,但始终仔细检查你的后端,并假设任何请求都是不安全的。

你可以做一些事情来掩盖你的代码,使其更难操作,比如缩小代码,但没有什么是100%有效的,所以你应该始终假设前端受到损害,并对任何传入的数据或请求采取必要的预防措施。