如何防止前端 js 被竄改?

假設是透過 "id"selector 抓取數據(例如.text())透過 ajax 丟到後端
利用 e.currentTarget.dataset.XXX
能如何避免被瀏覽器竄改?
一定要從後端給 value 嗎?
我想問問 jquery 有沒有這個問題的解決方式?
最近有點苦惱~即便 ajax 改成 POST 也是無用
如何有效“防小人”呢?

阅读 6.8k
6 个回答

这个懂技术的小人防不胜防啊

如果你只是担心对你文本框 (或者数值计算 允许客户端输入的) 增加一个条件呗
举例子:
 var measure = 1  // 可把变量弄复杂一点的命名
 //你代码进行赋值的时候 需要给 measure先进行赋值为2
 赋值操作之前判断是否为2 不为禁止赋值(修改值)
 $('input').on("change",function(){
     if(measure !== 2)return;
 })
基本禁止右键操作如没有业务需求也可以禁止
前后端对于计算结果有个加密摘要作为你们的标识 来做对比

js加密混淆
你更应该关注伪请求
这就涉及到权限验证了

思路就不对,前端随便客户怎么改都可以,我们要关注的是如何避免可能产生的问题

本身重要的数据都是要给后端去计算的,就不如订单总额,难道你前端算完给后端吗,那这样我直接传个0过去是不是就免费了,所以还是传些商品数量,商品规格这些不重要的数据给后端,后端根据你的规格数量计算出总额,这样前端怎么改没用,也不能免费了。

后端校验
就算你能阻止js篡改,那伪造请求你怎么防御?

后端验证 以及 数据权限校验
前端再怎么改,还能翻出服务器的掌心么?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题