JS变量是否可以防止用户操纵?

Dan*_*Dan 1 javascript php security

我试图分离一堆混乱的PHP和JS.我不是在初稿中寻求完美,但任何事情都比当前状态更好.

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

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

建议:

PHP文件

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

JS文件

if( useraccess == 'admin' ){
  // do the admin related JS stuff here
}
Run Code Online (Sandbox Code Playgroud)

显然在最终的HTML var useraccess = 'admin';中将是可见的.那时操纵是否开放?我知道这个设计不是很好,但它是不是非常不安全?

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

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

mil*_*rbr 5

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

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

您可以采取一些措施来掩盖代码并使其更难以操作,例如缩小代码,但没有任何东西是100%有效的,因此您应始终假设前端受到损害,并对任何传入的数据进行必要的预防措施或要求.