●國內外知名網站遭到駭客入侵的消息時有所聞,駭客如何進行攻擊?系統又該如何與駭客對抗?這些都需要有基本的認識,才能保護資訊系統安全性。
●全書內容將資訊系統常見的弱點進行介紹,透過精心設計的圖解,搭配深入淺出的說明方式,不僅可了解駭客攻擊手法,也能從中學習正確的防禦手法,避免開發實作上常犯的疏失。
●資訊系統安全的重要性不言而喻,並不是系統開發人員才需要學習的知識,只要是資訊系統使用者,都需具備一定的資訊安全常識,才能避免產生不良的操作行為。本書作者將長年的實務經驗進行分享,目的是讓讀者對資訊系統的安全控制措施有所認識,了解其背後原理及實作,減少資安事件發生的機會。
作者簡介:
陳彥銘
●交通大學資訊工程研究所碩士。
●目前擔任系統開發及資安工程師,具十五年以上資訊系統開發經驗,為臺灣少數擁有CSSLP證照的資訊安全軟體開發專家,另外具備CASE .NET、CASE Java及GIAC GWEB及GSSP-JAVA等多張國際性資安及系統開發證照。
●致力於推動系統安全開發流程(SSDLC),曾負責編纂公務人員資安職能訓練教材,並替多家政府機關進行資訊系統安全稽核、顧問輔導及教育訓練,並曾領導專業稽核團隊執行國內網通大廠之安全開發流程稽核任務。
章節試閱
資訊系統(Information System)泛指為了特定目的而存在,用來蒐集、保存各種活動的資料,然後加以整理、分析、計算,產生有意義、有價值的資訊,這類資訊包含企業所需生產、管理及競爭的相關訊息,可提供決策者制定決策與行動時參考,以支援組織經營管理,並提升組織效能,進而為組織獲取利益,常見的資訊系統包含:
• 交易處理系統(Transaction Processing System, TPS):處理商業活動或交易資料,例如訂單輸入系統以及POS(Point of Sale)前台收銀系統。
• 管理資訊系統(Management Information System, MIS):從交易處理系統取得原始資料,保存紀錄並轉化成有意義的資訊,以結構化的報表呈現給管理者,例如會計管理系統,以及POS後台系統。
• 決策支援系統(Decision Support System, DSS):由不同來源蒐集與特定決策相關的資料,產生有助決策者制定決策時參考的資訊。
• 企業支援規劃(Enterprise Resource Planning, ERP)系統:整合與規劃企業資源包含了生產、配銷、人力資源、研發與財務等企業各功能性部門的作業,目的在提供整體性、一致性與即時性的有效資訊,例如上下游供應鏈管理系統。
現今的資訊系統多依賴於電腦技術建置而成,組成元件包含人員、硬體、軟體、資料及網路等五大資源,彼此相互依存以維持資訊系統正常運作。
• 人員:包含資訊專業人員以及業務單位之使用者。
• 硬體:包含主機和周邊設備,如個人電腦、伺服器、印表機等。
• 軟體:包含程式和程序,如系統應用軟體及資訊處理指令等。
• 資料:包含資料庫和知識庫等。
• 網路:用來收集於傳播資訊的通訊媒體和網路技術。
資訊系統組成
主流的資訊系統架構,可分為集中式架構、主從式架構及Web-based應用系統架構。
集中式架構的特徵,是由集中式大型主機(Mainframe)一手包辦所有的工作內容,包含資源分配、應用程式執行及儲存資料等,此種架構又以IBM公司所推出的大型主機產品為代表,通常可處理大筆的資料量,並支援多位使用者同時透過終端機登入系統進行各自操作。此架構好處為維護管理容易,但缺點為主機成本高昂。
主從式架構特徵是區分使用者端(Client)與伺服器端(Server)兩種角色,使用者端主動提出服務請求並等待伺服器的回應,伺服器端則被動接收服務請求,並在處理完成後將結果回傳給使用者端。使用情境例如,使用者端向檔案伺服器要求傳送特定檔案,伺服器接收到請求,並判斷檔案存取權限後,將檔案傳送給使用者端,完成所需的服務。傳統主從式架構為二層式主從式架構,使用者端為展示層,也就是使用者實際接觸到的應用程式,負責商業邏輯運算並提供操作介面,而伺服器端則為資料層,例如使用資料庫進行資料儲存。這種架構好處為分散運算資源,減輕了伺服器的工作量,但缺點為維護管理不便,一旦需要異動應用程式,必須逐一在各個使用者端進行更新,較為費時費力。三層式主從式架構則將商業邏輯層獨立出來,當需要修正商業邏輯時,僅需更改商業邏輯層的應用程式即可,不需要逐一更新展示層,因此提高了應用程式開發及維護的便利性,但缺點是若使用規模持續擴大後,應用程式層容易成為此架構的效能瓶頸。也可將商業邏輯層進一步細分,成為更多階層的多層式主從式架構。
Web-based應用系統架構與傳統的主從式架構最大的差別,在於使用者端透過Web瀏覽器即可向Web伺服器發送存取要求。Web伺服器又可分為靜態及動態,靜態Web伺服器單純提供文件、音訊或視訊等資料內容,於使用者端瀏覽器呈現,使用二層式主從式架構即可應付這種相對簡單的設計。動態Web伺服器則可處理使用者端輸入的資料,讓站台提供更多的功能服務,由於運作機制較為複雜,故常使用三層式(以上)的主從式架構;使用情境例如使用者透過瀏覽器填寫帳號註冊或產品訂購表單,傳送至Web應用程式伺服器進行商業邏輯處理,並儲存至後端資料庫。Web-based應用系統架構已成為現今最流行的架構,優點為使用便利性高,不限連線裝置類型或時間地點,皆可透過網際網路存取站台資源及服務。而系統開發人員也可專注於伺服器端的Web應用程式開發與維護工作,不需要特別為使用者端開發操作介面程式,只要處理好瀏覽器相容性等問題即可。但另一方面,Web站台帶來方便性的同時,也無時無刻面臨資訊安全的威脅,且駭客攻擊技術日益精進,使得開發及管理人員必須耗費更多的心力,才能確保資訊系統的安全性。
規模較大的資訊系統開發專案,可能包含數萬甚至百萬行以上的程式碼, 由於複雜性高,在設計與開發系統時,應採用具有計畫性及組織性的方法才能確保系統品質,做出正確及符合使用者需求的成品。
系統開發生命週期(System Development Life Cycle, SDLC)將系統開發過程分解為多個階段,並定義了每個階段需要完成的任務,又可以瀑布式模型(Waterfall Model)為代表,其最早強調應於系統開發專案起始到結束的過程,應具有完整的生命週期,將週期內各個階段依固定次序由上而下相互銜接,並要求完整經歷所有階段,就如同瀑布流水一般。
典型的瀑布式模型可分為:
• 研究規劃階段:界定系統發展目標,分析專案時程、人力、經費及技術,決定系統發展的可行性與範疇。
• 需求分析階段:定義系統需求,目的在決定「系統需要做什麼?」。此階段通常以功能需求為優先考量,但亦包含效能、可靠度及安全等需求。
• 系統設計階段:分析系統需求並定義解決方案,目的在決定「系統要如何做?」。此階段可進一步細分為概要設計與詳細設計,概要設計是將各項需求轉化為意義明確的模組,例如身分驗證模組、商業運算模組等;而詳細設計則可針對每一個模組內部運作方式進行更具體的描述,可能包括系統架構、商業邏輯規則、演算法及底層的組成元件等。
• 開發實作階段:依設計進行系統實作,為建構活動中的重要階段,例如撰寫程式碼以實現系統功能。
• 測試驗證階段:利用測試活動找出系統問題與錯誤,或是驗證需求是否已被滿足。常見測試類型包含功能測試、效能測試及安全測試等。
• 系統部署階段:部署泛指將系統投入上線正式運作而進行的所有活動,包括安裝與建置軟硬體、設定功能參數等。
• 系統維運階段:系統實際上線後,為了確保運行過程穩定可靠,或是依需求調整運作環境,所以需要更新系統元件、調整功能參數、修補錯誤與弱點等活動。
• 現今已有許多SDLC方法論被建立,大多數是以瀑布式模型為主軸並加以改良,如螺旋模型(Spiral Model)[1]、V模型( V-model)[2],以及反覆式與漸進式模型(Iterative and Incremental Model)[3]等。
資訊系統(Information System)泛指為了特定目的而存在,用來蒐集、保存各種活動的資料,然後加以整理、分析、計算,產生有意義、有價值的資訊,這類資訊包含企業所需生產、管理及競爭的相關訊息,可提供決策者制定決策與行動時參考,以支援組織經營管理,並提升組織效能,進而為組織獲取利益,常見的資訊系統包含:
• 交易處理系統(Transaction Processing System, TPS):處理商業活動或交易資料,例如訂單輸入系統以及POS(Point of Sale)前台收銀系統。
• 管理資訊系統(Management Information System, MIS):從交易處理系統...
作者序
一本好的資訊安全學習書,應該要符合易懂、易學、好教等目的,除了說明原理亦需提供實務經驗才能發揮最大用途。筆者從事資訊系統開發已經超過十年的時間,長期致力於資訊系統安全開發教育訓練推廣,並完成多家政府機關資安稽核與輔導業務,有感於現有多數系統開發專案仍只專注在功能面的完善,卻輕忽系統本身的資安防護能力,亦少有適合初學者理解資訊系統安全原理的教學書籍,故興起了寫一本適合教學或自修的工具書,建議可用於大一的初階課程或非本科系學生的資安通識教育課程,對於資訊系統安全開發有興趣的讀者,亦能從中理解資訊系統安全原理,並了解相關實務重點。
本書一共分為十一單元,首先針對資訊系統與資訊安全進行概要介紹,後續說明資訊系統在開發過程中,如何確保機密性、完整性及可用性等資訊安全事項,如實作加密機制、身分驗證及存取控制等安全控制措施之重點事項及實務經驗,提供實作範例與圖解,讓讀者可快速理解重點內容,並未侷限特定的程式語言與開發框架,對於有志於從事Web資訊系統開發或安全檢測的讀者,這本是您不可錯過的參考用書。而對於不熟悉程式設計的讀者,亦能從中學習到系統安全的理論基礎。
最後,感謝五南圖書高主編的穿針引線,促成本書的誕生,也謝謝編輯同仁細心協助書稿後續的編排,並耐心等待筆者多次調修與更新,讓本書得以順利完成;期許本書能為有志於學習資訊系統安全的讀者開啟學習入門的管道,最後祝各位讀者:
心想事成,學習順利!
陳彥銘 謹識
109年1月
一本好的資訊安全學習書,應該要符合易懂、易學、好教等目的,除了說明原理亦需提供實務經驗才能發揮最大用途。筆者從事資訊系統開發已經超過十年的時間,長期致力於資訊系統安全開發教育訓練推廣,並完成多家政府機關資安稽核與輔導業務,有感於現有多數系統開發專案仍只專注在功能面的完善,卻輕忽系統本身的資安防護能力,亦少有適合初學者理解資訊系統安全原理的教學書籍,故興起了寫一本適合教學或自修的工具書,建議可用於大一的初階課程或非本科系學生的資安通識教育課程,對於資訊系統安全開發有興趣的讀者,亦能從中理解資訊系統...
目錄
第 1 章
資訊系統概論
Unit 1.1 資訊系統簡介
Unit 1.2 資訊系統架構
Unit 1.3 系統開發生命週期(SDLC)
Unit 1.4 安全系統開發生命週期(SSDLC)
Unit 1.5 本章總結
第 2 章
資訊安全概論
Unit 2.1 資訊安全三要素
Unit 2.2 資訊安全風險
Unit 2.3 網路安全防禦
Unit 2.4 駭客攻擊
Unit 2.5 進階持續性滲透攻擊
Unit 2.6 阻斷服務攻擊
Unit 2.7 殭屍網路
Unit 2.8 零時差攻擊
Unit 2.9 社交工程
Unit 2.10 本章總結
第 3 章
加密機制
Unit 3.1 加密基本原理
Unit 3.2 應用程式加密
Unit 3.3 應用程式加密範例
Unit 3.4 透明資料加密
Unit 3.5 資料行加密
Unit 3.6 HTTPS 傳輸加密
Unit 3.7 HTTPS 傳輸加密實作
Unit 3.8 SSH
Unit 3.9 本章總結
第 4 章
身分驗證機制
Unit 4.1 密碼竊取
Unit 4.2 密碼破解
Unit 4.3 密碼最小長度
Unit 4.4 密碼組成複雜度
Unit 4.5 密碼歷程記錄
Unit 4.6 密碼使用效期
Unit 4.7 帳戶鎖定原則
Unit 4.8 CAPTCHA
Unit 4.9 如何處理忘記密碼
Unit 4.10 以雜湊儲存密碼
Unit 4.11 彩虹表攻擊法
Unit 4.12 以雜湊加鹽儲存密碼
Unit 4.13 身分驗證因子
Unit 4.14 單一登入
Unit 4.15 本章總結
第 5 章
授權與存取控制
Unit 5.1 授權原則
Unit 5.2 存取控制
Unit 5.3 權限提升
Unit 5.4 存取控制設計缺陷
Unit 5.5 存取控制設計缺陷(續)
Unit 5.6 本章總結
第 6 章
會談管理
Unit 6.1 什麼是會談
Unit 6.2 什麼是Cookie
Unit 6.3 會談劫持攻擊(上)
Unit 6.4 會談劫持攻擊(下)
Unit 6.5 如何防禦會談劫持
Unit 6.6 會談固定攻擊與防禦
Unit 6.7 本章總結
第 7 章
安全組態設定
Unit 7.1 移除預設帳號密碼
Unit 7.2 禁止顯示站台目錄列表
Unit 7.3 使用客製化錯誤頁面
Unit 7.4 修補元件安全弱點
Unit 7.5 本章總結
第 8 章
Web應用程式常見弱點
Uni 8.1 OWASP Top 10
Unit 8.2 CWE Top 25
Unit 8.3 比較OWASP Top 10 與CWE Top 25
Unit 8.4 注入攻擊
Unit 8.5 SQL 注入
Unit 8.6 命令注入
Unit 8.7 跨網站指令碼(XSS)
Unit 8.8 XSS 防禦方法
Unit 8.9 XML 外部實體(XXE)
Unit 8.10 不安全的還原序列化
Unit 8.11 跨站請求偽造(CSRF)
Unit 8.12 伺服器端請求偽造(SSRF)
Unit 8.13 本章總結
第 9 章
系統日誌
Unit 9.1 Windows 事件檢視器
Unit 9.2 日誌內容
Unit 9.3 日誌格式
Unit 9.4 日誌的保護
Unit 9.5 本章總結
第 10 章
監控作業
Unit 10.1 資訊安全監控中心
Unit 10.2 SOC 建置方式
Unit 10.3 SOC 服務內容
Unit 10.4 SOC 服務內容(續)
Unit 10.5 本章總結
第 11 章
安全測試
Unit 11.1 原始碼分析
Unit 11.2 原始碼分析工具—SpotBugs
Unit 11.3 弱點掃描
Unit 11.4 弱點掃描工具介紹—MBSA
Unit 11.5 弱點掃描工具介紹—OWASP ZAP
Unit 11.6 滲透測試
Unit 11.7 滲透測試─需求確認
Unit 11.8 滲透測試─資料蒐集
Unit 11.9 滲透測試─弱點掃描
Unit 11.10 滲透測試─弱點利用
Unit 11.11 滲透測試─報告撰寫
Unit 11.12 本章總結
第 1 章
資訊系統概論
Unit 1.1 資訊系統簡介
Unit 1.2 資訊系統架構
Unit 1.3 系統開發生命週期(SDLC)
Unit 1.4 安全系統開發生命週期(SSDLC)
Unit 1.5 本章總結
第 2 章
資訊安全概論
Unit 2.1 資訊安全三要素
Unit 2.2 資訊安全風險
Unit 2.3 網路安全防禦
Unit 2.4 駭客攻擊
Unit 2.5 進階持續性滲透攻擊
Unit 2.6 阻斷服務攻擊
Unit 2.7 殭屍網路
Unit 2.8 零時差攻擊
Unit 2.9 社交工程
Unit 2.10 本章總結
第 3 章
加密機制
Unit 3.1 加密基本原理
Unit 3.2 應用程式加密
Unit 3.3 應用程式加密範例...