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

时间:2016-02-11 17:34:51

标签: javascript php security

我正试图将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。 已经部分回答了米勒布尔关于设定断点的提及 。没想到

1 个答案:

答案 0 :(得分:5)

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

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

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