1
torbrowserbridge 2017-01-12 15:23:37 +08:00
倒过来我还能理解。。。
|
2
bk201 2017-01-12 15:24:02 +08:00
没法回答你,因为我遇到的公司都是做的。
|
3
baiyi 2017-01-12 15:24:58 +08:00 1
这什么逻辑?前端做是为了友好的用户体验,你服务端是为了安全啊!
|
4
1340641314 OP @torbrowserbridge 其实事情是这样的,最近在给后台的 api 写测试,因为后台的 api 都没有数据验证,感觉各种操作就像裸奔一样
|
5
1340641314 OP @baiyi 前端做是为了友好的体验这个我能理解,但是我不能理解为何我们后台都不愿意做数据验证
|
6
lyragosa 2017-01-12 15:26:47 +08:00
倒过来才是对的……
|
7
chenqh 2017-01-12 15:27:13 +08:00
因为懒吧。。。所以 node 才会火呀,一套逻辑写一次
|
8
1340641314 OP @bk201 看来还是得看情况
|
9
Lucius 2017-01-12 15:27:31 +08:00
BUG 没有跟 KPI 挂钩吧? 所以后端就怂管了
|
10
nanlong 2017-01-12 15:29:37 +08:00
你们的后端算渎职了 玩忽职守
|
11
1340641314 OP @nanlong 有个操作是认证后才能进入各种操作的,这个前端是做了验证,但是直接跑 API ,可以完成各种操作。跟他们说了,但是没有效果,所以忍不住吐槽了
|
12
Asan 2017-01-12 15:32:10 +08:00
我们都做了啊
|
13
1340641314 OP 直接跑 API ,不认证也能跑各种认证后的操作,我觉得这个很坑。
|
14
subpo 2017-01-12 15:32:29 +08:00
没办法回答你,没有遇到不做的公司
|
15
viator42 2017-01-12 15:33:15 +08:00
就是懒嫌麻烦,等到被坑了就知道了
|
16
kulove 2017-01-12 15:33:29 +08:00 1
我是分数据重要程度的,重要就前后端一起写,不重要就前端校验
|
17
arischow 2017-01-12 15:33:32 +08:00
倒过来才是对的……
|
18
Victor215 2017-01-12 15:34:38 +08:00
是不是内部系统?不关心安全问题?
|
19
master13 2017-01-12 15:35:22 +08:00
撸主信不信人家说“用户发来的数据都是不可信的”
|
20
1340641314 OP @Victor215 商户使用的系统,以后商户可能会直接充值几万,十几万这样的金额
|
21
nanlong 2017-01-12 15:35:59 +08:00
|
22
nanlong 2017-01-12 15:36:33 +08:00
@1340641314 能否透露一下贵司网站地址?
|
23
watzds 2017-01-12 15:36:57 +08:00 via Android
那要看会不会影响后台运行,不会的话,后台直接报错吧,反正也不是正常用户。
|
24
cheetah 2017-01-12 15:37:12 +08:00
我觉得是因为前端可以实际看到输入的界面
|
25
1340641314 OP @nanlong 这个系统还没有上线,要年后呢。不然出问题了,大过年的谁背锅
|
26
odirus 2017-01-12 15:39:03 +08:00
我的理解中后端验证有几个要点:
1 )验证接收到的参数是否合法; 2 )根据接收到的参数值,验证该用户是否具有操作目标资源的权限; 欢迎各位指教提出更加科学、规范的流程,趁此机会多学习一下 |
27
Victor215 2017-01-12 15:39:57 +08:00
@1340641314 牛逼,我以为只有内部系统这么干...,上线了记得把 URL 公布出来大伙看看
|
29
1340641314 OP @Victor215 这个算了,老板得炒我鱿鱼了
|
30
Immortal 2017-01-12 15:42:45 +08:00
我只知道当初入行写服务端
一直有句话经常看到 服务端应该对所有客户端的数据是不信任的 |
31
timi 2017-01-12 15:45:05 +08:00
系统业务逻辑太多的时候,有时候不太有影响的业务就不在后台校验了,比如电话号码啥的。。。
|
32
nanlong 2017-01-12 15:45:56 +08:00
@1340641314 早晚被人爆,再说上线了 你推广一下 这多正常, 还请请“上线了记得把 URL 公布出来大伙看看”
|
34
1340641314 OP @nanlong 到时候再说吧
|
36
yubang 2017-01-12 15:57:22 +08:00 1
后端怎么会不做数据校验呢?反正业务操作结果我都判断,一般来说上 orm 框架来避免了 sql 注入,数据类型直接强制转换(这个就是导致 500 的原因,但是正常情况 500 不会出现的,出现也没什么问题),如果你是要后端接收每个数据都校验存不存在,类型对不对(为了安全是不是用正则匹配一下?),这事情还得看公司吧,需求每天都变,能赶出来,能保证数据不被黑就好了,友好提示很多时候无能为力呀。后端校验仅仅在保证业务数据安全下用上,你要想后端看不到的地方的校验才是最重要的,看不到不代表后端懒,只是你不知道后端为了安全写了多少逻辑。
|
38
rekey 2017-01-12 15:59:49 +08:00
是不是应该说明一下「后台」和「前端」的定义。
|
39
jackroyal 2017-01-12 16:01:57 +08:00 via Android
我遇到的是,前端不做检验,全部依赖后端去检验
|
40
SuperMild 2017-01-12 16:02:06 +08:00
你跟他们说没用的,他们又不归你管,在面子上也不能听你的呀,要说就要跟领导说。
|
41
Troevil 2017-01-12 16:05:26 +08:00
做后台需要有觉悟,前台的一切都是不可信的
|
43
chairuosen 2017-01-12 16:12:43 +08:00
我觉得自己写一个模块,输入要尽量兼容各种情况,输出要统一数据格式,就算报错也要报规范的异常,而不是反一个 tomcat 的 500html ,这样才能保证整个系统健壮性。
|
44
wizardoz 2017-01-12 16:17:35 +08:00
我是一个业余后端,我认为后端应该做完全部验证.前端做不做那是前端的事.
|
45
cncqw 2017-01-12 16:22:23 +08:00
我是后端,不管什么情况都会做校验,出错直接返回系统错误,让前端校验是为了给用户提示的
|
46
Miy4mori 2017-01-12 16:22:43 +08:00 via Android
@1340641314 你们 api 没做 csrf ?没做身份验证?都没有的话就算做检验也是白搭,都有的话前端做了后端可以不做。
|
47
wupher 2017-01-12 16:25:21 +08:00
我写后端的时候是都做的。“永远不相信前端”
|
48
btjoker 2017-01-12 16:25:22 +08:00
前端的验证能随意修改通过
后端不验证就等着爆炸吧 要嘛捅上去, 要嘛等出事了一起玩完 |
49
admol 2017-01-12 16:34:37 +08:00
你自己悄悄咪咪的去搞一波事情 , 让他们晓得点厉害 , 下次就怂了
|
50
crazystory 2017-01-12 16:47:42 +08:00
我想知道你从什么地方得到后端"都"不喜欢这个结论
|
51
libo26 2017-01-12 17:14:37 +08:00 via iPhone
后台和后台模块间都会做权限和数据校验,前台的数据不校验?
|
52
unknownservice 2017-01-12 17:17:01 +08:00
没吃过教训呗,被爆一次库再看看。
|
53
annielong 2017-01-12 17:19:49 +08:00
做后台一般权限类和一些关键字段进行一下验证,其他的,出问题再说,那么多验证哪里顾得到
|
54
srlp 2017-01-12 17:22:03 +08:00 via iPhone
和 https://www.v2ex.com/t/334074 相映成趣啊
|
55
moonshile 2017-01-12 17:28:57 +08:00
你把网站地址给出来,大伙分分钟教你们后台一堂生动形象的课程
|
56
lianxiaoyi 2017-01-12 17:31:48 +08:00
不要说都。。。。。。敢不做后端验证都呆不下去三天。。。。
|
57
geew 2017-01-12 17:40:11 +08:00
后端做数据验证是常识吧喂
|
58
domty 2017-01-12 17:42:15 +08:00
这有啥,最近在做社保网站的爬虫。
有一些外包的社保网站把前后端的东西合一块, ajax 提交的参数里直接拼 sql 的 where 条件字符串的我都见过。 |
59
ghl 2017-01-12 17:43:33 +08:00
我待过的所有公司都没见过你说这种现象,别说外部或内部系统了,连后端自己调用不对外开放的服务接口都一律强校验,而且所有校验错误都有详细日志。
一是为了安全,后端的服务对象绝不仅仅是前端,更有各种恶意脚本和黑产工具;二是在遇到因为接口变动导致偶发 bug 时能节省大量 debug 时间;三是校验过程本身就是开发过程中理清逻辑细节的有效工具,写了这块代码就应该对各种输入情况下系统的反应了如指掌,否则如何能确定代码逻辑正确? 反倒是前端在这方面考虑略少一些,一是因为他们往往只需要对特定的错误给出提示,二是他们没必要也无法校验一些特殊手段产生的输入。 |
60
suduo1987 2017-01-12 17:48:29 +08:00
不管前后端 不做校验的都是责任感不强的
|
61
F10Y 2017-01-12 17:49:42 +08:00
你们的后端开发信任前端研发呗。像我们平时,从数据集市取别人的数,数据灌到数据库,后端取到数据,前端展示数据,都有数据验证逻辑,谁都不信任谁
|
62
Time2 2017-01-12 17:59:08 +08:00
前后都需要做啊,这叫纵深防御!!!!!!
不做懒而已。。。。 |
63
ylsc633 2017-01-12 18:00:36 +08:00
感觉正好相反... 我写后端接口,与前端联调的时候,有可能前端没有验证...
反正不管他! 就着 不要相信前端的传入的任何数据 的原则 而且,laravel 的校验也很便捷... |
64
ferock 2017-01-12 18:02:59 +08:00
既然他都说不会有问题的,那等有问题再说呗
|
66
darrenfang 2017-01-12 18:15:15 +08:00 via iPhone
设计一个 IValidate 接口:有一个 Validate 方法,调用 Application Service 的方法时,检测参数是否实现此接口,如果是就调用 Validate 方法,所以只需要把验证逻辑写到这个方法里面就行了(我用的 C#, Java 也可以这么干吧,没试过
|
67
sampeng 2017-01-12 18:28:25 +08:00
说来说去,你直接上报你的头,其他就甭管了。这是氛围问题。没有把安全摆在第一位。
另外,程序员自个儿偷懒,以为反正没人知道。过两年就跑路了,下一位来得擦屁股,那多一事不如少一事咯 |
68
crayygy 2017-01-12 18:29:54 +08:00 via iPhone
@Sentur 所以在这之前争论都应该用邮件,说清楚自己是建议一定要做的,到上面提起来要背锅的时候直接转发邮件
|
69
fantastM 2017-01-12 18:37:21 +08:00
除 private 方法信任参数,其它都做
|
70
smallpath 2017-01-12 18:38:01 +08:00
不会有问题😔? 蜜汁自信
|
71
passion336699 2017-01-12 18:38:05 +08:00 via Android
因为懒。。
|
73
Zane0001 2017-01-12 18:46:18 +08:00
最喜欢这样的竞争对手
|
74
xcatliu 2017-01-12 19:03:27 +08:00
资源有限的情况下也应该优先实现后端验证
|
75
wsy2220 2017-01-12 19:06:51 +08:00
活久见
|
76
onlyhot 2017-01-12 19:08:05 +08:00 via iPhone
倒过来
|
77
mazyi 2017-01-12 19:54:06 +08:00
笑~
|
78
xiaowangge 2017-01-12 21:57:26 +08:00
换一家公司吧。我挺好奇公司名字的 =。=
|
79
murmur 2017-01-12 22:00:02 +08:00
@chenqh 是么?如果是 required number email 这种简单校验 java 用个 validator 也能校验
难校验的是业务校验,比如库存、唯一、数量、金额、优惠这些 |
80
maplerecall 2017-01-12 22:08:44 +08:00
如果项目还未上线后端不做验证很正常,一般验证规则是最后做的,但如果上了还没做那就有点厉害了……
|
81
django123 2017-01-12 22:18:55 +08:00
嗯,看了大部分的回复,还是感到欣慰的
还是那句啊,一切的输入都是不可信的 |
82
qinxi 2017-01-12 22:29:43 +08:00
@darrenfang java 的 jsr303 标准
|
83
crossoverJie 2017-01-12 22:41:43 +08:00
不要相信用户的任何输入这个观念应该都知道的吧
|
84
jyf 2017-01-12 22:44:13 +08:00
一般来说 做后端要假设提交过来的数据是故意害你的 我以前就经常跟公司的 cto 互相脑洞攻防
但是考虑到实际情况 像内部系统 或者外层有隔绝的 可以懒得做 但是像你说的这种还要上线的都不做 要么是渎职 要么就是故意留后门了 |
85
eyp82 2017-01-12 23:33:10 +08:00
在这里吐槽没用, 你需要的是报告你的直属领导, 然后让他自己看要怎么办. 但是不要自己去跟后端吵.
把锅甩掉. |
86
mritd 2017-01-12 23:36:01 +08:00 via iPhone
那是你看到的后台……我只相信一句话 "相信前台检验的都是沙比"…… F12 一下全能改,前台检验只防普通用户
|
87
railgun 2017-01-12 23:57:38 +08:00
赶紧发邮件给领导,别到时候锅甩不掉
|
88
Chriser 2017-01-13 07:21:19 +08:00
明显是懒,不上报以后哭晕在厕所的机会都没了。
|
89
darrenfang 2017-01-13 07:32:30 +08:00 via iPhone
@qinxi 谢谢,有空看看
|
90
AlisaDestiny 2017-01-13 08:13:02 +08:00 via iPhone
@domty 遇到这种拼 sql 的,那就干点事,给他上一课。
|
91
IJustmaogepao 2017-01-13 08:50:16 +08:00
mark,等上线把 url 发出来让我们观摩一下。。
|
92
stormpeach 2017-01-13 09:09:59 +08:00
你们后端不走单元测试的?
|
93
gujikun 2017-01-13 09:40:49 +08:00
楼主做的大部分是公司内的系统吧。后端懒很正常。你做个直接公网面对消费者的,会有人分分钟交会后台怎么学编码的。
|
94
jimrok 2017-01-13 09:47:02 +08:00
因为你们的测试不够强大
|
95
domty 2017-01-13 09:54:00 +08:00
@AlisaDestiny
政府机关的系统啊,真干了人家就带着警察来给我上一课了。 |
96
Nutlee 2017-01-13 09:55:19 +08:00
说实话.... 我这也是 同样给后端提醒过... 后端同学还反问过我 “难道我每个数据都验证??”
|
97
zzn 2017-01-13 10:01:45 +08:00
后端不验证数据是很危险的
|
98
tairan2006 2017-01-13 10:03:45 +08:00
你需要换家公司
|
99
baoguok 2017-01-13 10:32:00 +08:00
测试没做到位
|
100
baoguok 2017-01-13 10:32:26 +08:00
很多程序员都和懒,遇到过这种,后台数据不做校验
|