V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
peneazy
V2EX  ›  程序员

国内互联网公司,为何不注重前端安全

  •  
  •   peneazy · 2017-04-03 10:09:58 +08:00 · 8365 次点击
    这是一个创建于 2826 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为一名前端,感觉很多公司的前端安全非常脆弱。就这两年面试的公司来说,很多创业公司不注重前端安全。虽然 IE8 以上浏览器以及 Vue.js 这一类框架对 XSS 攻击做了一定的防范,但仍免不了无意或故意写出有漏洞的代码,随随便便把 cookie 给搞走。当然,很多公司的前端只用 jQuery 就不提了,很多前端流行:老夫拿起 jQuery 就是干。真想反问, jQuery 尤其是 jQuery 的早期版本没有做非常好的 XSS 防范,你真能时时刻刻考虑自己写的代码是否有 XSS 漏洞?

    不太了解后端,感觉大部分公司后端安全做的还可以, SQL 注入什么的感觉大家都挺注意的。只是有些疑问,为何前端安全那么脆弱。

    第 1 条附言  ·  2017-04-03 13:51:02 +08:00
    标题改成:国内某些互联网公司
    52 条回复    2017-04-22 16:07:50 +08:00
    daryl
        1
    daryl  
       2017-04-03 10:12:53 +08:00   ❤️ 1
    其实讲道理, xss 也该是后端防范的= =
    dubuqingfeng
        2
    dubuqingfeng  
       2017-04-03 10:17:16 +08:00 via Android
    其实讲道理, xss 也该是前后端防范的= =,更何况还有 csrf ,点击劫持,造成的蠕虫,说明白了还是水平太差
    brucefeng
        3
    brucefeng  
       2017-04-03 10:17:34 +08:00
    前端即使做了安全,后端还会继续做的。前端承担交互功能,做安全没什么实质性作用。
    lujiajing1126
        4
    lujiajing1126  
       2017-04-03 10:18:26 +08:00 via iPhone   ❤️ 3
    不觉得安全和用什么框架,类库有关系
    chunqiuyiyu
        5
    chunqiuyiyu  
       2017-04-03 10:19:24 +08:00
    不觉得安全和用什么框架,类库有关系 +1
    littleylv
        6
    littleylv  
       2017-04-03 10:34:33 +08:00
    不觉得安全和用什么框架,类库有关系 +2
    littleylv
        7
    littleylv  
       2017-04-03 10:37:59 +08:00
    先问是不是,再问为什么
    sammo
        8
    sammo  
       2017-04-03 10:38:09 +08:00 via iPhone
    私以为是这只是不重视集成测试的诸多后果之一
    momocraft
        9
    momocraft  
       2017-04-03 10:38:38 +08:00
    (只会用 API) 和 (对安全没概念) 可能有关联性。要保证安全也需要能深入研究。
    peneazy
        10
    peneazy  
    OP
       2017-04-03 10:45:16 +08:00
    @lujiajing1126
    @chunqiuyiyu
    @littleylv
    就 Vue 来说,若其它环节都没有做任何防范处理(当然这种可能非常小), 第二种写法就存在 XSS 风险
    <span>Message: {{ msg }}</span>
    <span>Message: {{{ msg_html }}}</span>
    wuling
        11
    wuling  
       2017-04-03 10:59:50 +08:00
    私以为是大部分公司不重视或者没有相关保障措施。安全是个很复杂的东西,不能光靠程序员自律,一来安全知识领域很深,普通程序员最多做到最基本的注意事项。二来受限于业务进展,顾不了那么多东西。如果公司没有安全部门,没做专门安全测试,光靠自律就能安全了?不可能的
    sagaxu
        12
    sagaxu  
       2017-04-03 11:04:51 +08:00
    后端的职责,任何数据过来,都不该破坏或者影响其它正常数据,如 SQL 注入。
    前端的职责,后端返回的任何数据,展示时都自己做好转义,比如 XSS 。
    前后端一起合作完成的,例如 CSRF 。

    后端在 controller 里统一转义,或者清洗后再入库,都是中了 PHP Magic Quotes 的遗毒
    muziki
        13
    muziki  
       2017-04-03 11:13:53 +08:00 via iPhone
    因为有价值观加成啊
    什么?你说这儿不安全?罚你五个月饼好了
    peneazy
        14
    peneazy  
    OP
       2017-04-03 11:18:07 +08:00
    @sammo
    @momocraft
    @wuling
    @sagaxu 嗯,普通程序员有安全概念就很难得了,考虑这么多是会影响业务开发进度,关键还是要有安全部门
    peneazy
        15
    peneazy  
    OP
       2017-04-03 11:19:18 +08:00
    @muziki 从中秋到清明,这个梗还在。。。
    Moonless
        16
    Moonless  
       2017-04-03 11:24:20 +08:00 via Android
    @peneazy
    双大括号会将数据解释为纯文本,而非 HTML 。为了输出真正的 HTML ,你需要使用 v-html 指令:
    <div v-html="rawHtml"></div>
    被插入的内容都会被当做 HTML —— 数据绑定会被忽略。注意,你不能使用 v-html 来复合局部模板,因为 Vue 不是基于字符串的模板引擎。组件更适合担任 UI 重用与复合的基本单元。
    你的站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。请只对可信内容使用 HTML 插值,绝不要对用户提供的内容插值。

    摘自 vue 文档
    Biwood
        17
    Biwood  
       2017-04-03 11:27:55 +08:00 via Android
    360 网站监测 jQuery1.x 的最新版有 XSS 漏洞,能具体说说什么样的漏洞么,全世界那么多网站都在用的库,波及范围太广了吧
    cjyang1128
        18
    cjyang1128  
       2017-04-03 11:27:59 +08:00
    xss 现在危害性也不是很高,只要后端返回 cookie 的时候把关键性的 cookie (比如 session id )设置为 secure 就行了。其他的 xss 只能恶心恶心人
    EyreFree
        19
    EyreFree  
       2017-04-03 11:31:26 +08:00 via iPhone
    钱没花到位或者压根不在乎,一般是亡羊补牢,没人搞我或者有人搞但是没出大乱子就不管。

    举一个不太适当的例子:创业公司花三千五招了个实习生搞前端还指望什么安全...
    Luckyray
        20
    Luckyray  
       2017-04-03 11:32:27 +08:00 via iPhone
    没钱啊
    peneazy
        21
    peneazy  
    OP
       2017-04-03 11:35:32 +08:00
    @Moonless 哦,就是这个,忘记 Vue 文档已经说明了
    peneazy
        22
    peneazy  
    OP
       2017-04-03 11:38:29 +08:00
    @Biwood 不清楚,可惜乌云上不了了,之前有那么多的学习资源。。
    zhengxiaowai
        23
    zhengxiaowai  
       2017-04-03 11:51:42 +08:00
    因为对挣钱没有一点用处,国内什么鸟风气,还不知道吗?金钱至上,当安全威胁到挣钱时候才会去搞得,比如大一点公司
    ma63d
        24
    ma63d  
       2017-04-03 12:17:31 +08:00
    @peneazy 搞笑了,不觉得安全和用什么框架,类库有关系 +1
    同时, Vue 文档苦口婆心的说了一万次谨慎使用 HTML 插值和 v-html 。竟然也拿出来成为 Vue 的黑点。
    现在这些人为了搞个大新闻真是什么损招都使得出啊。
    ma63d
        25
    ma63d  
       2017-04-03 12:20:39 +08:00
    楼主千万别用原生 JS 了, document.innerHTML 危险更大更恐怖啊。。逃
    changwei
        26
    changwei  
       2017-04-03 12:43:08 +08:00 via Android
    这种还算小的,我现在看我同学写的各种类似于毕业设计的小项目,各种越权漏洞(数据库查询的时候 where 只接收 url 带上的 id ,不带上 session 里面的 user id 做限制条件)还有下载漏洞(../../这种的)还有上传不校验扩展名的(直接上传一个 jsp 到你服务器上),现在我们还在学最基础的 jsp ,至于其他 xss , csrf 的就更不用说了,从学校开始就有这种只看分数只看效果的思想,不重视隐含问题的习惯,只能靠以后职业生涯中的碰壁来修正吧。
    MrMario
        27
    MrMario  
       2017-04-03 12:52:13 +08:00 via iPhone
    @cjyang1128 不妨再加上 http-only ^_^
    dreamcountry
        28
    dreamcountry  
       2017-04-03 13:17:07 +08:00
    楼主这标题扣的帽子太大了,你说国内某些互联网公司还差不多
    cjyang1128
        29
    cjyang1128  
       2017-04-03 13:30:38 +08:00
    @MrMario 对,就是 http-only
    lujiajing1126
        30
    lujiajing1126  
       2017-04-03 13:38:52 +08:00 via iPhone
    @peneazy
    模板渲染里面的 escape 问题应该是比较基础的啊
    你用 jQuery 一样也会有这样的问题
    这和你用什么工具无关
    peneazy
        31
    peneazy  
    OP
       2017-04-03 13:42:27 +08:00   ❤️ 1
    @ma63d 我明明在正文里说 Vue 好,做了一定的防范,相比 jQuery 更能减少没有安全意识前端出漏洞的可能
    xiaoyu233
        32
    xiaoyu233  
       2017-04-03 13:42:51 +08:00
    因为前端漏洞不如后端漏洞简单粗暴?
    julyclyde
        33
    julyclyde  
       2017-04-03 15:55:29 +08:00
    前端作为一个“界”存在于业内也就七八年吧,哪儿有那么多经验流传下来啊……
    wobuhuicode
        34
    wobuhuicode  
       2017-04-03 16:05:51 +08:00 via iPhone
    不要相信任何传过来的信息……这个是做后端最基本的原则……前端只是用来显示,不是写逻辑的
    falcon05
        35
    falcon05  
       2017-04-03 16:22:12 +08:00 via iPhone
    前端还要担心安全的时候,说明后端没做好。
    jackmasa
        36
    jackmasa  
       2017-04-03 16:38:31 +08:00
    跟库关系当然大拉。。。
    插个题,有人知道这句代码会导致什么安全问题吗?
    ```javascript
    jQuery.get(location.pathname)
    ```
    loading
        37
    loading  
       2017-04-03 16:46:58 +08:00 via Android
    这个锅应该前端没什么好背的。
    bdbai
        38
    bdbai  
       2017-04-03 17:37:18 +08:00 via Android
    @cjyang1128 你说的是 xss 还是 csrf ?
    Reign
        39
    Reign  
       2017-04-03 18:14:00 +08:00
    前端再怎么安全,都是要让后端重新来验证的,还不如放弃前端过滤
    mrjoel
        40
    mrjoel  
       2017-04-03 18:58:49 +08:00 via iPhone
    前端 xss 的受害者一般是用户
    xucheng
        41
    xucheng  
       2017-04-03 20:24:45 +08:00 via iPad
    XSS 不是应该靠 Content Security Policy 就可以解决的吗
    jzz7280
        42
    jzz7280  
       2017-04-03 22:41:44 +08:00
    不然网络专业就不会转行了
    erevus
        43
    erevus  
       2017-04-03 23:29:25 +08:00
    @peneazy
    1.安全人员难招,挂出去 JD.只收到了大量实习生简历。
    2.安全落地困难。上 http-only 要推一年.如果是上 CSP 简直是要他们命
    3.没有发生事情,程序员就认为是安全的
    aboutTime
        44
    aboutTime  
       2017-04-04 00:34:38 +08:00
    我有一天闲来无事,用 react 试了下写点有 csrf 漏洞的代码,发现框架已经对 csrf 做了处理

    现在的浏览器和框架应该对这方面有处理

    私以为,前端安全怎么做也是一层纸,不过做还是要做的
    vincentqi
        45
    vincentqi  
       2017-04-04 00:47:07 +08:00
    安全成本也算在成本里,一个治安良好的社区没必要家家装防盗窗
    yanzixuan
        46
    yanzixuan  
       2017-04-04 08:47:29 +08:00
    @Reign 前端验证是防君子,后端验证是防小人
    Jiavan
        47
    Jiavan  
       2017-04-04 10:06:49 +08:00 via Android
    这个根本还是得后端来做验证,前端只是辅助性的防范,真正想 attack 的完全可以直接绕过 js 验证,倒是觉得某些公司很少考虑后端需要做这些事情
    ryd994
        48
    ryd994  
       2017-04-04 10:45:53 +08:00 via Android
    因为他们后端也没注意
    gamexg
        49
    gamexg  
       2017-04-04 12:21:15 +08:00 via Android
    @falcon05 xxs 也是后端负责?
    MrMario
        50
    MrMario  
       2017-04-04 20:49:41 +08:00
    @xucheng #41 说解决太过了,只是缓解措施之一
    hweining
        51
    hweining  
       2017-04-05 22:53:29 +08:00
    mingyun
        52
    mingyun  
       2017-04-22 16:07:50 +08:00
    @yanzixuan 精辟
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2691 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:35 · PVG 20:35 · LAX 04:35 · JFK 07:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.