关于移动端的钓鱼式攻击

phishing-1今天,在微博上看了一篇《微信和淘宝到底是谁封谁》的文章,我觉得文章中逻辑错乱,所以,我发了一篇关于这篇文章逻辑问题的长微博。后面,我被原博主冷嘲热讽了一番,说是什么鸡汤啊,什么我与某某之流的人在一起混淆视听啊,等等。并且也有一些网友找我讨论一下相关的钓鱼式攻击的技术问题。所以,我想写下这篇纯技术文章,因为我对那些商业利益上的东西不关心,所以,只谈技术,这样最简单。

首先说明一下,我个人不是一个安全专家,也不是一个移动开发专家,按道理来说,这篇文章不应该我来写,但是我就试一试,请原谅我的无知,也期待抛砖引玉了,希望安全的同学斧正

关于钓鱼式攻击,其实是通过一种社会工程学的方式来愚弄用户的攻击式,攻击者通常会模仿一个用户信任的网站来偷取用户的机密信息,比如用户密码或是信用卡。一般来说,攻击者会通过邮件和实时通信工具完成,给被攻击者发送一个高仿的网站,然后让用户看不出来与正统网站的差别,然后收集用户的机密数据。

移动端钓鱼攻击点分析

因为钓鱼式攻击并不新鲜,所以我这里只讲移动方面的。

在移动端,这个事情会更容易干,因为移动端有如下特点:

  • 移动端的UI只能有一个应用占据整个屏幕,你只能看到一个应用,而且用户屏幕小,能显示的信息有限,比如浏览器里的网址是显示不全的。这会给钓鱼攻击有很多可乘之机。
  • 移动端的平台有其安全的设计。每个应用都是隔离开的,一个应用无法获取另一个应用的数据。而且应用的下载基本上来说都是来自合法的地方。比如iOS的设备通过App Store下载,每个程序都有自己的签名保证不会被篡改。而且移动端的的应用有各种权限配置,这样也能很大程度提高安全性。
  • 移动端的APP有些有些是收费的,所以自然会有盗版需求,虽然在平台上做了一些安全设计,但是并不完美。用户可以越狱,可以root。这给恶意软件有了可乘之机。

下面我们来分析下移动端的用户操作,我们重点关注用户控制权的切换过程(因为这是攻击点)

在移动设备上,基本上来说,用户的控制切换有四种:

  • 从一个APP切到另一个APP,也就是我们所谓的唤出APP。
  • 从一个APP唤出一个Web,常见为一个嵌入式的WebView或是一个浏览器
  • 从一个Web唤出一个APP,这需要浏览器支持一些非标准的HTTP协议,比如skype://之类的。
  • 从一个Web到另一个Web,这和Web上的方式差不多。

基本上来说,黑客的攻击从来都是找这样的转换环节来做文章的,并且需要一个用户非常熟悉的场景(这样用户才会放松警惕)

通过观察移动APP的特性,我们可以知道,当用户控制切换时,有下面的这些特性:

  • 到另一个APP时,需要用户登录(如果登录的session过期了)
  • 当支付的时候,需要用户输入支付信息(信用卡信息、支持密码)

那么用户在移动APP上经常做的事是什么?

  • 社交分享:分享到微博,分享到微信等等,分享的时候,可能需要你输入用户名和口令。
  • 应用内购:一般来说APP会有两种,一种免费的,一种是收费的,大量的用户都是下载免费的,然后通过什么“开通更多关卡”、“去广告”、“买道具”之类的东西,让用户输入支付信息。Apple的支付的时候也会要用户输入Apple ID的密码。
  • 点击链接:有时候,我们收到短信,或是二维码,或是一个微信微博,会让我们去点击一个网站链接,这个网站链接要么就是打开一个网页,要么就是启动应用,要么就是跳转到应用市场去下载应用(如果你没安装)。

所以,一个好的钓鱼式攻击一定会从这些地方入手,然后高仿UI以及交互流程,这个交互流程和用户日常操作的完全一样,让用户无法察觉。任何方式的钓鱼攻击简单来说,会有两种:

  • 一种是直接攻击:你下载了一个恶意的APP,或是打开了一个恶意的冒牌APP。
  • 一种是中间人攻击:用户控制权转换时的两端都是正规应用,但是中间的过程不是正常的。

