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

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

  •  
  •   theyueno · 2018-08-13 23:57:50 +08:00 · 11993 次点击
    这是一个创建于 2301 天前的主题,其中的信息可能已经有所发展或是发生改变。
    107 条回复    2018-08-14 23:37:29 +08:00
    1  2  
    XSugar
        1
    XSugar  
       2018-08-14 00:06:44 +08:00 via iPhone
    死亡线来临时候一切皆有可能
    creanme
        2
    creanme  
       2018-08-14 00:08:54 +08:00 via Android
    b 站之前就是啊,b 站员工说是故意的。
    azh7138m
        3
    azh7138m  
       2018-08-14 00:21:15 +08:00 via Android
    可以只用 vue 的 dev 版本,业务代码跑在生产模式,完全可以
    yamedie
        4
    yamedie  
       2018-08-14 06:32:34 +08:00 via Android
    @azh7138m 不可以的吧,心太大了,chrome 装个 vue-dev-tool 插件分分钟给你 model 层改的明明白白
    kslr
        5
    kslr  
       2018-08-14 06:37:48 +08:00 via Android
    @yamedie 改了又如何,不过是自己的一亩三分地
    yamedie
        6
    yamedie  
       2018-08-14 06:59:58 +08:00 via Android
    @kslr 前端这么随意,数据检验全靠后端?后端也随意点网站还开不开了?
    chengluyu
        7
    chengluyu  
       2018-08-14 07:01:01 +08:00   ❤️ 1
    死限来了什么都敢做。
    zjsxwc
        8
    zjsxwc  
       2018-08-14 07:38:24 +08:00 via Android   ❤️ 1
    前端再怎么出问题也不会有什么大问题
    loading
        9
    loading  
       2018-08-14 07:44:24 +08:00 via iPhone
    这很恐怖吗?
    kslr
        10
    kslr  
       2018-08-14 07:45:23 +08:00 via Android
    @yamedie 后端随意那就忍着,要不然就开了。就算不开 dev 前端什么改不了?
    binux
        11
    binux  
       2018-08-14 07:45:44 +08:00   ❤️ 14
    @yamedie #6 数据检验不全靠后端,难道还有信前端的吗?
    yamedie
        12
    yamedie  
       2018-08-14 07:49:46 +08:00 via Android
    @kslr @binux
    你们说的都对,请贵司一定用 npm run dev 的方式部署生产环境,一定坚持不在前端做表单验证哈
    loading
        13
    loading  
       2018-08-14 07:51:14 +08:00 via iPhone
    居然有这么多人认为这很危险……
    以为用了生产模式就安全的那才叫心大,后端直接开放接口。
    zhou00
        14
    zhou00  
       2018-08-14 07:52:32 +08:00 via Android
    怎么看是开发环境
    yamedie
        15
    yamedie  
       2018-08-14 07:59:00 +08:00 via Android
    有人觉得前端改点什么都没影响,后端全能拦截,真的这样吗?
    没有代码混淆,前端跟接口之间那点签名鉴权逻辑分分钟让人研究明白吧。
    微信里的 webapp 如果不限制浏览器,隐藏地址栏隐藏控制台,还不让人改爆?多少公众号在用 localStorage 存关键数据,在 url 显式传参,又不是没见过……
    binux
        16
    binux  
       2018-08-14 08:00:19 +08:00   ❤️ 8
    @yamedie #12 我们前端都是静态的,npm build 就完了,干嘛要 npm run ?就算是 npm run production 都不行。
    前端做表单验证都是为了好看的,这和「数据检验全靠后端」没有半毛钱关系。
    yamedie
        17
    yamedie  
       2018-08-14 08:03:56 +08:00 via Android
    在讨论的不是后台有没有能力拦截所有非法请求,当然有能力,真的有后端把所有的 case 都照顾到了吗?这是分红和责任心的问题。
    某外卖软件消费负 xxx 元,反向充值的新闻了解一下。某打车软件让人研发外挂,损失上百万报案抓人的新闻了解一下。
    yamedie
        18
    yamedie  
       2018-08-14 08:08:41 +08:00 via Android
    @binux “数据检验不全靠后端,难道还有信前端的吗?”,不在前端做表单验证,你不信前端,你信用户是吧?我懂了
    falcon05
        19
    falcon05  
       2018-08-14 08:08:51 +08:00 via iPhone
    @yamedie 前端本来就是暴露在外面的啊,改爆啥?敏感数据和操作肯定是后端鉴权的
    kslr
        20
    kslr  
       2018-08-14 08:09:45 +08:00 via Android
    @yamedie 这都什么乱七八糟的,请你重新审题
    binux
        21
    binux  
       2018-08-14 08:10:33 +08:00
    @yamedie #17 那你说的这些例子有哪个被前端拦住了?
    yamedie
        22
    yamedie  
       2018-08-14 08:10:35 +08:00 via Android
    @falcon05 17 楼两个例子
    yamedie
        23
    yamedie  
       2018-08-14 08:11:46 +08:00 via Android
    @binux 拦住的会出新闻吗?
    kslr
        24
    kslr  
       2018-08-14 08:12:22 +08:00 via Android
    啊 审题这个词不太合适,都是在围绕问题做解答,你不能因为回答错误,就无视逻辑与关系死不承认,又没人会怪你。
    binux
        25
    binux  
       2018-08-14 08:12:51 +08:00
    @yamedie #23 那你确定你举的例子前端没有验证?不是被人直接灌的数据?
    falcon05
        26
    falcon05  
       2018-08-14 08:18:09 +08:00 via iPhone
    @yamedie 你说的这些用工具模拟提交就可以了,可能压根不都经过浏览器,跟前端没关系。也不存在后端没做好,前端凑的安全策略。
    yamedie
        27
    yamedie  
       2018-08-14 08:20:05 +08:00 via Android
    @kslr 不是,我发现这帖子几乎所有人论调都是:完全后端做表单验证数据校验(潜台词 前端小把戏,没必要管,随便改),难道不应该前后台做 2 次校验吗,这不应该是规范吗?我替前端感到不服。
    Sharuru
        28
    Sharuru  
       2018-08-14 08:21:08 +08:00 via Android   ❤️ 2
    笑了,还真给前端验证脸了。
    KgM4gLtF0shViDH3
        29
    KgM4gLtF0shViDH3  
       2018-08-14 08:26:25 +08:00 via iPhone
    @yamedie #18 前端校验一下是为了减轻后端压力吧
    azh7138m
        30
    azh7138m  
       2018-08-14 08:30:49 +08:00 via Android
    @yamedie 可以这样操作,一样,可以只有业务代码做压缩,外部依赖库用 dev 版本
    phpcxy
        31
    phpcxy  
       2018-08-14 08:33:24 +08:00   ❤️ 20
    恕我直言,后端才不管你前端做不做数据验证。
    xycool
        32
    xycool  
       2018-08-14 08:36:06 +08:00 via iPhone
    @yamedie 前端不做校验,完全做后端校验确实没问题啊,前端在怎么校验,混淆逻辑写的在牛逼,抓包到提交的数据结构和地址,直接模拟提交,还是得看后端校验啊。我觉得前端校验更多只是给正常操作用户更快的反馈,有时候用户手抖输错了,前端效验可以更快的反馈错误信息。所以不觉得前后台效验是规范,能前后台都做当然更好。
    swalle
        33
    swalle  
       2018-08-14 08:36:50 +08:00   ❤️ 6
    @yamedie 很多年前,页面就是没校验,每次提交时后台校验,这种方式体验很差,所以后来用 JS 在表单填写过程中就验证,节省用户时间。这么说你明白了吧,前端校验是优化体验,而不是保障安全
    kslr
        34
    kslr  
       2018-08-14 08:39:49 +08:00 via Android
    @yamedie 我手机打字不太方便,前端和后端的检验都是无可替代的,少了谁都不好,比如前端失败后的业务逻辑提醒等等。
    问题集中在前端验证是否万无一失,答案是否。
    swalle
        35
    swalle  
       2018-08-14 08:40:18 +08:00
    当然这是理论情况,我司现在就是前端验证,后端基本上不验证,活久见...
    yamedie
        36
    yamedie  
       2018-08-14 08:42:05 +08:00
    @phpcxy 恕我也直言,前端才不管后端做不做数据校验,反正页面正常 ajax 传给后端的参数合理合法就行,出了事锅该是谁的就是谁的.
    @bestkayle 可以这么说,也不止如此而已,打个不太合适的比方(可能会惹怒很多后端大佬): 民工都知道筛细沙要从粗到细过很多次筛子,为啥这里的高级码农不知道.

    一直尝试在 web 安全的角度讨论前端该不该做一次表单验证,
    但各位后端大佬给我的感觉是: 给你脸了?后端能做所有表单验证为什么轮到前端做?
    如果真这么完美可能世界上就没那么多黑天鹅事件了, 墨菲定律恐怕也是胡说八道.
    好了我不再回复了,各位后端大佬继续嗨吧打扰了
    xycool
        37
    xycool  
       2018-08-14 08:44:47 +08:00 via iPhone
    @yamedie 还有,你举的那两个例子都只能说明后端代码的单元测试没有覆盖全面。跟前端需不需要验证不是必然关系
    phpcxy
        38
    phpcxy  
       2018-08-14 08:52:27 +08:00
    不知道大家有没有遇到过。注册个手机号或者邮箱(譬如 199 号段或者 gmail 邮箱带+号),有时候前后端的正则都不一样的
    Weny
        39
    Weny  
       2018-08-14 08:52:27 +08:00 via iPhone
    说个台湾的事,也是 vue 的项目,线上用的开发环境。后端也没做验证,当时被注入了说被中 g 网军入侵,我特意查了一下,住在大陆的绿营学生写的代码,笑。
    qilishasha
        40
    qilishasha  
       2018-08-14 08:59:46 +08:00   ❤️ 2
    前端做校验是为了用户体验,为了方便用户的使用。和安全无关。
    remon
        41
    remon  
       2018-08-14 09:03:51 +08:00 via Android   ❤️ 10
    一切前端来的数据都不可信,这难道不是 web 开发的基本原则。前端校验是用户体验,后端校验才是为了安全,必不可少。别说 js 压缩混淆不行,用 WebAssembly 都不行。

    dev 上线最大的问题在于体验,带很多不必要的东西,文件体积也大。而且可能暴露公司代码水平不高,或者像乞丐 VIP 一样偷偷骂人
    lneoi
        42
    lneoi  
       2018-08-14 09:05:03 +08:00   ❤️ 1
    前端接口都暴露着的,安全性问题肯定得靠后端来维护.
    前端校验只是出于用户体验,过滤一些太过无意义的信息.
    DOLLOR
        43
    DOLLOR  
       2018-08-14 09:11:16 +08:00   ❤️ 13
    @yamedie
    抱歉,我作为前端开发,我也从来不信前端提交的任何信息。甚至认为,前端提交的信息都是不可信的。你不要“替前端感到不服”,这是客观事实,不服也得认。
    前端所谓的“校验”,只是为用户体验而设计的,跟安全关系不大。甚至可以认为,如果不考虑用户体验,前端校验不要也无所谓,后端防范才是必需的。
    最危险莫过于“前端校验就安全”这种错误的观念。
    panpanpan
        44
    panpanpan  
       2018-08-14 09:11:18 +08:00 via iPhone   ❤️ 2
    作为一个稍有常识的后端程序员在写代码的时候不应该相信前端传过来的任何数据。前端所以的检验都只应该是为了用户体验,尽早的给用户做出提示。
    wibile
        45
    wibile  
       2018-08-14 09:12:46 +08:00
    @yamedie 安全问题从来都是后端的锅,别给前端强行加戏了,这么多人指出来,你还犟啥???
    theohateonion
        46
    theohateonion  
       2018-08-14 09:14:17 +08:00 via iPhone
    @yamedie 前端的信息永远不是可信的 我做过的项目无论如何都不会省掉后端的校验. 只是一个 dev 包上去了而已. 没必要这么上纲上线吧
    yhxx
        47
    yhxx  
       2018-08-14 09:16:56 +08:00
    很常见啊
    (我当年不懂 webpack 的时候也干过)

    至于楼上那些说这么干很危险的,可能也是不懂前端吧。。。
    gouflv
        48
    gouflv  
       2018-08-14 09:26:20 +08:00 via Android
    @yamedie 如果你是前端就别不服了,前端在大部分公司都没你想的这么重要,纯前端想有话语权是不可能的。看清楚大环境,前端火热只是自己的小圈子罢了。
    开放下思维,做后端或者产品才是出路啊。
    PureWhiteWu
        49
    PureWhiteWu  
       2018-08-14 09:26:44 +08:00
    你就算直接把接口通过 swagger 暴露给用户都没关系。
    后端不要 dev 模式上线即可。
    agdhole
        50
    agdhole  
       2018-08-14 09:28:19 +08:00 via Android   ❤️ 1
    前端做校验只有一个功能,提高用户体验,安全是拍脑袋随便想出来的?
    belin520
        51
    belin520  
       2018-08-14 09:31:26 +08:00   ❤️ 1
    @yamedie #36
    前端校验是为了 [用户体验]
    后端校验是为了 [安全]

    跑 dev 在生产环境并没有实质性的安全影响,性能影响也可以忽略不记
    ZxBing0066
        52
    ZxBing0066  
       2018-08-14 09:32:29 +08:00 via Android   ❤️ 1
    体验在前端 安全在后端(除防注入展示类内容)这都能吵起来
    。。
    beaconfire
        53
    beaconfire  
       2018-08-14 09:34:53 +08:00
    @agdhole 还有减少无效请求以减轻服务器压力
    yamedie
        54
    yamedie  
       2018-08-14 09:47:30 +08:00
    "永远不要相信用户的输入" 大家把这里的不信用户等同于不信前端, 没关系, 没人否定后端的数据校验必不可少, 这是数据达到数据库的最后一道关口.
    说前端校验是为了用户体验, 与安全无关的, 可以了解一下这本书 https://book.douban.com/subject/10546925/ 从第 2 到第 6 张全部是在讲客户端安全,客户端发起的攻击除了表单篡改, 还有跨站攻击,csrf 攻击.
    yamedie
        55
    yamedie  
       2018-08-14 09:48:34 +08:00
    @gouflv 好的,我知道. 在公司除了前端还有部分产品设计工作, 我业余也在做全栈项目
    whypool
        56
    whypool  
       2018-08-14 09:50:41 +08:00
    除了文件大点没其他毛病

    这都能扯到安全,怕是个假码农
    coffeSlider
        57
    coffeSlider  
       2018-08-14 10:01:13 +08:00 via Android
    不明白楼主犟什么,有能力发起攻击的还会在乎前端校验吗?前端能防住普通人瞎搞就行了。
    MeteorCat
        58
    MeteorCat  
       2018-08-14 10:07:24 +08:00 via Android
    前端安全远不如后端重要,前端开发用 dev 和 product 都不重要,只是 JS 压缩与否,功能完全没问题。后端没做验证是连服务器都能被黑掉
    wyntalgeer
        59
    wyntalgeer  
       2018-08-14 10:13:34 +08:00   ❤️ 3
    楼主发了个口水贴就跑路了,不明所以的前端小白回复错了,死不认账嘴犟
    V 站日常
    真是欢乐
    我脑子有病回帖
    xianxiaobo
        60
    xianxiaobo  
       2018-08-14 10:54:26 +08:00
    前端安全有意义,但是很小很小很小,小到除非你是某些特定类型的公司,不然根本没必要去做。
    channg
        61
    channg  
       2018-08-14 11:00:45 +08:00
    可能是个假码农
    lrh3321
        62
    lrh3321  
       2018-08-14 11:01:19 +08:00
    安全明显是看后端的,怎么可能会去信任前端传过来的数据。
    yangxiongguo
        63
    yangxiongguo  
       2018-08-14 11:04:42 +08:00
    别人在跟你讨论后端数据验证问题,扯什么跨站攻击呢?扯犊子吧!
    python
        64
    python  
       2018-08-14 11:06:28 +08:00
    年轻真好, 任性...
    jotsai
        65
    jotsai  
       2018-08-14 11:11:58 +08:00   ❤️ 1
    真是逗,xss 和 csrf 还不是要靠后台过滤和校验
    SakuraKuma
        66
    SakuraKuma  
       2018-08-14 11:15:15 +08:00
    年轻真好,居然验证给前端做。。
    前端验证是为了体验好不好????? #17 的例子完全就是后端的锅。
    差点笑出声。
    甚至怀疑你在钓鱼。
    jin5354
        67
    jin5354  
       2018-08-14 11:16:02 +08:00   ❤️ 2
    讨论问题别转进(从后端数据验证跑到跨站攻击),别臆测(说一句理解一句,不要自己立靶子自己打),别制造不平等(我小白,别人都是大佬)。。不然这问题就没的讨论了
    yamedie
        68
    yamedie  
       2018-08-14 11:19:16 +08:00
    我搞不懂你们槽点在哪里, 我说过前端验证[取代后端]了吗? 我一直在强调做 2 次验证好吗?

    腾讯云学生机 360 元那次 bug 营销, 你们这些毕业多年凡是买了的, 哪个不是把 select 框 value 改掉再提交的?
    chinvo
        69
    chinvo  
       2018-08-14 11:25:20 +08:00
    “做 2 次验证好” 不等于 “前端用 dev 版不好”

    槽点就是不存在“前端安全”一说

    表单篡改、跨站提交这些问题,前端是一个都解决不了的
    chinvo
        70
    chinvo  
       2018-08-14 11:29:04 +08:00
    你自己在 #68 举的例子更是对前端验证的否定例子,你前端写的再复杂,混淆再严密,还不是 DevTool 直接就改了,数据交易就是要放在后端,用户输入和前端数据就是划等号的,前端(包括网页和 App )来的数据就是不能被信任。

    前端验证只是用户体验的一环,Ajax 技术解决的问题就是“用户等待返回结果时间长”、“页面刷新白屏不友好”,不要因为带“验证”两个字就把前端验证真的当数据校验了。
    yamedie
        71
    yamedie  
       2018-08-14 11:31:49 +08:00
    @chinvo 我来解释为什么用 dev 版不好? 因为前端代码没经过任何混淆就暴露在外, model 层数据整理的明明白白供你调试, 比那些 jQuery 开发的项目还容易让人搞懂业务逻辑. 假设前端调 ajax 还经过了前后台共同约定的 seed 做了参数加密签名(sha1 那些非对称加密), 你的签名加密方式也暴露的明明白白, 别人掌握了伪造接口签名, 就能用个 postman 轻松修理你们后端
    swalle
        72
    swalle  
       2018-08-14 11:34:07 +08:00
    真是难沟通啊
    rockyou12
        73
    rockyou12  
       2018-08-14 11:34:32 +08:00
    @yamedie 任何前端加密都是不可靠的,及时混淆了还不是明文,前端加密除了 https 没有任何靠谱的办法,混淆只能稍微增加人家阅读代码的时间
    chinvo
        74
    chinvo  
       2018-08-14 11:37:14 +08:00   ❤️ 2
    @yamedie #71 所以你落入误区了

    前端任何数据都不能被信任,前端不应该有任何加密和签名逻辑,前端借口暴露之后不应该导致大规模的伪造请求

    你即使混淆了,DevTool 也能给你 Beautify,你即使加签名了,也能轻松找到签名逻辑和 seed

    我来跟你讲你说的几个问题怎么解决

    1、token 鉴权,比如 OAuth,怕泄漏的数据都只能用户访问,这样 token 泄漏了也只能访问用户自己的数据,token 有效期一过也不能继续访问
    2、走 TLS,中间人和旁路设备不能窃听前后端数据交互
    3、防爬虫措施,识别脚本流量
    cjw1115
        75
    cjw1115  
       2018-08-14 11:37:44 +08:00   ❤️ 1
    个人拙见,一个良好的后端,应该是对前端保持完全不信任的态度。
    xycool
        76
    xycool  
       2018-08-14 11:37:48 +08:00   ❤️ 1
    哈哈,真的笑死我了,原来你司的非对称加密的私钥是放在前端的吗。还加密方式暴露的明明白白。
    还有你真的以为不用 dev,混淆之后,你们加密方式就不暴露了???????
    @yamedie
    xycool
        77
    xycool  
       2018-08-14 11:39:10 +08:00
    活在自己的世界真的阔怕。真的是浪费时间回贴,还不如多写几行代码。
    klesh
        78
    klesh  
       2018-08-14 11:40:16 +08:00 via Android
    @yamedie 后端不相信前端验证没毛病
    首先,这不代表前端就不能验证或者不应该验证
    其次,就算你生产部署了,然后人家不能直接模拟 ajax 请求?伪造报文不要太容易。
    最后,vue 部署成开发模式当然是不对的。但由此引发安全问题后端的锅很大
    moonsola
        79
    moonsola  
       2018-08-14 11:45:36 +08:00
    @yamedie #68
    大家都说了多少楼了,前端要验证,但是与安全无关,前端验证保证体验,后端验证保证安全。
    前端代码再怎么混淆,总归是要毫无保留地暴露出来。前端用 js 进行数据加密都是自欺欺人,要不然也不会有 https 了。
    yamedie
        80
    yamedie  
       2018-08-14 11:48:52 +08:00
    @xycool 不瞒你说我司真的是前端算 signature 的, 但同时所有请求也用了 OAuth 的 token, 两种鉴权方式一起用.
    但我们的 java 没做到自己信息只有自己能查, 只要 token 和签名正确了, 也能冒充其他用户身份,只要篡改一下用户 id 就行了,所以我觉得我们的 java 不行,没做到 74 楼说的用户只能访问自己数据(可能接口安全他们只差一步而已).
    所以我觉得,只要哪天微信 webapp 的浏览器限制被人破解了,我们这个破系统分分钟完蛋,因为后端虽然鉴权了,但根本没法防止用户在客户端篡改伪造身份.
    leitwolf
        81
    leitwolf  
       2018-08-14 11:51:23 +08:00
    我从做 web 编程开始就知道“前端一切数据都是不可信的”这一规则。
    不知道会不会有人理解成“前端人员不可信任”,哈哈!
    leitwolf
        82
    leitwolf  
       2018-08-14 11:54:49 +08:00
    @yamedie 这是你们公司错误的做法,并不代表行业是这样。所以你真要切磋的话,应该是跟你们公司的后台 java 谈,而不是跟大伙在这里谈。
    gongpeione
        83
    gongpeione  
       2018-08-14 11:59:10 +08:00
    1、该不该用 dev ?当然不该,降低了其他人做奇怪事情的成本
    2、前端需不需要做加密?可以做,但是意义不是特别大,还是上 HTTPS 比较好
    3、前端需不需要做校验?最好是要,体验更好
    4、后端需不需要做校验?任何时候都要,不能信任用户传来的数据
    5、前端校验和后端校验哪个重要?我认为同等重要
    agagega
        84
    agagega  
       2018-08-14 12:01:57 +08:00
    @yamedie
    你这个问题和反爬虫本质上是相似的。可以用种种手段区分正常地从浏览器发出的请求和用户用 Postman 等工具发出的请求,但无论如何不可能 100% 精确。这才是在前端各种校验、混淆、验证、加密的意义。但是把这个当做安全保障,就有问题了。无论如何都要有自己的 API 接口暴露的可能。
    terranboy
        85
    terranboy  
       2018-08-14 12:01:59 +08:00
    @yamedie 想干点什么的 并不走你的前端 怎么去校验呢 所以前端不要和安全挂钩
    binux
        86
    binux  
       2018-08-14 12:10:20 +08:00
    @yamedie #80 我没实际操作过,但是随便查了一下 “微信 小程序 抓包”,微信浏览器还是 http/https 协议的啊。抓个包分分钟。
    而且我觉得你们后端根本没有做错,虽然说签名是没有必要的,但是用了 OAuth 鉴权就是安全的,其他的用户根本不可能冒充别人的 token。

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

    这让我想到了多年前搞的一个网站,该下页面里面的“ role_id ”就能越权……
    binux
        88
    binux  
       2018-08-14 12:28:04 +08:00
    @chinvo #87 如果后端验证了 token 应该就是没问题的啊,token 又不像是 role_id 是可以预测的。
    chinvo
        89
    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
        90
    yamedie  
       2018-08-14 12:35:17 +08:00
    @binux 不是冒充 token, 而是没有进行 token 与入参的比对和鉴权(判断 token 的主人和入参的 userId 是不是同一个人), 这个问题我跟后端提过多次, 现在新接手的人愿意去改掉了.

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

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

    后端就不应该相信从任何地方传来的数据是正确的,因为前端不是后端唯一的数据来源,有太多的方法绕过前端了。
    Govda
        99
    Govda  
       2018-08-14 15:41:21 +08:00
    你怎么写我不管,但是 dev 出来的 js 真 tm 大啊
    romisanic
        100
    romisanic  
       2018-08-14 15:47:46 +08:00
    常规是接口不信任前端传过来的任何数据,所以接到之后还需要做必要的验证
    但是不是说所有的验证都需要跟后端交互之后才能拿到结果,这样太浪费了,开发起来麻烦不说,用户体验也不太好
    一般前端需要做一些必要的验证,比如一些逻辑关系,必填,格式等
    但是后端仍然需要验证一些必要的内容,作为防御。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2719 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:32 · PVG 15:32 · LAX 23:32 · JFK 02:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.