您现在的位置是:探索 >>正文
初学者漏洞
探索7人已围观
简介第一次写代码的人,十个有九个会栽在同一个坑里:忘了自己是在跟一个极度较真的蠢货打交道。 我见过一个实习生,调试了三小时的登录功能。最后发现是密码框的 name 属性拼错了,passwrod——多了一个 ...
第一次写代码的初学人,十个有九个会栽在同一个坑里:忘了自己是初学在跟一个极度较真的蠢货打交道。
我见过一个实习生,初学调试了三小时的初学登录功能。最后发现是初学密码框的 name 属性拼错了,passwrod——多了一个r。初学浏览器不报错,初学后端收不到数据,初学页面安安静静地转圈。初学他盯着屏幕,初学脸涨得通红,初学嘴里嘟囔着“这不可能”。初学
这就是初学初学者漏洞的第一课:你的代码不会骗你,但你会骗自己。初学你脑子里想的初学是“用户输入密码”,手底下打出来的却是另一个字符串。机器忠实执行了你的拼写错误,然后你反过来质问它为什么不行。
另一个经典案例更蠢。有个朋友写了个循环,想遍历数组里所有元素。他写的是 for (i = 0; i <= arr.length; i++)。多了一个等号。结果数组最后一个元素后面跟着一个 undefined。他找了一下午,最后是我用console.log一行行打出来才看见的。他当时骂了一句:“这他妈也能错?”
能。而且你会一直犯这种错。区别只是频率高低。
还有个更隐蔽的坑——作用域污染。初学者喜欢把所有变量都扔在全局,图省事。结果两个函数用了同一个变量名,互相踩脚。A函数算到一半,B函数改了这个变量,A函数后面全乱了。这种bug最恶心,因为它不报错,只是结果不对。你打断点、看堆栈、查网络请求,最后发现是两行赋值语句打架。
我见过最离谱的一次,是有人用全局变量存了用户ID,然后另一个函数里也用了这个名字存了商品价格。用户下单的时候,订单金额变成了用户ID。客服收到一张价值9527块钱的订单,买家差点报警。
你说这是粗心?不,这是认知问题。初学者脑子里没有“命名空间”这个概念,觉得变量就是个装东西的盒子。实际上变量是有地盘的,你乱放东西,别人也会乱拿。
还有一类漏洞,属于自我感动型。新手写完代码,跑通了,就以为完事了。不测边界条件,不试空输入,不按两次提交按钮。有个同学做了个注册页面,测试的时候填的都是正常名字。上线第二天,有人注册了个空用户名——他忘了加非空校验。数据库里存了一行空白记录,后台列表直接渲染崩了。
更气人的是,他后来在代码里写了个注释:“这里应该不会有人不填吧。”
会。而且会有人填一串空格、填一个emoji、填一万个“啊”。互联网上什么人都有,你的代码要面对的不是你室友,是全世界最无聊、最有破坏欲的那批人。
最后说个心态问题。初学者漏洞往往不是技术不够,是太急着证明自己。写完一段代码就赶紧跑,跑通了就发群里炫耀。结果别人一测,炸了。然后你开始怀疑人生,觉得自己不是这块料。
别这样。我写了七八年代码,上周还因为少了个分号让整个构建挂了。机器就是这样,你认真它认真,你马虎它罢工。跟它较劲没意义,跟自己的习惯较劲才有用。
下次再遇到bug,先别怀疑编译器、别怀疑框架、别怀疑网络。先看看自己变量名拼对没有,看看是不是多了个等号,看看是不是又用了全局变量。八成就是这些地方。
剩下的两成,等你再摔几次,自然就懂了。
Tags:
相关文章
反渗透专用阻垢剂 包装方式
探索反渗透阻垢剂的包装,看着简单,其实藏着不少门道。市面上主流规格就三种:25公斤方桶、200公斤闭口桶,还有1吨级IBC吨桶。别小看这个分类,选错了够你折腾半天。 25公斤方桶最招人喜欢,搬运时一个人就 ...
【探索】
阅读更多外国破解中国彩票漏洞
探索2019年夏天,一条消息在暗网论坛炸开了锅:有人声称找到了中国福利彩票“双色球”的开奖漏洞,并且已经成功套现数百万。消息传得沸沸扬扬,甚至惊动了国内的技术圈。但真相呢?我跟踪了这个事件三个月,最后发现 ...
【探索】
阅读更多django搭建网站
探索Django最让我上瘾的地方,不是它那套“电池齐全”的官方文档,而是当你把数据库表结构改完,敲下那行 python manage.py makemigrations 的时候,终端里滚动出的那些SQL语 ...
【探索】
阅读更多