当前位置: 首页 > article >正文

前端如何丢掉你的饭碗?

对于后端而言,我们常有“删库跑路”的说法,这说明后端的操作对于信息系统而言通常影响很大,可以轻易使信息系统宕机、崩溃,直接导致项目失败。所以,不要去逼后端程序员!

作为前端程序员,我们似乎自己也认为前端相比于后端,代码的安全风险更低。一种常见的看法是,前端随便整,掀不起大波浪!大不了是一些显示性问题!

我们可以这样开玩笑,但作为一名前端开发者,良好的安全意识仍然是必需的,事实上一些问题不仅仅作用于显示层面。更现实一些的层面是,你如何确保你的代码运行稳定,不会给公司、客户带来损失,进而丢掉自己的饭碗?

这不是危言耸听,如果意识缺乏,前端是有可能引发重大问题,丢掉自己的饭碗的。本文试图分析,前端究竟哪些操作可能存在重大风险,以便对各位有所启发。

第一章 代码兼容性考虑——意识不足可能丢掉你的饭碗

有人可能认为,代码兼容性问题,即便出现影响也不大,其理由是:

  • 并非开发者逻辑漏洞,而是客户端、平台、设备千差万别所致
  • 大部分的用户是完全正常的
  • 代码兼容性问题无法得到100%的保障

这么说,实际上是低估了代码兼容性的影响。我们不否认,许多兼容性对用户影响相对比较小,或者说影响的用户数量很少,又或者影响的是那些使用陈旧设备、客户端版本较低、相对不那么重要的客户。

但,代码兼容性是有可能导致你丢掉饭碗的,理由是

公司都是追求效益至上,一旦因为兼容性问题影响到几分之一以上的用户,这仍然算是极为严重的问题。比较典型的案例有,ios平台不支持某属性,安卓某版本以下的chrome不支持某属性、低于某版本的app不支持某jsbridge调用等,直接导致客户端白屏。因此给开发者的建议是 ,对于js、正则、css不熟悉的写法,一定需要查明兼容性,明确影响范围,尽量避开不熟悉的写法。譬如,正则断言、findLastIndex这都是笔者身边真实发生过引发内部复盘的重大代码性事件。当然,就影响而言,一般css兼容性导致的影响会小很多。

一旦到这种层级,内部复盘追责几乎是少不了的。影响到几分之一的用户,对于公司的客户收入可能是影响很大的。、

第二章 业务兼容性考虑——老用户直接崩溃的重大事件

业务兼容性,是一个极容易被程序员忽略的角度,尤其前端程序员。更准确的讲,这应该是产品经理、程序员共同考虑的问题。

如果产品经理在业务兼容性考虑上有所欠缺,那么程序员也应该做适当考虑和提醒,切忌不做思考的直接编码。

下面是一些典型的案例:

  • 业务层面要求修改分享链接:这时程序员应该高度敏感,这是可能导致存量用户崩溃的重大事件。这就是说,虽然软件系统的所有展示都已经替换成了新链接,但对于以前已经分享出去的老链接,用户仍然会使用,如果老链接直接不可用,就会导致大量崩溃。用户完全过渡到接受新链接,必然是需要一个过程,不可能是一蹴而就的。这个事件在笔者身边曾多次发生过。
  • 业务层面需要调整表单字段。这时,程序员应该意识到,对于老用户而言,他的一些字段已经存入数据库,而在表单调整时,他的数据可能会被读出,自动填入表单,但由于表单字段的调整,有可能直接导致显示层面、流程层面的直接问题,这也属于业务兼容性的重大事件。

这种业务兼容性事件,往往是影响到存量用户的使用流程,影响不可谓不大。

第三章 业务流程把控——评审不细致可能丢掉你的饭碗、

听起来似乎评审和丢饭碗没有直接的关系,这也就是个工作方式的问题,但实际上,在评审中,如果不够细致,可能导致技术上无法实现、项目延期,就有可能引发严重后果了。

就笔者亲身经历而言,在流程式交互设计时,产品经理容易想当然的将不同流程放至不同页面,又存在跨页面的大量判断和数据传递。这时,一名专业的程序员应该斩钉截铁的驳斥产品经理的不合理设计。笔者曾经两度迁就这种不合理的设计,导致项目存在延期风险、技术上过于复杂,虽然最终完成了,但仍让我心有余悸。、