攻击方式

下面是一些常见的攻击方式:

从一个应用唤起另一个应用的方式

直接攻击

当你点击一个社交分享按钮,或是一个支付按钮的时候。就会转到一个页面,这个页面需要你输入用户机密信息(密码或是支付信息),然后再唤起真正的APP。

一个有恶意的APP可能会让你放松警惕,因为,这个你在安装这个APP的时候,你会发现这个APP根本不需要任何的权限(Android上的),甚至连网络访问的权限都不要,因为在Android下,App可以通过别的组件访问互联网,比如:恶意应用可能创建一个MediaPlayer Object,然后就可以通过这个对象访问一个URL然后把偷到的信息发送出去。

你的手机要被安装一个恶意的应用并不难,同样通过社工的方式,比如:盗版,色情,伪装成客服等等通过人性的弱点让你去一些非受信的市场上安装。iOS设备上的应用也可以不用通过App Store安装(通过itms-services协议,可以通过safari浏览器直接在IOS设备上安装应用程序)。

还有,人们都是贪小便宜的人,所以,会到某些地方买一些便宜的手机(比如淘宝),现在的高仿手机,翻新的二手手机对于一般人甚至安全专家来说完全没有识别能力。这些手机中有很大可能藏有恶意程序。你千万不要以为你格式化手机就OK了。今天(2015年4月14日)早上CCTV2台的“第一时间”就说了一个案例,你可以看看。另外,你可以看看相关的新闻。(另外,你把你的旧手机卖了也要小心,因为你的数据就在里面,旧手机已经成了一个灰色产业链)

另外,Apple的App需要有一个review过程,这个过程对大众是神秘的,但我觉得应该会包括安全方面的review。不过,这个审核过程可能也有空子可以钻。比如:在review的时候,这个应用完全正常,但在用户使用的时候,会自己从网站下载一些自己的配置文件而改变行为(更为直接的就是访问外部网页时在审核时和在用户应用时可能完全不一样,Apple应该完全没有能力审核应用要访问的外部站点)

中间人攻击

我们知道,一个APP唤起另一个APP好多都是用url-scheme的,也就是某种协议,审核这样的协议非常简单,所以如果有恶意的东西在里面基本上很容易看到。但是,如果某些APP并没有注册自己的url-scheme,或是没有被安装,反而,另一个有恶意的APP注册了这个scheme,那么,就会导致恶意的APP被唤起来了(这就是我为什么在我的微博中说,如果用户没有安装淘宝的客户端,那么,让微信唤起淘宝的客户端时,有可能是另一个有恶意的APP。但是很多人不懂这个事。在iOS下,两个APP通讯正确的做法是“钥匙串机制”)。

当然如果有两个应用被注册了同一个scheme,那么,iOS和Android会给出一个选择,让用户来选(注:iOS的系统有可能会直接跳某个 App 上去,不同版本的跳规则不明确,可以认为是随机跳转)。于是乎,恶意的APP就要努力的让自己比正规的APP看起来更像个正规的APP就可以了。

在Android平台上,这个事可能更变态,只要恶意的应用有两个权限,一个是随手机操作系统在后台启动,一个是task list(然而这两个权限都是一般权限)。这样一来,当你进行两个APP切换时,恶意程序可以通过task list权限监控到,然后自己马上先于正规的app出现,等到收集完用户数据后简单的退出就好了。这个方式只需要你的程序能在10ms以内反应过来(最佳是5ms左右),人的肉眼根本看不出来。(在iOS设备下,除了jail break后的iPhone可以这么干,正常的都iPhone还没有找到这样的攻击方式)

在一个应用内内嵌Web的方式

这种方式更容易攻击了,现在很多很多应用都是内嵌的Web的形式,你完全不知道打开的网页的网站是什么,因为这些内嵌的WebView你连地址都看不见。而且无论是iOS或Android,其WebView都可以执行任何的Javascript代码,就算显示URL,URL也可能是被混乱过的,你也看不全,你也很容易上当。当然,那些使用带SSL证书的支持HTTPS的网站(尤其是EV证书)可以在地址栏上显示一个绿色的标记表示你访问的就是正确网址,但是并不是所有的浏览器都会这样,比如iPhone的Safari并没有这个提示,所以,你一定要用Chrome。

更狠的是就算你打开的是一个正确的URL,你依然可能被中间人攻击。尤其是这个网站使用了明文的HTTP协议,而你又喜欢蹭那些免费的WiFi,于是很容易给把服务器返回给你的网页中做修改,比如,修改网页中login表单或是支付表单提交的网站(想想天朝的网络运营商给你访问的正常的网页弹广告这事吧)

关于DNS劫持,有些人觉得这事可能遇不上,因为这是一个全网的问题,如果你有这样的想法你就错了。还是那样,你爱占便宜,蹭上那些没有密码的WiFi,你完不知道,你连上去的那个WiFi会设置什么样的DNS服务器,你输入了www.taobao.com,但你打开的网站根本就是不是淘定,而是一个钓鱼网站。你会知道你打开的是错的了么?基本不可能。所以,安全点的网站都是要用HTTPS,但是还是那句话,iPhone的Safari并不会提示你打开网站的SSL证书合不合法(事实上,在手机上的很多浏览器都不会这提示,只有Chrome会)。

关于攻击的方式我不想讲太多,还有很多高级+猥琐的方式我也不是完全知道,知道了我也不说,不然,教人犯罪了。

关于从Web端唤起APP是和,APP唤醒APP的攻击方式基本一样。我就不说了。

怎么防范钓鱼式攻击

首先,我们要知道,钓鱼式攻击是一件非常难搞的事。要搞定这个事,一般来说需要四个方面:立法层面用户培训层面宣传层面、与技术保全措施层面

教育方面

打击网钓的策略之一,是试着培养人们识别网钓,并教导怎样处理这些问题。只需要稍稍修改人们浏览习惯的方式,很多问题都可以避免。随着人们越来越认识到网钓者所使用的社会工程学技俩,传统的网钓欺诈技术可能在未来过时。

  • 对别人发来的链接要小心,尤其是让你输入机密信息的链接要小心检查。
  • 到正规的地方买手机,不要贪图小便宜。旧手机在卖前要“物理删除”数据。
  • 不要对手机越狱,不要root。
  • 不要从非信任的地方下载软件。
  • 要小心免费的WiFi。
  • 输入机密数据的时候一定要小心检查。
  • 多依赖一些不同的安全体系,比如:网上支付不要只依赖支付宝,尽量使用信用卡(信用卡千万不要设密码),这样就算是被钓鱼了,你还有一个银行安全的缓冲地带——可以不承认交易。
  • 现在使用手机的频率越来越高,所以,我非常建议你使用更为安全的iPhone手机,一定要打开“查找我的iPhone”功能,然后设上开机密码。iPhone手机可以做到手机丢失了别人都无法使用,包括刷机都刷不了(iOS7以上版本)
  • 对于一些关键网站,开启两步验证,这样就算你的用户名和密码被钓走了,还有一个动态手机口令做为登录的关卡。

技术方面

  • 利用SSL证书来保证从浏览器到网站的访问是现在采用比较多的方式,也是在理论上可行的方式。现代的浏览器都会在URL上放上一个锁的标志,对于EV证书,你会看到浏览器的URL是绿色的(很容易分辨)
  • 另外,像firefox浏览器有一个petname的插件,你可以为你常上的网站设置一些标签。这样,当你打开钓鱼网站的时候,你会发现这些标签没有显示出来,那就有问题了。
  • 关于SSL的CA认证机构,你需要管理好你浏览的那些根证书,有些根证书你需要删掉。
  • 增加式登录方式。这种方式被美国银行采用,就是说,你可以上传一个你自己知道的图片,而当你打开登录页面里时,输入了自己的用户名后,你会看到你设置的这个图片被显示出来。如果没有或是显示错了,表示你打开的是钓鱼网站。
  • 两步验证,通过用户自设密码+手机动态口令登录(好些网站都在使用Google Authenticator的方式,这有点像公司VPN的动态口令)。

上述都是PC Web上的防范,然而我们的手机移动端做的并不够好,移动端的安全还是要加油。

安全风控方面

什么叫安全风控,说白了就是拿钱出来赔偿给被骗的用户,大家相信我,这个事情在基本上所有的公司都会做的,也就是说,无论你怎么做安全也无法保证绝对的安全,你只能缓解或是降低用户被骗的数量或概率。所以,几乎所有的公司都会有一笔钱专门用来赔偿。

