我开发了一个基于 Beancount 的账本托管服务 HostedBeans,欢迎大家来了解纯文本复式记账并试用我的服务。
查看源代码

为什么我总是在黑「黑客」

和一些人从「黑客技术」入门计算机不同,我似乎从一开始就对所谓黑客技术没有什么兴趣。一开始当我刚刚听说黑客这个词的时候,因为大多数人对黑客精神的崇拜,我也对黑客这个称呼心存敬畏,但当我掌握了更多的知识,接触了更多的人和事之后,越发觉得黑客技术并不高端,黑客也不值得敬畏。在最近两年,黑客被洗白成了「白帽子」,入侵被洗白成了「信息安全」,一开始我觉得这似乎还是个好现象,但后来我觉得这其实也不见得有多少正面意义。

无论在哪里,只要提到黑客这个词,总有一批人跳出来为黑客洗白,而且会把黑客洗成「黑帽子」,「白帽子」,「骇客」,「红客」或者其他各种颜色。我觉得这样挺无趣的,有太多的词已经不是它本来的含义了,而且黑客这个词很模糊,总是被用来制造神秘感。如果是为了显示自己的专业性,介绍自己的职业,不如换成交互设计,桌面编程,代码审计,数据库运维等更具体的词。

我总是在吐槽某某知名 Web 安全界人士的编程水平不过关,当然,他们也确实不过关。会写代码是最低的标准,代码应当首先是写给人看的,顺便能在机器上运行。无论多么短小的程序,都应当考虑可读性和可维护性,并应用各种用于避免错误的技巧。对于如何提高可读性,如何避免错误,不同的人可能会有不同的观点,但是作为代码的作者,在写代码的时候至少应当考虑过这些问题。我认为绝大部分信息安全相关的工作,都需要首先是一名程序员,有过构建真正应用的经验才行。

我有这样的观点是因为我在思考一个问题,「信息安全」的最终目的是什么呢?我认为目的是为了减少程序的漏洞,但是现在业界的普遍目标是「发现更多的漏洞」。的确,发现漏洞是减少漏洞的前提,但是现在业界对于「发现漏洞」的热情实在太高了,以至于忘记了真正的目的。

比如说前一阵的 Heartbleed 事件,首先发现这个漏洞的人值得喝彩。但是随后几天,就开始有很多人在乌云网上提交各种网站没有更新 OpenSSL 的问题。在这些人看来,发现漏洞就是自己的目标,但他们从未想过如何能够减少漏洞。

我认为减少漏洞的途径应当是培养更多具有安全意识,能够写出高质量代码的程序员,专职的信息安全专家当然也要有,但至少他们应当曾经是一个「具有安全意识的程序员」。以我自己举例,我算是一个不太主流的程序员,除了写代码之外,我还花了更多时间学习新的技术,和新的知识——虽然这些知识可能我永远也不会在工作中用到。我虽然从未专门学习过有关「信息安全」的技术,但是因为我一直在研究如何编写更安全的代码,所以我对「信息安全」也算是触类旁通,甚至发现漏洞的水平也在一些人(通常被经常给黑客洗白的人称为「脚本小子」)之上。

很多没有学习过编程,而是首先开始学习信息安全的初学者,思维都很僵化。举个简单的例子,他们很难认识到「XSS」和「SQL Injection」其实是同一类攻击手法——注入 HTML 和注入 SQL. 也很难区分加密(Encryption), 编码(Encode)和散列(Hash)——因为它们似乎都是在把一个可读的字符串「加密」成一个不可读的字符串。所谓 SQL 注入不过是 SQL 的一个特例而已,如果你没有用过 SQL, 而直接学习如何注入,那你恐怕得一直按照「大牛」们总结的注入方法来实施,很难自己发现新的攻击方式,这就是我所说的,编码是 Web 安全的基础。

比如现在有些 Web 安全方面的书,在繁复地罗列一些很相似的攻击手法,并未抽象出其中的联系和规律,使读者只能照着做,而很难有所启发。更不要说这些书将安全与编码完全割裂了开来,并传达「代码只是工具,会写就行了」的思想。这样的书却被一些人奉为神作,这又印证了我之前的观点:太多人在以发现漏洞为目标,而不是减少漏洞。

最后,我的观点就是认为,直到目前,至少国内的「信息安全」的行业还处于一个非常原始的状态。当然,没有事情是完美的,我也期待这个行业能够迅速地成长起来。

撰写评论

如希望撰写评论,请发邮件至 jysperm@gmail.com 并注明文章标题,我会挑选对读者有价值的评论附加到文章末尾。

评论

12312 :以你 95 年的年龄你讨论这些是没有意义的,看看国外是怎么说的 http://catb.org/~esr/faqs/hacker-howto.html#what_is


飞龙 :1. “黑客”这个词在国内算是贬义词 被脚本小子抹黑了 所以我一般不对安全从业人员这么称呼 这个是要严格划清界限的 我一般叫他们“安全工程师” 2. 做测试的人就是以发现bug为目标 你还期望他们给你改bug?3.安全是测试的一类 测试是必不可少的 就算你觉得自己写的代码再怎么健壮 还是有bug 而且自己在心理上不愿意查出来自己的bug


比尔盖子V :Hacker 这个词本来就不适合自称啊……

Alan Cox 是一名 Kernel Hacker.

A:你做什么开发工作? B:我是一名 Kernel Hacker。

前者是尊称,后者听上去就是吹牛皮了。

社区里使用 Hacker 和 Hacking 的时候,有时和网络安全关系不大,比如

A:最近在干啥? B:买了块 FPGA,正忙着在上面 Hacking。

调试和开发内核的时候,也经常用 Kernel Hacking 描述。而知名的内核开发者也被尊称为 Kernel Hackers。

再例如

Join us now and share the software; You'll be free, hackers, you'll be free. —— 《自由软件之歌》

这类“黑客”算是无辜躺枪了……


鉛筆 :不管怎么说,搞网络安全的人完全有可能既给别人做好事,也暗暗地做坏事。搞这行的更重要的是信息渠道,而不是个人有多牛叉,因为再牛叉也很难比得上团体的力量。有渠道的脚本小子比单干的高手强多了,在那种搞阴谋暗自的圈子里,小聪明比大智慧重要多了。


starriv :某知名web安全。。哈哈,黑cos呢


牛博恩 :可以管那个叫脚本小子。安全算是软件测试的一个环节,很多软件公司没那个人力物力投入也不重视,这样说起来某平台对国内信息安全的贡献还是很大的。


XinyuXia :我并不认为安全人员就都必须会写代码,运维并不需要太多代码能力,会写点脚本就可以了胜任,实际上现在运维安全人员远比代码安全人员多得多,毕竟用软件的比写软件的要多得多。不管做什么职业,做什么产品,质要有,量也要有,有些安全人员可能只是简单地去照着一些学来的知识去做点配置,但是这也足够了,很多时候需要的就是较低标准的,廉价的人。

精子生于 1995 年,英文 ID jysperm.

订阅推送

通过 Telegram Channel 订阅我的博客日志、产品和项目的动态:

王子亭的博客 @ Telegram


通过邮件订阅订阅我的博客日志、产品和项目的动态(历史邮件):

该博客使用基于  Hexo  的  simpleblock  主题。博客内容使用  CC BY-NC-ND  授权发布。最后生成于 2024-04-08.