程序员,长点心吧,记一次给老外写js插件被骗故事 + 防范指南

2019-02-22
阅读量
文章

前因

前几天一个外国友人发邮件给我,有偿帮他写一个提交抢签证的脚本。心里想着反正也没事,还可以锻炼自己的英文水平,就加了他的 whatsApp,一开始他非常的友好,各种舔,说我们中国人是很聪明的,然后划重点他说是 Github 找到的我,一想确实我在Github 留下了我的邮箱。

以下是展示友好的对话。 WechatIMG292.jpeg

WechatIMG291.jpeg

WechatIMG293.jpeg

因为工作原因加上时差,我只有半夜的时候才能帮他看问题,所以这几天每天搞到凌晨2点多,还有帮他开发的那个插件是应用于一个 algeria (阿尔及利亚) 的地址。必须他们那边的 IP 才能访问,然后我每天半夜,开着 TeamViewer 远程来调试来帮他写代码。看下面这图。

WechatIMG290.jpeg

呵呵了,说翻脸就翻脸,这人真的,还和发誓,说一定会 Pay me(在我看来外国友人都是发誓对他们来说是很严重的事情,所以我对他万分相信。)。然后这人一开始媒每天非常积极地和我说话,现在已经2天没回我了,而且他一直在线上,就是不鸟我,被骗无疑,所以特此来告知下大家。

记住上面这个人,大家千万别被骗(当然你想锻炼一下自己的外文水平,不反对:), 但是如果涉及金钱问题请你慎重。)

为什么会被骗?

作为一个程序员,难道连这么点防范措施都没有吗? 不,我是有防范措施的。我有在代码里面注入了一些额外的东西。原本这些东西真的能成为我的砝码。。

但是,看了上面,你们也可以看出来,这哥们真的蛮真诚的。。我在最后交付的时候,老外让我把源码给他,因为之前给了他一个压缩 + 混淆 的版本。。。但是最后交付的时候我傻逼了。心里想着,就要交付了,老外聊的还可以,我还在代码里面写了一些暗门,我心里太阴暗了。再加上整个库打包后太大了,粘贴在 tampermonkey的时候不方便, 我就把把 js 解释器给去了,因为钱没到手,所以留了一个小小的口子。后来发现,我把动态代码传 cdn 了。然后又忘记在链接后面加时间戳动态获取了。。。。GG,这样就会有本地缓存,所以基本就是被骗去了一个插件。(只能暗自祈祷,这个老外赶紧强刷浏览器吧,赶紧失效吧。)

防范指南

记住上面那个老外,阿尔及利亚的。 大家们别被骗了,我估计近期他还会对我们 Chinese 下手,因为看他的样子应该很熟练。

下面来讲下我刚才说的暗门(前面是我自己傻逼,把这些东西给去了),一般来讲这种让你写脚本的,本身不懂脚本怎么写,所以有很多方法。

  1. setTimeout, 定时器,因为写插件,涉及执行效率问题,我们可以故意将脚本执行时间延长,从而使得脚本可行性降低。
  2. 利用 eval 和 new Function 特性动态插入代码,最好核心代码都写成这样子的。
  3. 加入一个 js 解释器,然后你的核心代码都通过远程请求回来再执行。(可以参考这个 https://github.com/bramblex/jsjs )
  4. 设置脚本执行开关,和 3 类似,每次向自己的服务请求回代码来进行判断。

我就是用了上述的1,3,4 方法。。。但是我傻逼了。我把 1,3 去了,留了一个4,但是我用 4 方法是去请求一个 cdn json,类似这样。

{
  "data": "true"
}

哎。但是我就是我忘记给 url 加上时间戳,所以那个脚本会一直缓存在他电脑里。。。(除非他强刷下缓存,哎,算了算了,吃一堑长一智,希望大家不要像我一样)一手好牌被打的稀巴烂。 还有给了测试 demo 可以收一定的押金,(我因为不好意思,所以没说)然后再把源码交给他。哎,程序员只能通过这种方式来保障自己的权益了。

好了,就这样。(吐槽完,真香。

打个广告

作者这么惨了,关注波公众号,安慰下我受伤的心灵吧。

赞赏

欢迎关注我的公众号,秋风的笔记。

本站总访问量