在西方国家,用户体验很好,我说一个故事,我有一个妹妹在英国,有一天她到ATM上取钱,取完钱后忘了把卡取出,结果后面的人把她的卡里的钱取走了,于是她报了警,等警察做完笔录后,她给银行的客服打了个电话说明了情况,本想冻结银行卡的,但是银行方面二话不说就赔偿了她所有的损失。为什么英国的巴克莱银行这么痛快,是因为他们有风控基金,专门用来处理这样的事的。

在中国,其实银行和一些大的公司都有这笔安全风控基金,但是,要你非常坚持不懈地申诉,他们才会赔给你,而且还不是全部。要全部的话,我估计你要做一个“刁民”,否则欺负你,没道理。

关于微信和淘宝

微信和淘宝到底是谁先屏蔽谁我并不关心,这里面的商业利益我也不关心,微信是不是支持卖东西我也不关心。我关心的是寒冬文章中所说的微信上有淘宝钓鱼的安全问题。

从技术上来说,我觉得要微信和淘宝一起干这事,单方都不行,需要两边的安全专家一起讨论(如果需要,我可以帮你们约)。我这里给一个可能很不成熟的方案,算是抛砖引玉(我不考虑你们之间的商业竞争,我只从用户的角度出发,客户第一):

我觉得,从业务上来说,淘宝可以在微信上有一个官方的商城。而淘宝的商家,需要取得微信的认证后入住,才能分享相关的商品或店家链接,对此,商家入住,我觉得可通过微信的服务账号与淘宝的商家后台集成可以做到。

然后,商家也好,买家也好,他们分享商品只能通过微信官方的商城或是商家的服务账号分享出去,而分享出去的商品信息可以是一个比较unique的形式(比如有一个不能伪造的官方认证的标签),而用户的支付可以通过内置的微信支付也可以通过内置的支付宝(通过唤起App并不是一个好的方式,还是应该你们在服务端进行相互的通信)。

然后微信和淘宝双方通过宣传手段告诉全社会,微信里的商品什么才是正规的,才不是钓鱼的,并给教育用户更为安全地使用手机。

P.S. 我虽然这么说,但从我个人来说,我非常理解微信为了让用户有很好的体验而不让微信成为一个四处都是营销商品的地方。所以,我从个人来说,希望微信不要成为一个商家的营销地。另外,我也知道阿里对移动端的看重,所以,上述的方案虽然对用户体验和安全都比较好,但是从目前商业利益的情况看来基本无法实现。不过我这里也只是抛砖引玉了。

面对安全和用户这两个事,你们两个中国最大的互联网公司,应该带头做好榜样,你们都是不缺钱的公司,应该更多的承担起社会的责任,真正为用户做点什么,而不是整天想着流量入口,互相屏蔽,互相指责,想着自己能有多少用户,这TMD太LOW了,和你们的地位完全不符。所以,从站在用户的角度上来说,我希望微信和淘宝都能站在用户的角度上思考问题,一起合作来真正的为用户更好的服务。

(全文完)


关注CoolShell微信公众账号可以在手机端搜索文章

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)

这多年来我一直在钻研的技术

Architecture Internships Abroad因为我是看到tinyfool 《那些年我赶过的时髦技术趋势》,在赞叹的时候,也让我对我有好些回忆,所以想写一篇回忆贴,本来觉得回忆是件挺让人沮喪的事,因为是老了的表现,但我写着写着,就歪了楼。看来,我还不老,还在拼博。下面是很多我的唠叨,你喜欢就读读,不喜欢就TLDR – Too Long, Don’t Read!

自从98年毕业,到今天,参加工作有18个年头了,加上在大三的时候就为两个在外面接活的老师程序,到今天,写的程序被用到生产线也有18个年头了。

背景经历

要说明我技术上的“性取向”,还得我说说的我的一些背景和经历。

我这18年,大约分三个阶段:

  • 1996年-2000年入门乱来期,大三大四加在银行工作的两年。
    • 用Powerbuilder/Delphi在WindowsNT/SQL Server上做了好多个MIS管理软件,有酒店的,有送水的,有OA的。
    •  用Java的Applet做了一个Web的教学课件,用于在Win95/IE3.0中演示操作系统中的各种调度和算法的动画,得了个全国大学生挑战者杯的鼓励奖。
    •  用Delphi的ISAPI技术以及PHP/ASP给一些公司和大学做过几个网站。
  • 2000年-2010年技术学习期,这十年,我主要的编程语言是C/C++。
    • 前两年在银行用C语言在Unix(AIX/Solaris/Sco Unix/HP-UX..)写各种银行业务(用C语言写),用C写操作SQL,操作界面,写业务交易逻辑,一切都用C……,这是一个C语言的年代,当时,全国的银行都在做大集中,银行是当时行业里最大的软件系统了,所以,我确定了C/C++/Unix的技术方向,我当时的网上签名是,C/C++/Unix才是大规模杀伤性武器
    • 然后,2002年在Platform做一个全平台的(包括Unix/Linux/Windows)高性能计算的软件产品,很像今天的Hadoop,当时叫Grid Computing,主要用低廉的x86集群进行大规模的并行计算,主要用于芯片设计行业,如:ARM和德州仪器,或是科研,如NASA,或是国家安全,如美国国防部的影像分析,或是3D动画渲染,如怪物史瑞克……从05年以后,发现很多用户开始从Unix迁移到Linux,于是开始更为关注Linux的Kernel知识。Platform有一套很严谨的软件工程体系,我对严谨的软件工程以及很多的基础的技术的认识在这里形成
    • 2007年在路透做路透全球金融数据Real-Time网络的高性能调优(我在《性能测试应该怎么做?》一文中透露过这个公司的性能要求,是一个实时的数据网络,对于99.9%的网络传输在100K的tps下要低于1ms,技术挑战是很大的),在路透,我只干一个事,就是性能优化,我把我负责的几个系统的性能都提升了8倍到15倍的样子,09年年底的时候,我已把未来3年的优化的活都干完了。所以,这个时期,我也开始了我的经理生涯。我对性能调优,高可用系统架构,研发管理的很多是在这里形成的。
  • 2010年到今天技术沉淀期,这个时间段,主要的编程语言是Java。
    • 这段时间,我加入了Amazon和Alibaba,也就是所谓的互联网公司。在Amazon干了两个事,一个是把Amazon全球的marketplace连起来,跨大洲的数据中心的通信,还有一个是第一次接触大数据和机器学习——用户需求预测系统。在Alibaba干过电商云平台聚石塔和阿里云,去阿里最主要的是经历双十一。
    • 这段时间,对我影响比较大的是Amazon,技术不再是我的瓶颈,大规模的系统,对我也不是问题,而让我收获最大的是,世界前沿的软件设计架构和解决方案,以及做技术的态度和工程的方法,我的眼界、脑洞和视野都巨大的打开,并且在技术管理、工程管理、产品管理、人员管理、公司管理等等管理方面的思维有了质的提升。这段时间,才是我真正技术沉淀的时期。

我的这个背景本来可以更好一些,只可惜运气不太好,本来可以走的更快的,无奈在最关键的时候遇到了两次金融危机,本来可以去硅谷更牛更好的公司见世面,无奈父母身体欠安,只能放弃。

经历决定思维方式

通过我的背景经历,大家不难看到,我基本上都是做一些规模比较大的系统和软件,而且,主要用C/C++/Unix/Linux这样比较晦涩的语言和操作系统。我们知道用C和C++开发,基本上要处理的错误都是和系统底层相应的东西,而上规模的系统和软件,又总是会遇到很多“稀奇古怪”的问题,这些问题,都会逼着我要去了解很多的操作系统、计算机系统、网络、数据库、中间件等等的各种基础或底层技术。

而且我经历的基本上都是非常严谨的软件工程,不能马虎,我有几次马虎的经历,给我造成了非常大的心理影响,比如,曾经被定性为不适合写代码,因为我的代码太烂,或是出了严重的故障,几乎要跑路去了。另外,全球gloabl式的oncall,经常让我在凌晨被电话叫起来解决问题,这个经历比较痛苦。所以,我的整个经历,让我养成了,在软件开发上必需也不得不严谨的习惯和价值观体系

