发现一个用 vue 开发的网站上线了还是开发环境,这么勇的吗。。

2018-08-13 23:57:50 +08:00
 theyueno
12637 次点击
所在节点    问与答
107 条回复
leitwolf
2018-08-14 11:51:23 +08:00
我从做 web 编程开始就知道“前端一切数据都是不可信的”这一规则。
不知道会不会有人理解成“前端人员不可信任”,哈哈!
leitwolf
2018-08-14 11:54:49 +08:00
@yamedie 这是你们公司错误的做法,并不代表行业是这样。所以你真要切磋的话,应该是跟你们公司的后台 java 谈,而不是跟大伙在这里谈。
gongpeione
2018-08-14 11:59:10 +08:00
1、该不该用 dev ?当然不该,降低了其他人做奇怪事情的成本
2、前端需不需要做加密?可以做,但是意义不是特别大,还是上 HTTPS 比较好
3、前端需不需要做校验?最好是要,体验更好
4、后端需不需要做校验?任何时候都要,不能信任用户传来的数据
5、前端校验和后端校验哪个重要?我认为同等重要
agagega
2018-08-14 12:01:57 +08:00
@yamedie
你这个问题和反爬虫本质上是相似的。可以用种种手段区分正常地从浏览器发出的请求和用户用 Postman 等工具发出的请求,但无论如何不可能 100% 精确。这才是在前端各种校验、混淆、验证、加密的意义。但是把这个当做安全保障,就有问题了。无论如何都要有自己的 API 接口暴露的可能。
terranboy
2018-08-14 12:01:59 +08:00
@yamedie 想干点什么的 并不走你的前端 怎么去校验呢 所以前端不要和安全挂钩
binux
2018-08-14 12:10:20 +08:00
@yamedie #80 我没实际操作过,但是随便查了一下 “微信 小程序 抓包”,微信浏览器还是 http/https 协议的啊。抓个包分分钟。
而且我觉得你们后端根本没有做错,虽然说签名是没有必要的,但是用了 OAuth 鉴权就是安全的,其他的用户根本不可能冒充别人的 token。

我不知道你都是在哪学的,你对计算机安全有很大的误解。建议找本科班的教材系统的学习一下。
chinvo
2018-08-14 12:17:55 +08:00
@binux #86 看 @yamedie #80 的说法,他们后端大概是没做数据的权限限制,所以只要通过了认证,就能操作所有数据……

这让我想到了多年前搞的一个网站,该下页面里面的“ role_id ”就能越权……
binux
2018-08-14 12:28:04 +08:00
@chinvo #87 如果后端验证了 token 应该就是没问题的啊,token 又不像是 role_id 是可以预测的。
chinvo
2018-08-14 12:29:54 +08:00
@binux #88 如果是 @yamedie #80 的说法,用户 A 登陆后,就可以通过改 user_id 这个 http 参数来访问用户 B、C、D.. 的数据了……

所以本质上是后端 API 权限管理问题(或者后端不知道 token 和 user 的对应关系,反而使用并信任用户输入的 user_id
yamedie
2018-08-14 12:35:17 +08:00
@binux 不是冒充 token, 而是没有进行 token 与入参的比对和鉴权(判断 token 的主人和入参的 userId 是不是同一个人), 这个问题我跟后端提过多次, 现在新接手的人愿意去改掉了.

我为了规避这个问题不捅娄子, 我还想方设法在 spa 里不暴露 userId, 至少让它在浏览器里不被篡改, 现在想想是很多余的, 这些越权的漏洞应该后端来解决, 无奈之前的 java 太懒不想改, 后台 leader 也不想管.
yamedie
2018-08-14 12:36:38 +08:00
行, 我败了, 我是前端小白, 我认同 83 楼的结论.
xianxiaobo
2018-08-14 13:39:15 +08:00
@gongpeione 为什么要在最后一句加个我认为呢,是不是同等重要很明显啊,前端不做校验和后端不做校验是一样的概念吗
Rekkles
2018-08-14 13:52:01 +08:00
作为后端 前端随便你折腾 跟我没啥关系 谁给我的数据我都不信
dixeran
2018-08-14 14:07:00 +08:00
前端被绕过可太容易了
geew
2018-08-14 14:26:03 +08:00
这个还好吧 可能就是页面加载慢点 也没啥问题 验证什么不都是后端做的吗 给你知道参数什么又有什么关系
z54749412
2018-08-14 14:51:42 +08:00
@yamedie 真的希望你重新看下题目。。这个和前后端有什么关系么?怕你是个人对前端有什么偏见?做一个后端又不是那么成功?
wly19960911
2018-08-14 15:02:06 +08:00
你知道吗,我能对 prod 环境的代码进行调试,所以打包后也就那样啊。

前端有没有 sourcemap 有所谓吗,真没什么所谓,你以为看得懂 sourcemap 的就看不懂怎么打包后调试吗。所以说我认为有错没啥大错。
maichael
2018-08-14 15:17:07 +08:00
前端代码生产模式和开发模式除了代码压缩之外,其他的差别真心不大。

后端就不应该相信从任何地方传来的数据是正确的,因为前端不是后端唯一的数据来源,有太多的方法绕过前端了。
Govda
2018-08-14 15:41:21 +08:00
你怎么写我不管,但是 dev 出来的 js 真 tm 大啊
romisanic
2018-08-14 15:47:46 +08:00
常规是接口不信任前端传过来的任何数据,所以接到之后还需要做必要的验证
但是不是说所有的验证都需要跟后端交互之后才能拿到结果,这样太浪费了,开发起来麻烦不说,用户体验也不太好
一般前端需要做一些必要的验证,比如一些逻辑关系,必填,格式等
但是后端仍然需要验证一些必要的内容,作为防御。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/479517

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX