作为一名前端,感觉很多公司的前端安全非常脆弱。就这两年面试的公司来说,很多创业公司不注重前端安全。虽然 IE8 以上浏览器以及 Vue.js 这一类框架对 XSS 攻击做了一定的防范,但仍免不了无意或故意写出有漏洞的代码,随随便便把 cookie 给搞走。当然,很多公司的前端只用 jQuery 就不提了,很多前端流行:老夫拿起 jQuery 就是干。真想反问, jQuery 尤其是 jQuery 的早期版本没有做非常好的 XSS 防范,你真能时时刻刻考虑自己写的代码是否有 XSS 漏洞?
不太了解后端,感觉大部分公司后端安全做的还可以, SQL 注入什么的感觉大家都挺注意的。只是有些疑问,为何前端安全那么脆弱。
![]() | 1 daryl 2017-04-03 10:12:53 +08:00 ![]() 其实讲道理, xss 也该是后端防范的= = |
![]() | 2 dubuqingfeng 2017-04-03 10:17:16 +08:00 via Android 其实讲道理, xss 也该是前后端防范的= =,更何况还有 csrf ,点击劫持,造成的蠕虫,说明白了还是水平太差 |
![]() | 3 brucefeng 2017-04-03 10:17:34 +08:00 前端即使做了安全,后端还会继续做的。前端承担交互功能,做安全没什么实质性作用。 |
![]() | 4 lujiajing1126 2017-04-03 10:18:26 +08:00 via iPhone ![]() 不觉得安全和用什么框架,类库有关系 |
![]() | 5 chunqiuyiyu 2017-04-03 10:19:24 +08:00 不觉得安全和用什么框架,类库有关系 +1 |
![]() | 6 U7Q5tLAex2FI0o0g 2017-04-03 10:34:33 +08:00 不觉得安全和用什么框架,类库有关系 +2 |
![]() | 7 U7Q5tLAex2FI0o0g 2017-04-03 10:37:59 +08:00 先问是不是,再问为什么 |
![]() | 8 sammo 2017-04-03 10:38:09 +08:00 via iPhone 私以为是这只是不重视集成测试的诸多后果之一 |
![]() | 9 momocraft 2017-04-03 10:38:38 +08:00 (只会用 API) 和 (对安全没概念) 可能有关联性。要保证安全也需要能深入研究。 |
![]() | 10 peneazy OP @lujiajing1126 @chunqiuyiyu @littleylv 就 Vue 来说,若其它环节都没有做任何防范处理(当然这种可能非常小), 第二种写法就存在 XSS 风险 <span>Message: {{ msg }}</span> <span>Message: {{{ msg_html }}}</span> |
![]() | 11 wuling 2017-04-03 10:59:50 +08:00 私以为是大部分公司不重视或者没有相关保障措施。安全是个很复杂的东西,不能光靠程序员自律,一来安全知识领域很深,普通程序员最多做到最基本的注意事项。二来受限于业务进展,顾不了那么多东西。如果公司没有安全部门,没做专门安全测试,光靠自律就能安全了?不可能的 |
![]() | 12 sagaxu 2017-04-03 11:04:51 +08:00 后端的职责,任何数据过来,都不该破坏或者影响其它正常数据,如 SQL 注入。 前端的职责,后端返回的任何数据,展示时都自己做好转义,比如 XSS 。 前后端一起合作完成的,例如 CSRF 。 后端在 controller 里统一转义,或者清洗后再入库,都是中了 PHP Magic Quotes 的遗毒 |
13 muziki 2017-04-03 11:13:53 +08:00 via iPhone 因为有价值观加成啊 什么?你说这儿不安全?罚你五个月饼好了 |
![]() | 14 peneazy OP |
![]() | 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 文档 |
![]() | 17 Biwood 2017-04-03 11:27:55 +08:00 via Android 360 网站监测 jQuery1.x 的最新版有 XSS 漏洞,能具体说说什么样的漏洞么,全世界那么多网站都在用的库,波及范围太广了吧 |
![]() | 18 cjyang1128 2017-04-03 11:27:59 +08:00 xss 现在危害性也不是很高,只要后端返回 cookie 的时候把关键性的 cookie (比如 session id )设置为 secure 就行了。其他的 xss 只能恶心恶心人 |
![]() | 19 EyreFree 2017-04-03 11:31:26 +08:00 via iPhone 钱没花到位或者压根不在乎,一般是亡羊补牢,没人搞我或者有人搞但是没出大乱子就不管。 举一个不太适当的例子:创业公司花三千五招了个实习生搞前端还指望什么安全... |
![]() | 20 Luckyray 2017-04-03 11:32:27 +08:00 via iPhone 没钱啊 |
![]() | 23 zhengxiaowai 2017-04-03 11:51:42 +08:00 因为对挣钱没有一点用处,国内什么鸟风气,还不知道吗?金钱至上,当安全威胁到挣钱时候才会去搞得,比如大一点公司 |
![]() | 24 ma63d 2017-04-03 12:17:31 +08:00 @peneazy 搞笑了,不觉得安全和用什么框架,类库有关系 +1 同时, Vue 文档苦口婆心的说了一万次谨慎使用 HTML 插值和 v-html 。竟然也拿出来成为 Vue 的黑点。 现在这些人为了搞个大新闻真是什么损招都使得出啊。 |
![]() | 25 ma63d 2017-04-03 12:20:39 +08:00 楼主千万别用原生 JS 了, document.innerHTML 危险更大更恐怖啊。。逃 |
![]() | 26 changwei 2017-04-03 12:43:08 +08:00 via Android 这种还算小的,我现在看我同学写的各种类似于毕业设计的小项目,各种越权漏洞(数据库查询的时候 where 只接收 url 带上的 id ,不带上 session 里面的 user id 做限制条件)还有下载漏洞(../../这种的)还有上传不校验扩展名的(直接上传一个 jsp 到你服务器上),现在我们还在学最基础的 jsp ,至于其他 xss , csrf 的就更不用说了,从学校开始就有这种只看分数只看效果的思想,不重视隐含问题的习惯,只能靠以后职业生涯中的碰壁来修正吧。 |
![]() | 27 MrMario 2017-04-03 12:52:13 +08:00 via iPhone @cjyang1128 不妨再加上 http-only ^_^ |
![]() | 28 dreamcountry 2017-04-03 13:17:07 +08:00 楼主这标题扣的帽子太大了,你说国内某些互联网公司还差不多 |
![]() | 29 cjyang1128 2017-04-03 13:30:38 +08:00 @MrMario 对,就是 http-only |
![]() | 30 lujiajing1126 2017-04-03 13:38:52 +08:00 via iPhone |
![]() | 31 peneazy OP ![]() @ma63d 我明明在正文里说 Vue 好,做了一定的防范,相比 jQuery 更能减少没有安全意识前端出漏洞的可能 |
![]() | 32 xiaoyu233 2017-04-03 13:42:51 +08:00 因为前端漏洞不如后端漏洞简单粗暴? |
33 julyclyde 2017-04-03 15:55:29 +08:00 前端作为一个“界”存在于业内也就七八年吧,哪儿有那么多经验流传下来啊…… |
![]() | 34 wobuhuicode 2017-04-03 16:05:51 +08:00 via iPhone 不要相信任何传过来的信息……这个是做后端最基本的原则……前端只是用来显示,不是写逻辑的 |
![]() | 35 GG668v26Fd55CP5W 2017-04-03 16:22:12 +08:00 via iPhone 前端还要担心安全的时候,说明后端没做好。 |
36 jackmasa 2017-04-03 16:38:31 +08:00 跟库关系当然大拉。。。 插个题,有人知道这句代码会导致什么安全问题吗? ```Javascript jQuery.get(location.pathname) ``` |
![]() | 37 loading 2017-04-03 16:46:58 +08:00 via Android 这个锅应该前端没什么好背的。 |
![]() | 38 bdbai 2017-04-03 17:37:18 +08:00 via Android @cjyang1128 你说的是 xss 还是 csrf ? |
![]() | 39 Reign 2017-04-03 18:14:00 +08:00 前端再怎么安全,都是要让后端重新来验证的,还不如放弃前端过滤 |
![]() | 40 mrjoel 2017-04-03 18:58:49 +08:00 via iPhone 前端 xss 的受害者一般是用户 |
![]() | 41 xucheng 2017-04-03 20:24:45 +08:00 via iPad XSS 不是应该靠 Content Security Policy就可以解决的吗 |
![]() | 42 jzz7280 2017-04-03 22:41:44 +08:00 不然网络专业就不会转行了 |
![]() | 43 erevus 2017-04-03 23:29:25 +08:00 |
![]() | 44 aboutTime 2017-04-04 00:34:38 +08:00 我有一天闲来无事,用 react 试了下写点有 csrf 漏洞的代码,发现框架已经对 csrf 做了处理 现在的浏览器和框架应该对这方面有处理 私以为,前端安全怎么做也是一层纸,不过做还是要做的 |
![]() | 45 vincentqi 2017-04-04 00:47:07 +08:00 安全成本也算在成本里,一个治安良好的社区没必要家家装防盗窗 |
![]() | 47 Jiavan 2017-04-04 10:06:49 +08:00 via Android 这个根本还是得后端来做验证,前端只是辅助性的防范,真正想 attack 的完全可以直接绕过 js 验证,倒是觉得某些公司很少考虑后端需要做这些事情 |
![]() | 48 ryd994 2017-04-04 10:45:53 +08:00 via Android 因为他们后端也没注意 |
![]() | 51 hweining 2017-04-05 22:53:29 +08:00 |