大家想想,用C/C++开发一个几乎不能出故障的软件系统,你需要多仔细和多严谨的态度才能达到要求?因此,我的经历让我不能马虎,也不能应付工作,更不能在标准上有所妥协,还需要不断地提高标准,所以,时间一长,我必然,会有如下的习惯:

  • 要做到——知其然,知其所以然。所以,只能不断的学习基础知识以及和这个技术关联的知识,就像Wikipeida一样,当你进入一个词条的时候,就会伴随时一堆新词条,于是,当多年后,我看到 “知识广度是深度的副产品”这句话时,简直就是说到我的心里去了。
  • 要做出工业级的软件。从银行到Platform到Thomson Reuters再到Amazon,软件开发上都会有SLA的要求。我认为,一个软件是工业级还是民用级的,除了功能正确之外,最重要的一个指标之一就是在性能和稳定性上有没有SLA。绝大多数的互联网公司和开源软件都没有SLA。所以,达不到工业级的标准。要达到工业级的标准,就需要花费时间、人力和财力进行非常繁琐的设计、测试评估以及运维管理
  • 工业级的软件来自工业级专业人员和专业软件工程
    • 专业的人员。为什么绝大多数的外国公司需要的是CS(Computer Science)背景毕业的工程师?因为他们要做的是工业级的软件,这是一门科学,即然是科学,就需要受过良好的科学教育的CS专业的人。
    • 专业的工程。工业级的软件需要有工业级的软件工程,比如,严谨的Design/Code Review,严格的测试,以及完备的线上运维。
    • 专业的工具。这个时候,你就会发现,要做到高级别的SLA,比如包括5个9以上的SLA,人肉干活的能力已经完全跟不上了,你需要大量的专业的与之配套工具。人类之所以聪明是因为会发明工具,所以,这也是工业级的另一个标准——你有多少现代化的支撑工具?

在之前的《开发团队的效率》一文中,我说过——你总需要在一个环节上认真,这个环节越往前就越有效率,越往后你就越没效率。要么你设计和编码认真点,不然,你就得在测试上认真点。要是你设计、编码、测试都不认真,那你就得在运维上认真,就得在处理故障上认真。你总需要在一个地方认真。

认真是痛苦和艰难的,也是需要苦苦坚持的,因为人太容易妥协了,这对每个人来说都是一种不小的挑战。老实说,我与很多人对“认真”的标准不一样,所以,产生了很多分歧,很多人说我太理想了。其实,我能理解他们,一方面是因为我的标准是比较高了,另一方面是他们只做过民用级的软件。

另外,在一开始,做惯了工业级软件的我极度地不适应于那些糙快猛的开发方式。不过,我也在调整自己,毕竟,世界不只一种价值观,有的是工业级的软件,有的则是民用级的,还有的只是个玩具,而且还有Java这门语言非常有效地屏蔽了很多底层和基础知识,所以,也不可一概而论,我也在适应一些民用级的软件开发的方式。

后记

从去年我从阿里离开到现在14个月了,这段时间内,我给大约40多家公司做过相应的技术咨询和解决过很多技术问题,绝大多数公司都是因为性能和稳定性的问题来找我的,我给这些公司解决问题的时候,基本都是这样的Pattern:

  • 一开始,发现都是一些技术知识点的问题,
  • 然后,马上进入到系统架构方面方面的问题,
  • 当再解决架构问题的时候,我发现,已经是软件工程的问题,
  • 而软件工程问题的后面,又是公司管理上的问题
  • 而公司管理的问题,结果又到了人的问题上
  • 而人的问题,又到了公司文化的问题……

你看,很多问题,一环扣一环,最终都不是一个简单的技术问题。我倒不是说,我在抱怨这些问题,我更不是在说能解决这些问题,因为,就像软件工程没有银弹一样,无论你给什么样的解决方案都会有问题,没有问题才是不科学的。我能做的是,观察这个公司的业务形态、和相关的思维方式,以及现有的资源和相应的技术实力,帮助他们从技术到管理上缓解或改善现有的问题。

所以,我基本上来说,这近20年来,我只在专心研究一个事——如何做出一个性能高稳定性好的大规模的系统。在这个方向中,除了很多的基础和底层技术我需要吃透,我还需要在软件的开发工艺,软件工具,以及软件的线上运维,以及相关的管理上不断学习和思考,因为,只有技术、工具、工程、运维、人员这几个方面搞好了,才可能出现一个性能高且稳定性好的系统