所以,如果你不能从专业的角度,纠正产品经理的复杂设计,那么你可能最终在实现上出现困难,项目延期,最终导致内部复盘,责任会挂在你的身上。

第四章 区分环境意识——不良习惯可能会让你丢掉饭碗

在开发中为了效率或者方便测试,往往会写定一些配置,这些配置仅仅适用于开发、测试环境,一旦上线,则需要替换成真正的线上配置。

这就要求我们在上线之前,一定要做好记录,哪些是需要做替换的,并在上线前替换,一旦忘了替换,则会引发线上问题。

譬如,某购物软件给用户的推送消息变成了“测试”,则可以想象开发人员可能是忘了替换一些开发中写死的配置,这无疑会给用户带来不良影响。

第五章 权限配置——缺乏意识可能会直接导致上线失败

 对于公司的服务器而言,一般会配置权限,因此一些开发和测试环境能跑通的情况,到了正式环境机器上面,由于权限限制,就无法跑通了。

前端比较典型的有csp限制等,这些限制可能使得正式环境上面脚本无法运行,从而功能无法正常使用。

这要求开发者提早熟知公司服务器的权限限制,提早与运维部门确定,做好上线权限配置方案。

第六章 攻击防范——缺乏意识可能引发系统被入侵

  • 前端一般需要防范xss攻击,这要求代码中一定不能给恶意用户植入恶意代码的机会,如果缺乏这种意识,当公司遭遇攻击,就离开丢掉饭碗不远了。当然,远远不止xss攻击。
  • 另外,公司的安全系统可能要求不能直接使用第三方脚本,要使用则必须经过安全审查,如果不经安全审查直接调用第三方脚本,则可能是触发安全红线的行为,可能会让你丢掉饭碗。
  • 除此之外,公司可能有一些敏感信息不能暴露给用户,这时需要做屏蔽或者替换处理。譬如,敏感域名不能向外暴露。

作为程序员,一定需要时时有安全意识,尤其对于小型企业,安全上面可能不够完善,这时程序员切记不能墨守成规不去防范,安全上面需要反复深入研究。

第七章 卡死——死循环可能让你丢掉饭碗

前端虽然不直接操作用户数据库,但在程序中会存在大量定时器、循环、遍历的场景,这时,程序员如果不能充分掌控自己代码的边界,那么就很可能写出死循环这样的代码,而一旦出现这种情况,那么最轻也会内部复盘!

对策是,凡是循环、遍历、定时器都需要清晰掌控你的边界。

莫言前端足够安全,稍有不慎,仍然可能丢掉你的饭碗。

那么,你还知道前端哪些会引发职场生存危机的事件呢,欢迎留言讨论。


http://www.kler.cn/a/1756.html

相关文章:

  • QML 之状态
  • 运行StableDiffusionInpaintPipeline的Example时报错:OSError: Cannot load model runwayml/stable-diffusion-...
  • XDP (eXpress Data Path):在操作系统内核中实现快速、可编程包处理
  • 单例模式的写法
  • 教育元宇宙的优势与核心功能解析
  • C#使用Tesseract C++ API过程记录
  • JS判断是否为base64字符串如何转换为图片src格式
  • 【C++学习】模板进阶——非类型模板参数 | 模板的特化 | 分离编译
  • 基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇
  • Python中 5个非常有用的单行代码
  • 基于BP神经网络的图像跟踪,基于BP神经网络的细胞追踪识别
  • 带你一文透彻学习【PyTorch深度学习实践】分篇——线性模型 梯度下降
  • JS中的变量
  • 安全防御之防火墙篇(二)
  • 学习系统编程No.6【进程控制】
  • 字符函数和字符串函数【下篇】
  • 关于多层板,你了解多少?
  • 屌炸天 — 国外同行这样用ChatGPT提高Flutter开发的效率
  • JavaEE简单示例——基于注解的AOP实现
  • 【IT女神勋章挑战赛名单公布】:看看谁获奖啦!
  • 树莓派Pico W无线开发板UDP协议MicroPython网络编程实践
  • python如何快速采集美~女视频?无反爬
  • java源码阅读---ReentrantLock源码解析
  • Monkey Test简单介绍
  • 树莓派(3B):启动流程,系统初始化配置,引脚图图示说明
  • 【云原生|Docker】04-docker的资源限制