V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sansansan333
V2EX  ›  问与答

校验是改前端写还是后台写?

  •  
  •   sansansan333 · 2018-01-08 14:17:23 +08:00 · 8573 次点击
    这是一个创建于 2512 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在一家公司已经工作 3 年了。

    刚才头一次感觉和同事有了次冲突...感觉也是相当不爽...

    具体问题是发现后台写接口的越来越松了。刚开始表单数据校验不写,不写就不写吧,前端校验住还能少几次请求,好像确实前台校验好点。现在连能不能改订单状态,能不能修改已经审核通过的信息都靠前台校验了。那还做个毛。只要是个入了门的程序员,一个普通账号在站内为所欲为?觉得很无语,来吐槽....

    是我想多了?没人这么无聊直接跑接口?还是他们越来越懒了。

    第 1 条附言  ·  2018-01-09 09:55:50 +08:00
    我有时候都想在自己家网站买买买,简直是太诱惑。哈哈哈哈
    89 条回复    2018-11-27 11:13:25 +08:00
    sansansan333
        1
    sansansan333  
    OP
       2018-01-08 14:18:49 +08:00
    也是自己最近有点烦躁,不然又忍住不争了...

    今天是实在不想写了,总感觉和给人擦屁股似的...
    Phariel
        2
    Phariel  
       2018-01-08 14:20:02 +08:00 via Android
    都要写
    tomczhen
        3
    tomczhen  
       2018-01-08 14:22:09 +08:00   ❤️ 3
    前端校验是为了体验,后端校验是为了安全。

    其实你们只是位置不同,毕竟屁股决定脑袋¯\_(ツ)_/¯
    am241
        4
    am241  
       2018-01-08 14:22:11 +08:00 via Android
    这是不怕公司倒闭的节奏啊
    kosilence
        5
    kosilence  
       2018-01-08 14:22:32 +08:00 via iPhone
    都写
    p2pCoder
        6
    p2pCoder  
       2018-01-08 14:22:33 +08:00
    前后端都用写
    dong3580
        7
    dong3580  
       2018-01-08 14:27:47 +08:00
    他写不写你不用管,你只管你写了就行了。

    ps:好像你遇到的就是我曾经走过的路...
    b821025551b
        8
    b821025551b  
       2018-01-08 14:29:53 +08:00
    我就是那种无聊的人:doge:
    sansansan333
        9
    sansansan333  
    OP
       2018-01-08 14:34:29 +08:00
    @dong3580
    关键是每次发现类似的 bug 能前端解决的,后台绝不动手。

    着里面就有两个问题了。

    第一,我很不爽...。

    第二,只是面子上好了,测试确实测不出来问题了。可是我心里觉得这接口明明就还差的远呢...
    SoulGem
        10
    SoulGem  
       2018-01-08 14:39:33 +08:00
    都要写
    toan
        11
    toan  
       2018-01-08 14:41:20 +08:00
    都要加
    毫无疑问!
    baiyi
        12
    baiyi  
       2018-01-08 14:42:10 +08:00
    公司的安全测试呢?
    sansansan333
        13
    sansansan333  
    OP
       2018-01-08 14:46:26 +08:00
    @baiyi 见识少,问一句。这种问题如果前端校验住了。后台没校验。测试应该发现吗?
    baiyi
        14
    baiyi  
       2018-01-08 14:48:06 +08:00
    @sansansan333 #13 功能测试可以通过,但是安全测试一定会发现的
    calming
        15
    calming  
       2018-01-08 14:59:41 +08:00
    肯定都得写啊,这不怕公司倒闭吗
    DualWield
        16
    DualWield  
       2018-01-08 15:00:47 +08:00
    多学点东西,这样就可以名正言顺的怼后端了,各种教他做人
    Kilerd
        17
    Kilerd  
       2018-01-08 15:03:26 +08:00
    前端为了用户体验,后端为了数据安全。
    SuperMild
        18
    SuperMild  
       2018-01-08 15:07:43 +08:00   ❤️ 1
    你怼他有什么用,和他上面有权管他的人谈才有用啊。后端需要校验这种事情,没有任何技术基础的人都能听明白,就看你的沟通能力了。除非你在公司里处于技术牛人的地位,否则不要一副得理不饶人的姿态,耐心讲,同时给对方找台阶下,这样的沟通才有效。
    timwei
        19
    timwei  
       2018-01-08 15:14:06 +08:00
    后端基本不信任前端发来的数据
    sansansan333
        20
    sansansan333  
    OP
       2018-01-08 15:30:50 +08:00
    @SuperMild 如你所说,沟通过几次,并没有什么卵用... 又不想直接和太高层的人提,总觉得背后说人家不太好... 要直接和高层说这种情况。必然是开大会各种怼。虽然怼完他们肯定乖乖的写...但是感觉着同事是以后别想好好相处了...何况现在公司的后台普遍都这么干...一下得罪一大片...我一个小员工,好像也没必要...

    哎...

    就是来吐槽下发泄一下
    sansansan333
        21
    sansansan333  
    OP
       2018-01-08 15:37:34 +08:00
    @baiyi
    看到有研究过 jwt 顺便请教个问题可好?

    如果是不同域名之间怎么保存信息?

    虽然没试过,但是肯定 cookie 或者本地数据库啥的能变相做到同步个信息。(之前有看过类似的文章,没存下来),想问的是这样做会不会有安全问题?比较成熟的解决办法又是什么呢?

    对于服务端来说,只要密匙写的一个。解密校验方面应该不会有什么额外的问题吧?

    问题好像有点多,写起来太烦的话就忽略我吧~
    windfarer
        22
    windfarer  
       2018-01-08 15:37:42 +08:00
    后端必写,前端选写
    zn
        23
    zn  
       2018-01-08 16:12:34 +08:00
    前段验证提高客户体验。
    后端验证保证数据正确。

    孰轻孰重,你自己考虑考虑。

    PS:
    要是我手下不做后端验证,那他可以打包回家了。
    ys0290
        24
    ys0290  
       2018-01-08 16:28:08 +08:00 via iPhone
    做好自己的事,等到和领导谈到相关安全问题的时候提一下
    oonnnoo
        25
    oonnnoo  
       2018-01-08 16:34:36 +08:00 via Android
    同前端表示理解。
    不懂技术的领导都会认这是前端的锅
    stanjia
        26
    stanjia  
       2018-01-08 16:36:38 +08:00
    校验 前后端都要写,都要写,都要写
    shd
        27
    shd  
       2018-01-08 16:41:21 +08:00
    不是领导,不是相关负责人,为啥管他写不写,自己写了就好,出了问题教他做人
    oonnnoo
        28
    oonnnoo  
       2018-01-08 16:42:59 +08:00 via Android
    自己前端做好自己的校验,管他的后台,最多提醒一下他好了
    KgM4gLtF0shViDH3
        29
    KgM4gLtF0shViDH3  
       2018-01-08 16:44:04 +08:00
    什么公司这么能糊弄。。。
    jason19659
        30
    jason19659  
       2018-01-08 16:45:15 +08:00
    肯定都写啊
    baiyi
        31
    baiyi  
       2018-01-08 16:55:18 +08:00
    @sansansan333 #21 上面的问题,看描述你想说的是 单点登录 吗?

    校验解密说的应该是 jwt 吧,jwt 是没有加密的,它是 base_64 编码,然后使用 hash 签名来保证数据不被篡改
    cocona
        32
    cocona  
       2018-01-08 17:14:31 +08:00
    如果是 JS 写 cookie 或 localstorage 是不能跨域的,
    我用过的解决方案是嵌 iframe 用 postMessage 通信来同步数据。
    fishliu
        33
    fishliu  
       2018-01-08 17:35:48 +08:00
    我是觉得前后台都要写的,后台是必须要写的吧,前台为了体验也是必要的
    sansansan333
        34
    sansansan333  
    OP
       2018-01-08 17:41:31 +08:00
    @baiyi
    名词我不太懂 现在想解决的问题是 www.a.com www.b.com c.a.com 全部共享登录状态。
    只要有一个登录过 其他也同步登录状态。
    用 session 已经实现了。但是感觉好麻烦。

    感觉用 jwt 的话 这三套程序只要给前台返回信息的方法和拦截校验的方法完全一样的话 瞬间解决?
    (让这三套程序在初始化跑 js 的时候默认取一下本地是否有其他站放下的信息,有的话直接带上,就算有登录状态了)
    sansansan333
        35
    sansansan333  
    OP
       2018-01-08 17:44:23 +08:00
    @cocona 谢谢提供思路~
    markyangd
        36
    markyangd  
       2018-01-08 17:49:19 +08:00 via iPhone
    必须前后段都写,不然绕开前端太容易了。
    baiyi
        37
    baiyi  
       2018-01-08 17:50:28 +08:00
    @sansansan333 #34

    嗯,就是单点登录,我不太熟悉,你可以搜下相关的解决方案,应该会有很多

    jwt 解决的不是这个问题
    gejun123456
        38
    gejun123456  
       2018-01-08 17:50:49 +08:00 via Android
    前后台都要写,楼主早点撤吧
    loveCoding
        39
    loveCoding  
       2018-01-08 17:50:54 +08:00
    建议后端离职...接口默认传递过来的数据不可靠的
    sansansan333
        40
    sansansan333  
    OP
       2018-01-08 17:57:28 +08:00
    @gejun123456 公司很大哦~只是人们越来越懒了,刚开始不是这样的,慢慢的有点失望~
    sansansan333
        41
    sansansan333  
    OP
       2018-01-08 18:12:03 +08:00
    @baiyi https://www.v2ex.com/t/405016 根据你说的单点登录 竟然在站内搜到了同类问题 也是巧了~
    singlepig
        42
    singlepig  
       2018-01-08 19:58:13 +08:00
    难道不是都写么??他接口拿到什么都敢往库里存??这样吃枣药丸的。。。如果被抓包了呢?别人随便请求一下就能发现个新大陆,到时候都是他的锅,难不成还能怪你前端没管好用户???
    sensui7
        43
    sensui7  
       2018-01-08 20:11:48 +08:00
    这就是我为何药学后端的原因, 可以直接怼, 要不然以前就会被唬住.
    huangunic0rn
        44
    huangunic0rn  
       2018-01-08 20:13:33 +08:00 via Android
    都写。
    前端防小白。后台防脚本小子。当然最好还有个中间层(比如 waf,防小黑)
    zhouyou457
        45
    zhouyou457  
       2018-01-08 20:27:05 +08:00 via iPhone
    emm......你是怎么看出他们没做校验的呢?
    zhouyou457
        46
    zhouyou457  
       2018-01-08 20:28:35 +08:00 via iPhone
    还有就是如果一个普通账号就能漫游贵司的整个系统的话,那就是权限系统的锅了.....
    carakan
        47
    carakan  
       2018-01-08 20:43:51 +08:00
    双校验吧。。。。后台不校验?什么网站。。。给 v 友们福利福利吧。。。前段不校验。体验会差很多吧。。。
    STillSB
        48
    STillSB  
       2018-01-08 20:43:57 +08:00
    都应该写,别人写不写不用管,自己写了就行了
    用心把自己这块的工作完成的又优雅又安全,出了问题也不慌
    goodryb
        49
    goodryb  
       2018-01-08 20:44:07 +08:00
    争这个有啥用,后台不校验就不校验,出问题责任又不在你
    styang
        50
    styang  
       2018-01-08 21:10:46 +08:00
    两边都写的
    dcty
        51
    dcty  
       2018-01-08 21:14:01 +08:00
    codeeer
        52
    codeeer  
       2018-01-08 21:14:22 +08:00 via iPhone
    怕不是外包公司吧......
    dddd1919
        53
    dddd1919  
       2018-01-08 22:40:29 +08:00
    请亮出你们的网站,我要买买买!!!!

    微信就剩一块多零钱了,让我再挥霍一把
    StevenTong
        54
    StevenTong  
       2018-01-08 23:36:32 +08:00
    网站贴出来 我们用实际行动来帮你说服领导
    akira
        55
    akira  
       2018-01-08 23:43:19 +08:00
    前端限制能不能改订单状态,能不能修改已经审核通过的信息 很正常啊,
    只是后端收到请求的时候也要校验一次就是了。

    你只是做了你的本职工作。
    hvanke
        56
    hvanke  
       2018-01-08 23:44:57 +08:00 via Android
    首先表示赞同前后端都要写。
    疑问是,对于一个复杂的表单,是不是前后端应该约定同样的检验逻辑呢?那这同一套检验的逻辑前后端都写一次,有没有优雅的方式保持一致性呢?
    akira
        57
    akira  
       2018-01-08 23:49:27 +08:00
    @hvanke 有啊,js 就是往这个方向努(zuo)力(si)了啊
    bk201
        58
    bk201  
       2018-01-08 23:51:43 +08:00 via iPhone
    安全方面考虑后端必须校验,体验以及性能方面考虑,如果不是很重要的业务数据,前端简单校验就可以了.
    twoyuan
        59
    twoyuan  
       2018-01-08 23:52:43 +08:00   ❤️ 1
    validations on FE are for stupid users,
    validations on BE are for malicious users.
    Nitromethane
        60
    Nitromethane  
       2018-01-08 23:53:59 +08:00
    后端的心真大啊~不但前端要检验,Node 层要校验,API 层同样要校验,这是基本规范。
    WeaPoon
        61
    WeaPoon  
       2018-01-09 00:07:24 +08:00
    后端不写校验是心有多大,不怕非法利用者吗?不怕数据库出事么...心大.
    个人认为数据的事情应该是后端的事,应该提供校验规则要求给前端做一次校验,防住输入错误的人.
    MushishiXian
        62
    MushishiXian  
       2018-01-09 08:07:39 +08:00
    至少后端不能少吧
    kamal
        63
    kamal  
       2018-01-09 08:52:15 +08:00
    你们是不是太顺利了没吃过亏?这种事,是面子问题吗?
    killerv
        64
    killerv  
       2018-01-09 09:07:02 +08:00
    前端和后端都要校验,前端是为了用户友好,后端是为了安全。完全两码事
    hanxiV2EX
        65
    hanxiV2EX  
       2018-01-09 09:51:07 +08:00 via iPhone
    写个安全测试的插件工具,分享给测试。让测试帮忙怼。
    ChristopherWu
        66
    ChristopherWu  
       2018-01-09 09:52:44 +08:00
    前端不做校验,后端是不是无端端多接受了很多无效请求?
    后端不做校验,你是在找死吗?
    横批: 前后都做
    ajan
        67
    ajan  
       2018-01-09 10:13:28 +08:00
    都要写
    xiaonengshou
        68
    xiaonengshou  
       2018-01-09 10:14:30 +08:00
    前后端都得写,而且必须严格,校验规则也必须一致。然后他不写就是重大事故。。。。要告诉上级的。。。。
    mydns
        69
    mydns  
       2018-01-09 10:18:18 +08:00
    都得写
    MisakaTao
        70
    MisakaTao  
       2018-01-09 10:22:10 +08:00 via iPhone
    gdzzzyyy
        71
    gdzzzyyy  
       2018-01-09 10:29:03 +08:00
    两边都写。他写不写我不知道,你加个保护对自己也好。最起码出了问题你能马上甩锅。(不是说甩锅
    lifesimple
        72
    lifesimple  
       2018-01-09 10:57:04 +08:00
    肯定都要写啊,前端负责交互优化,后端确保安全。毕竟前端验证是可以篡改的。
    Clarencep
        73
    Clarencep  
       2018-01-09 11:04:01 +08:00
    LZ 是来找喷的吧 肯定前后台都得做校验
    x86
        74
    x86  
       2018-01-09 11:07:11 +08:00
    你也别写验证了,反正出了事是后端的
    sansansan333
        75
    sansansan333  
    OP
       2018-01-09 11:15:05 +08:00
    @Clarencep 我看你是来找喷的
    shaco
        76
    shaco  
       2018-01-09 12:04:25 +08:00
    我看了三遍,楞是没看懂你这个标题是啥意思.....
    loryyang
        77
    loryyang  
       2018-01-09 12:06:57 +08:00
    校验正常来说,就是前后端都要做,可能会做一些细的分工,比如有些前端是做不了的。但是基本是从严做的
    你这种问题不是技术问题,而是团队协作问题
    viator42
        78
    viator42  
       2018-01-09 12:15:29 +08:00
    不校验被薅了羊毛有他好受的.你保证前端没问题坐等他翻车就行
    luyluy
        79
    luyluy  
       2018-01-09 12:39:44 +08:00
    既然是公司后端普遍的开发习惯,这完全可以反映到更高层的技术负责人那里啊,私下提个意见也不会得罪谁,领导不会傻到开个大会曝你啊,不针对个人,也不会有什么道德困境
    huangww
        80
    huangww  
       2018-01-09 12:44:05 +08:00 via Android
    毋庸置疑,涉及安全,权限的东西肯定要后台校验,前台做一些语法方面的校验
    tongz
        81
    tongz  
       2018-01-09 13:03:55 +08:00
    后台连验证都懒得写??直接给领导反映吧,我觉得如果我是领导直接就给这哥们辞退了
    fulvaz
        82
    fulvaz  
       2018-01-09 13:16:26 +08:00
    啥网站, 发包交丫做人, hhhh
    atcdef
        83
    atcdef  
       2018-01-09 14:03:26 +08:00
    前端可以不校验,至多体验差点,出不了什么大事,后端一定要校验。没听说过,前端校验,而后端反而不校验的。
    66beta
        84
    66beta  
       2018-01-09 14:12:07 +08:00
    你们都走偏了,楼主爆网站,让大家下几个单啊
    Tompes
        85
    Tompes  
       2018-01-09 14:14:11 +08:00
    楼主只要把网站放出来,保证后端哥们明天不用去上班了。←_←
    LamProductionS
        86
    LamProductionS  
       2018-01-09 15:26:13 +08:00
    找测试,说现在存在风险或者问题,让测试推动。
    CloudMx
        87
    CloudMx  
       2018-01-09 15:34:53 +08:00
    前端校验目的:提高用户体验,也可以防止简单的无效数据请求后端
    后端校验目的:功能以及安全性,必做。
    imn1
        88
    imn1  
       2018-01-09 15:38:21 +08:00
    哪家公司?
    这下有事可干了
    Mark24
        89
    Mark24  
       2018-11-27 11:13:25 +08:00
    都要写。双保险
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3748 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 128ms · UTC 05:06 · PVG 13:06 · LAX 21:06 · JFK 00:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.