这几天面试了几个前端,说说感受

2015-12-08 15:12:44 +08:00
 JohnLou

position 定位 4 种说不清,做个二级导航只会用 jquery ,原生 js 不会。

xss 、跨域也不了解。

虽然我也是半桶水,还是前端严重招忽略和鄙视啊。

39156 次点击
所在节点    问与答
102 条回复
unknownservice
2015-12-09 11:02:26 +08:00
你的要求是几年经验啊? 2 年以上答不上来感觉不应该吧。。。
JohnLou
2015-12-09 11:06:22 +08:00
@amrio 实习要 7 千啊,想前年我实习的时候给了 2000 都觉得开心得要死了,当然我还在学校。
JohnLou
2015-12-09 11:07:02 +08:00
@unknownservice 没经验要求,我也才工作不到半年,只想找个帮忙干活的。
DualWield
2015-12-09 11:10:22 +08:00
@jarlyyn xss 怎么和前端关系不大了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
jarlyyn
2015-12-09 12:09:15 +08:00
@DualWield

作为一个从服务器到后台到前端都做的人来说

xss 的确和前端关系不大。

xss 也不该和前端有关系。

所谓的 xss 本质来说也是正常的网页代码片段。

判断这个代码是否是恶意的怎么会由前端来进行呢?

前端在这一个部分做的不应该是输出后台抛过来的内容?

唯一和前端有关的是怎么去解析后台抛的内容吧?

但这个是解析的问题,就如同显示的是 某种过滤规则的代码 /markdown/bbocde 之类。

xss 本身和前端能有啥关系呢……
nino
2015-12-09 12:13:00 +08:00
我的经验来看, position 的问题可以刷掉 60%以上的候选人。
chemzqm
2015-12-09 12:40:08 +08:00
@jarlyyn ajax 都这么多年了,别告诉我你的页面全是后端输出的,
如果页面上使用类似 innerHTML 的方法渲染请求来数据,那就很有可能造成 xss 泄露
成熟的框架类似 angular 和 react 都会把数据 escape 再渲染到 dom
jarlyyn
2015-12-09 13:27:54 +08:00
@chemzqm

难道我说的不就是 ajax 的流程么?

用不用 Innerhtml 重要么?

本质上 escapde 就是种 decode 方法。

因此,做接口的时候需要明确输出的代码该怎么 decode,不对么?

如果会有 XSS 问题

也是 “后台不加处理的输出了原始的 html 代码”的问题。

xss 问题归结到前端不是和后台的数据验证交由前端来处理一样么?
jarlyyn
2015-12-09 13:31:10 +08:00
@chemzqm

更确切点说。

作为一个后台接口 /模型来说。

一个文档告诉前端,这个数据内容是什么,很重要吧?

纯文本?

html?

markdown?

bbcode?

先想清楚这个,再来考虑问题是不是前端的问题吧。

大部分安全问题不该由前端来负责,这个是必须的。
DualWield
2015-12-09 14:23:18 +08:00
@jarlyyn xss 分为 2 类:存储型 XSS 与反射型 XSS,你说展现后台传送的数据属于存储性的。反射性的那就和后端没什么关系了
fwings260
2015-12-09 14:37:24 +08:00
刚开始学都是用原生
后来发现用框架方便,就开始 jquery
然后。。。原生就不会写了。。。

然并卵,老子转行了!
nino
2015-12-09 14:40:09 +08:00
@jarlyyn 就算是存储型 XSS 也是需要前端后端工程师都重视的,你不能确保每个点都做过 escape ,所以前端应该在前端的范畴来预防
lijingyu68
2015-12-09 14:45:02 +08:00
我一直觉得前端工程师的定位是写 js ,而 css 是美工来写的。所以,前端面试应该重逻辑和算法、服务器等等,而 CSS 是慢慢积累出来的经验,对前端影响不大。
jarlyyn
2015-12-09 14:47:06 +08:00
@DualWield

展现后台传送的数据和存储性不存储性有什么关系…………

你说的问题无非是 前端在 JS/模板中不加处理的把部分 get 参数 /hash 等当作 html 来处理了呗。

也就是前端跳过了后台去处理罢了。

也就还是那个问题

“后台的数据验证交由前端来处理”

当然,你一定要说你做的是网页 app/工具,没有后台。

那 ok,是我的错。

理论上,前端也能操作数据库不是么?
jarlyyn
2015-12-09 14:48:30 +08:00
@nino

escape 本身是一种 Decode 的方式。

我认为 不能作为一种 默认的 处理方式。

decode 的方式本身就是需要前后端商议的部分。
nino
2015-12-09 14:51:11 +08:00
@jarlyyn 你这是最理想化的情况,实践中你调用的接口可能并没有这个商议的过程,或者是第三方的接口,如果前端工程师没有 XSS 的基本概念,你的应用是很脆弱的。
luoway
2015-12-09 14:54:08 +08:00
@lijingyu68 事实上很多稍微复杂点的效果就要用 JS ,所以你不能把偏设计的前端贬为美工,虽然他 /她得耍 PS
jarlyyn
2015-12-09 14:58:09 +08:00
@nino

OK 。你可以认为这是理想化的情况。

那么,这个问题其实会更复杂。

也就怎么默认处理后台抛过来的长的像 html 的东西。

我个人觉得,直接简单粗暴的 escape ,也不是万能的吧?

至少在我的观点中,后端管数据,前台管表现。

xss 这种东西牵涉到数据的处理与验证。个人觉得不适合让前端来处理。

最后,个人意见。

如果前端工程师没有 xss 的基本概念,应用可能是很脆弱的。

但依靠前端工程师去做 xss,应用一定是脆弱的。

毕竟,现在 api 调用+web/app/mobile 的形式也很多吧。这东西不从源头上去处理真的好么?
nino
2015-12-09 15:02:20 +08:00
@jarlyyn 我并不是否认你的观点,但是百密总有一疏,我们能做的就是尽量从各个方面降低 XSS 的风险。所以前端工程师也是有必要了解 XSS 的。
jarlyyn
2015-12-09 15:04:07 +08:00
@nino

的确,了解肯定还是有好处的。

毕竟有时候可能做一些绕过后台的页面。比如在线页面,比如在线工具。比如一个简单的前台显示页。设置是为了降低服务端的负担。

我有点思维定势了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/242002

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX