2.4 開源理念
“開源”即開放源代碼,具有開源特性的軟件(包括操作系統),其源代碼對所有人開放,任何人均可以修改、使用、再發行這些軟件。下面讓我們來簡單地了解一下開源。
相信大家都聽說過GNU基金會基于Linus Torvalds開發的Linux內核創立的GNU/Linux(也稱Linux)操作系統,它的許多發行版本例如Debian、Ubuntu、Red Hat等均為基于開源內核的再創作,廣為程序員與技術人員所知。本書中提到的許多軟件,如Virtual Box虛擬機等,也是開源軟件。
開源軟件并非如其字面意義一般只是簡單地放出軟件的源代碼。開源軟件需要配備開源許可證,不同的開源軟件通常會因不同的開源目的選擇不同的許可證,例如Linux內核使用的是GPL許可證,而Android系統使用的是Apache許可證。不同的許可證決定了大家可以如何使用這份代碼,例如GPL許可證規定了任何使用了GPL源碼的程序也必須用GPL許可證開源。常見的開源許可證有GPL、MIT、Apache、MS-PL等。開源軟件在國外通常也被稱為自由軟件(Free Software),自由軟件的一個關鍵特征就是它的許可證,不使用開源許可證發布的源代碼在美國法律中依然被認定為專有(作者享有完整知識產權)軟件,例如微軟發布的Reference Source。國內在開源軟件領域尚處于法律盲區,也造成了一些大型廠商無所顧忌,出現了不遵守開源協議的現象。
開源代表著自由、高效率和共享。作為程序員、開發人員的讀者,可以使用源代碼進行二次開發并再發布,也可以對原始開源項目進行拓展,將更改提交回原始代碼倉庫,使開源軟件的特性更多、功能更強大、更易使用,同時提升普通用戶的使用體驗。這些對開源軟件做出貢獻的開發者也稱為開源者,他們和其他為開源軟件做出貢獻的人員(例如進行本地化或參與測試的人員)組成了開源社區。近些年隨著互聯網的高速發展,開源在國內也越來越受歡迎,各類開源社區大量涌現,許多城市都有了當地的LUG(Linux User Group/Linux, Linux用戶社組),還有一些類似AOSC(安同開源社區)這樣專精于開發自己的開源軟件/系統的社區。開源與開發者、使用者是相得益彰的,而它所體現出的自由、共享與探索精神,則與黑客精神在本質是相通的。
我們會在第4章講到對開源CMS(Content Management System)的審計技巧,CMS即內容管理系統,隨著Web 2.0時代的發展,越來越多的企業、個人在使用CMS建設網站。由于幾乎所有CMS都開源,所以很多的CMS漏洞挖掘實際上是基于代碼審計,也就是白盒漏洞挖掘。在閱讀代碼審計章節前,請先鍛煉一下自己的代碼閱讀能力。
- Extending Symfony2 Web Application Framework
- CTF實戰:技術、解題與進階
- Web漏洞分析與防范實戰:卷1
- 工業互聯網安全
- 零信任網絡:在不可信網絡中構建安全系統
- 深入淺出隱私計算:技術解析與應用實踐
- 黑客攻防入門秘笈
- 安全技術運營:方法與實踐
- Learning Veeam? Backup & Replication for VMware vSphere
- 防火墻技術與應用(第2版)
- Applied Network Security
- 網絡安全能力成熟度模型:原理與實踐
- Instant Java Password and Authentication Security
- 情報驅動應急響應
- 互聯網企業安全高級指南