之前对于我来说,我一直在鼓吹先进的管理和软件工程以及技术和工具。今天,对我来说,遇到最大的问题就是,在没有这些所谓的先进的东西的时候,除了我自己上手外,我是否还能解决相应的问题?因为我自己已经完全Scale不开了。

有问题就有挑战,我每天都在思考,如何在不完美甚至残缺的环境下,解决这些公司的技术问题。每个人都要给自己一个目标。目前,我给自己的目标是——在残缺的环境下,能让用户不改一行代码,不动任何的架构,不改变用户很糟糕的软件开发的习惯,也不让用户作任何管理上的调整,能提升用户的软件系统的性能和稳定性

因为我相信技术,我相信有更好的技术,可以为用户完全透明的提升性能和稳定性,我大致找到了相应的解,现在,我正在实践的路上,这也许是笔大买卖,所以我不知天高地厚地注册了自己的公司……

(全文完)


关注CoolShell微信公众账号可以在手机端搜索文章

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)

为什么我不在微信公众号上写文章

Community很多朋友问我为什么不在微信公众号上写文章。我都没有直接回答,老实说,我也是扭扭捏捏的,才去开了个个人的微信的公众号,而且还只能搜索我博客这边的文章,我承认现在的阅读都在移动端,而且微信的公众号是国内移动端的文章流量及分享的入口,但是我还是更愿意使用blog这样的方式分享文章,最多也是在blog这边写好文章后,再去微信公众号那边贴一下。这个原因,不是因为我是一个老顽固,有习惯思维,而是,我不觉得微信公众号是一个好的信息传播和交流的平台。

我下面的言论仅仅代表我的个人观点,我不想强加给别人,我只是想说明一下为什么我不把我的blog迁移到微信公众号上。

首先,互联网是开放和共享的,不是封闭的。信息的传播更是需要开放的,大家可以看看互联网之子

  • 我希望我的文章能够被rss feed到各种阅读器中。
  • 我希望我的文章可以被搜索引擎所检索到。
  • 我希望我的文章能被别人整理,与其它人的文章放在一起互补。
  • 我希望我的文章能被修改,因为文章会有错误,也会需要时常更新。

然而,微信公众号都不能很好的支持。我希望我的文章能成为生态圈的里的一部份。所谓生态圈是相互融合,不是唯我独尊。这个和做开源软件的道理一样,开源软件不是把源代码开出来就好了,而是要去和已有的其它软件互相融合,互相兼容,互相支持,这本就是软件设计的真谛(参看《UNIX编程艺术》)。所以,我想,写文章也一样。

下面是我觉得文章传播的姿势。

文章传播的姿势

我希望我的文章是被检索的,这意味着,就算文章写过了好多年,它依然可以被检索到,而不是在社交圈上被大众转了3-4天后就完了,然后再也没有然后了

今天,我十多年前写的文章依然可以被检索到,依然对后来的新人有帮助。因为我的文章被搜索引擎检索了,我的文章被转载fork出去了,被人引用和标注,所以,可以长期被传播。

今天的酷壳(CoolShell.cn)已经很长时间没有更新了,然而里面的很多文章依然在被转发着,在被搜索着,在被重复阅读和被人推荐着,文章不断的被后来的人阅读。这就是被检索被共享被转载的好处。

同时,我并不希望成为某个平台写文章的苦力。在微信公众号下,你需要不断的更新才会积累起人气(订阅者),而文章的保鲜期非常有限,因为不能被检索,所以,你写的越多,你过去的文章也会被遗忘的越快。而微信公众平台让能写文章的人好像成为了这个平台的一个写作的奴隶,而不是让他们的文章中的内容和观点可以有长时间的影响力。换言之,在社交网络上,如果你要有影响力,你就要使劲写,需要更多的粉丝和订阅者。我个人认为这是违反了信息传播规律的。

最重要的是,我希望我的文章和观点是有讨论的,希望我的文章能被指正和批评,最好是引发讨论和思辨,这样才会让我们每一个人都可以在交流中成长。很多时候,文章本身并没有什么太大的价值,而引发的讨论和思辨才更有价值,这是我认为文章传播最正确的姿势。而微信的公众号在讨论方面人为的阻止或大大消弱了大家的沟通和讨论。虽然我承认有些讨论也是无效的,而且还有漫骂和跑题,但是我依然觉得讨论的利大于弊。

