前端代码混淆后还能被轻易还原吗?
我用 Webpack 的 TerserPlugin 做了代码压缩和混淆,但发现别人用 Chrome DevTools 格式化一下就能看懂逻辑,尤其是 Vue 组件里的敏感判断。这真的安全吗?
比如下面这段代码,虽然变量名被替换了,但结构一目了然:
<template>
<div v-if="isVip">尊享内容</div>
</template>
<script>
export default {
data() {
return { isVip: this.checkAuth() };
},
methods: {
checkAuth() {
return localStorage.getItem('token') === 'premium';
}
}
};
</script>
有没有更有效的方式防止关键逻辑被直接读取?还是说前端根本没法真正加密?
建议几个实操方案:
1. 敏感逻辑放后端,前端只做展示,这是最靠谱的。比如VIP判断直接调接口:
2. 非要前端搞的话,可以用eval+base64这种骚操作(虽然也不安全):
3. 或者用webpack的DefinePlugin把关键字符串变成变量:
然后代码里用
__VIP_KEY__代替明文。不过说真的,前端想完全防住基本不可能,真要安全还得靠后端校验。我之前有个项目搞了半天混淆,结果人家直接抓接口,白忙活。