中正大學課程大綱
課程名稱(中文): 安全程式設計 開課單位: 資訊工程學系(Department of Computer Science and Information Engineering)
課程名稱(英文) Secure coding 課程代碼 4103002_01
授課教師: 林柏青 學分數 3
必/選修 選修 開課年級 大三、大四
先修科目或先備能力:
(4101031)程式設計(一)(及格) (4101032)程式設計(二)(及格) (只要符合任一先修條件)
課程概述:
在撰寫應用程式的同時,可能因為程式的錯誤、不可靠、以及安全上的缺陷,造成可供攻擊者利用的漏洞。因此有許多公司已經導入安全的軟體發展生命週期,在開發程式專案中,嚴格執行程式檢查以及安全測試的工作,以提升與保障程式的品質,並使得抵禦攻擊能力得到強化。本課程將介紹安全程式設計的準則、程式碼安全分析、軟體安全測試、程式漏洞的風險等,使學生未來在軟體開發流程能有足夠的知識技能,以確保軟體安全的品質。
學習目標:
1. 軟體安全、程式碼安全設計原則與靜態分析
2. 程式安全漏洞原理分析與安全程式設計實務
3. 進階程式開發安全及軟體安全測試原理與實務
4. 安全網頁程式設計原理與實務
教科書:
採用教育部資訊安全人才培育計畫開發之教材

課程大綱 分配時數 核心能力 備註
單元主題 內容綱要 講授 示範 隨堂作業 其他
軟體安全及程式碼安全設計原則
軟體及程式安全簡介
安全程式碼設計原則
安全的軟體發展生命週期介紹
6 1.11.21.32.12.22.33.13.23.34.14.2
程式碼檢查與靜態分析
靜態分析簡介
程式碼審查
靜態分析工具及實務
3 1 3 1.11.21.32.12.22.33.13.23.34.14.2
程式安全漏洞原理分析
字串安全與緩衝區溢位攻擊
整數安全
3 1 3 1.11.21.32.12.22.33.13.23.34.14.2
安全程式設計實務
輸入驗證實務
Shellcode 與 Injection 攻擊
格式化輸出之問題解析
3 1 3 1.11.21.32.12.22.33.13.23.34.14.2
進階程式漏洞利用之解析
特權程式介紹
錯誤及例外處理
Heap的安全議題及動態記憶體管理
程式安全與作業系統防護
3 1 3 1.11.21.32.12.22.33.13.23.34.14.2
軟體安全測試及模糊測試技術
軟體安全測試簡介
模糊測試簡介
覆蓋率指引與語意模糊測試
3 1 3 1.11.21.32.12.22.33.13.23.34.14.2
Web服務簡介與資安議題
10大Web資安問題模糊測試簡介
PHP 安全程式設計
Injection介紹與預防
XSS攻擊防禦
3 1 3 1.11.21.32.12.22.33.13.23.34.14.2

教育目標
1.專業基礎知識. 使學生擁有扎實的專業基礎知識,成為資訊及相關領域的專業人才
2.培養創造能力. 使學生具有運用所學到的各種專業知識與理論以科學的方法解決問題與創新
3.自我挑戰能力與終身學習. 讓學生習於自我挑戰、獨立思考,學會思維創新、領導及組織團隊、有效溝通、終身學習之能力
4.社會人文素養與國際視野. 讓學生具備關懷社會的情操與人文素養,並具國際觀,奉獻社會國家及人類

核心能力
1.1.具有資訊工程相關基礎知識之吸收與了解的能力(Capability to grasp foundational knowledge in computer science.)
1.2.具有運用資訊工程理論及應用知識,分析與解決相關問題的能力(Capability to use computer science theory and application knowledge to analyze and solve related problems.)
1.3.在資訊工程的許多領域中,具有至少某一項專業能力,例如:硬體、軟體、多媒體、系統、網路、理論等(Professional in at least one area, including hardware, software, multimedia, system, networking, and theory.)
2.1.具有資訊工程實作技術及使用計算機輔助工具的能力(Capability to perform computer science implementations and use computer-aided tools.)
2.2.具有設計資訊系統、元件或製程的能力(Capability to design computer systems, components, or processes.)
2.3.具有科技寫作與簡報的能力。(Capability to write and present technical materials.)
3.1.具有除了已有的應用領域之外,亦可以將自己的專業知識應用於新的領域或跨多重領域,進行研發或創新的能力。(Capability to apply one’s professional knowledge to a new application domain or across multiple different application domains.)
3.2.具有領導或參與一個團隊完成一項專案任務的能力並且具有溝通、協調與團隊合作的能力。(Capability to lead or participate in group projects, with effective communication, coordination, and teamwork.)
3.3.具有因應資訊科技快速變遷之能力,培養自我持續學習之能力。(Capability to adapt to rapidly changing computer science technology and to develop self-learning capabilities.)
4.1.具有社會責任、人文素養及奉獻精神。(The awareness of social responsibilities, humanity, and contribution.)
4.2.具有工程倫理、宏觀能力、國際觀及前瞻視野。(The awareness of engineering ethics, broad capabilities, and global and contemporary vision.)

請尊重智慧財產權,不得非法影印教師指定之教科書籍

教學要點概述:
1. 教材編選(可複選):自編簡報(ppt)教科書作者提供
2. 教學方法(可複選):講述板書講述
3. 評量工具(可複選):上課點名 0%, 隨堂測驗0%, 隨堂作業50.00%, 程式實作0%, 實習報告0%,
                       專案報告0%, 期中考25.00%, 期末考25.00%, 期末報告0%, 其他0%,
4. 教學資源:課程網站 教材電子檔供下載 實習網站
5. 教學相關配合事項:

課程目標與教育核心能力相關性        
請勾選:1.11.21.32.12.22.33.13.23.34.14.2
1.1 具有資訊工程相關基礎知識之吸收與了解的能力(Capability to grasp foundational knowledge in computer science.)
為何有關:
與程式設計相關
達成指標:
了解程式設計的安全需求
評量工具(可複選):
課堂作業與測驗
1.2 具有運用資訊工程理論及應用知識,分析與解決相關問題的能力(Capability to use computer science theory and application knowledge to analyze and solve related problems.)
為何有關:
與程式設計相關
達成指標:
完成課堂作業與測驗
評量工具(可複選):
課堂作業與測驗