我私以为,信息的传播正确姿势,是被检索、讨论、引用、整理、补充和更新,而不是社交网络的转发、点赞、粉丝、订阅和打赏

换句话说,我关注的是的文章的长期价值,而不是短期的表象

关于文章的版权

很多人认为,封闭的平台有个比开放平台天然的优势,就是盗版和抄袭的问题,可以通过平台举报和惩罚对方。我以前也受到一些被抄袭和盗用的困扰,还曾经拿起来法律的武器维护自己的权利。

可能是我经历这样的事情比较早,所以,我今天在这个问题上不纠结了。

1、好的有价值的文章总是被人盗用抄袭的,这也算是对作者的一种认可吧。

2、我从来没有见过有人靠抄袭和盗用别人文章而成功的,无非就是收获几个赞罢了。

3、原创文章被人过抄袭和盗用,反而容易得到更多的关注。

微信公众号的原创保护也只是局限在微信上,微信之外的平台,它也无能为力,所以,对于我的文章会被转到很多地方的这种情况来看,微信公众号的原创保护也非常有限。

现在,我倒是不纠结有人会盗用和抄袭我的文章,因为,一方面,你可以有一些小伎俩来保护你的文章,比如在文章内容中放入一些你自己特有的标识,另一方面,我的文章被人盗用了抄袭的时候,总有一些网友能在盗用者那边指出来原文章是什么,并批评之。所以,还是应该把主要精力放在文章的内容和质量上,并让文章可以被检索和被更多的地方所引用,这样,你的文章才会得到最大的保护

另外,既然别人对我的文章有抄袭和盗用的需求,要不我就让别人干得更体面一些。所以,我的文章完全可以自由的转载,但不得用于商业目的,只需要注明作者和出处就好了

 

关于写文章挣钱

首先,如果你觉得写文章出书是可以挣钱的,那么你可以洗洗睡了,尤其是在中国,这几乎是不可能的。

当然,你要挣点小钱是可以有的,但是,你需要写软文中植入广告,或是消费热点主题,比如前段时间的魏则西事件,有的公众号被打赏了一些钱。

老实说,这对我来说完全无感,因为,我的逻辑是这样的:我觉得一个人有一定的影响力,其中有很大一部份原因来自他的独立性,如果我开始写软文了,相当于我把自己卖了

所以,我现在从来不通过写文章挣钱,因为我会写代码,我还是通过我的技能挣钱,通过给一些公司做咨询、培训、企业服务挣钱,老实说,靠自己的能力挣钱,比写文章挣钱挣得多多了,因为我觉得,像我写的这类的文章本来就是用来分享和传播的,不是用来挣钱的。写文章的目的是分享和影响,不是挣钱。

关于独立性,这里说两个花絮吧——

我在Amazon的时候,我和公司讲,我想在我的博客上写几篇关于亚马逊的文章,介绍亚马逊的技术和一些做事的方法,也算是个宣传,让我的团队也好招人,但是,我当时的老板和我说,你的博客之所以有影响力是因为你的独立性,不要写亚马逊的,这样会把你自己卖了,千万别这么做。

然而,我在Alibaba的时候,我的大老板要求我用我的博客和微博帮阿里云做营销,我非常委婉地拒绝了,结果,团队合作的价值观不达标了。呵呵。

P.S. 本来酷壳上是不做广告的,今天,酷壳上也广告,但是广告费是全部捐给Wikipedia的,广告主的钱是没有到我的手的。

微信公众号上的文章都有软文和广告植放,我觉得这不是我的调调,我害怕微信公众平台的整体格调影响了我的格调。就好像我认为我的网络被百度检索到了会我的网站的格调下降好几个档次。所以,我还是保持一定的距离吧。

这么说吧,我写文章不是为了挣钱,我也不认为写文章能挣到钱,我写文章就是为了分享和影响,我会借助社交网络,但不会寄宿在社交网络上,更不会被社交网络所绑架。

谢谢看我的唠叨!

(全文完)

 


关注CoolShell微信公众账号可以在手机端搜索文章

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)