59
Web應用程式以及資安問題的 探討 kewang 1

Web應用程式以及資安問題的探討

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Web應用程式以及資安問題的探討

Web應用程式以及資安問題的探討

kewang

1

Page 2: Web應用程式以及資安問題的探討

今日主題

今日主題

Page 3: Web應用程式以及資安問題的探討

今日主題

OWASP

Top 10

Page 4: Web應用程式以及資安問題的探討

自我介紹

宜蘭讀書6年

Page 5: Web應用程式以及資安問題的探討

自我介紹

任職大X資訊

Page 6: Web應用程式以及資安問題的探討

自我介紹

2008/9/16

Page 7: Web應用程式以及資安問題的探討

自我介紹

2011/8/24

Page 8: Web應用程式以及資安問題的探討

自我介紹

44/1072

Page 9: Web應用程式以及資安問題的探討

自我介紹

據說比willie

早退伍!

Page 10: Web應用程式以及資安問題的探討

關於OWASP

開放Web軟體安全計畫

Open Web Application

Security Project

Page 11: Web應用程式以及資安問題的探討

OWASP目標

研議協助解決Web軟體安全之標準、工具與技術文件

Page 12: Web應用程式以及資安問題的探討

目前五大資安困境

• IT人員不足

• 缺乏資安領域專業知識

• 功能性驗收為主

• 缺乏自動化工具

• 成本、效率導向專案模式不利確保專案品質

12

Page 13: Web應用程式以及資安問題的探討

OWASP Top 10

#10

Page 14: Web應用程式以及資安問題的探討

OWASP Top 10 - #10

疏於限制URL存取

Failure to Restrict URL Access

Page 15: Web應用程式以及資安問題的探討

OWASP Top 10 - #10

[WEB ROOT]

/admin/[admin.html | index.html | index.jsp | index.asp | index.php]

/products

/sales

...

index.html

login.html

...

/backup/

/logs/

/vulnerable.cgi

Page 16: Web應用程式以及資安問題的探討

OWASP Top 10 - #10

Page 17: Web應用程式以及資安問題的探討

OWASP Top 10 - #10 – 解決

• 阻擋存取所有不會在伺服器上執行的檔案

• 將所有需要加入權限控管的檔案,設定正確的權限

• 利用MVC架構(如RoR)控制所有需要加入權限控管的檔案

• 不要把使用者當笨蛋17

Page 18: Web應用程式以及資安問題的探討

OWASP Top 10

#9

Page 19: Web應用程式以及資安問題的探討

OWASP Top 10 - #9

不安全的通訊

Insecure Communication

Page 20: Web應用程式以及資安問題的探討

OWASP Top 10 - #9

Page 21: Web應用程式以及資安問題的探討

OWASP Top 10 - #9 – 解決

使用SSL!

Page 22: Web應用程式以及資安問題的探討

OWASP Top 10

#8

Page 23: Web應用程式以及資安問題的探討

OWASP Top 10 - #8

不安全的密碼儲存器

Insecure Cryptographic Storage

Page 24: Web應用程式以及資安問題的探討

OWASP Top 10 - #8

• this is a text

• MD4: 24886fa61e16a6e5dd12fd180c878251

• MD5: 78821a05d282822e4abec190c061ba78

• SHA-1: 703c445982e074e33a05c161d221217f2facbf5e

• RSA:

45683425c7df8a78f80d4801ff277888fdba7a72150541e8eca1d7329ca

2cf53f8ca1f2d2dcd34513067b1f6db402bfee48143288f2b7b448da015

e5a6b0aababb1f95ef4a653547c98c6492a552d0d7f7425c1663f4f3008

91b6d0abc0ee17a499ad4f46ace65182c5bf26577021d49f26abb1a496

1f3e9e7e339ff2b4e778a

24

Page 25: Web應用程式以及資安問題的探討

OWASP Top 10 - #8 – 解決

• 使用較安全的加密演算法

– AES

– RSA

– SHA-256

25

Page 26: Web應用程式以及資安問題的探討

OWASP Top 10

#7

Page 27: Web應用程式以及資安問題的探討

OWASP Top 10 - #7

遭破壞的鑑別與連線管理

Broken Authentication and

Session Management

Page 28: Web應用程式以及資安問題的探討

OWASP Top 10 - #7

Page 29: Web應用程式以及資安問題的探討

OWASP Top 10 - #7 – 解決

• 不要允許來自網址列或是外部request的session id

• 將隱密性的資料使用已註冊的email傳送

• 修改密碼時需要再次確認舊密碼

• 每個網頁都需要有登出連結

29

Page 30: Web應用程式以及資安問題的探討

OWASP Top 10

#6

Page 31: Web應用程式以及資安問題的探討

OWASP Top 10 - #6

資訊揭露與不適當錯誤處置

Information Leakage and

Improper Error Handling

Page 32: Web應用程式以及資安問題的探討

OWASP Top 10 - #6

想不到例子了啦…

Page 33: Web應用程式以及資安問題的探討

OWASP Top 10 - #6 – 解決

• 確保每一個專案在開發時,都會有一個共同的例外處理方法(exception handling approach)

• 關閉/限制顯示錯誤資訊的大小

33

Page 34: Web應用程式以及資安問題的探討

OWASP Top 10

#5

Page 35: Web應用程式以及資安問題的探討

OWASP Top 10 - #5

跨網站的偽造要求

Cross-Site Request Forgery,

CSRF

Page 36: Web應用程式以及資安問題的探討

OWASP Top 10 - #5

• clickme.html

– <body><iframe width="1" height="1"

src="attack.html"></iframe></body>

• attack.html

– <body onload="document.frm.submit() "><form

name="frm" method="post"

action=http://a.com/atk.cgi><input type="hidden"

name="art" value="ttt"><input type="submit"

value="send"></form>

36

Page 37: Web應用程式以及資安問題的探討

OWASP Top 10 - #5 – 解決

• 在每個form加入一個隨機值,代表目前執行動作的使用者

• 針對敏感性資料的修改,在修改前請再次認證

• 不要把GET傳輸方式用在敏感性資料的修改

37

Page 38: Web應用程式以及資安問題的探討

OWASP Top 10

#4

Page 39: Web應用程式以及資安問題的探討

OWASP Top 10 - #4

不安全的物件參考

Insecure Direct Object Reference

Page 40: Web應用程式以及資安問題的探討

OWASP Top 10 - #4

• <select name="language"><option

value="fr">Francais</option></select>

require_once

($_REQUEST['language']."lang.php");

40

Page 41: Web應用程式以及資安問題的探討

OWASP Top 10 - #4

• 避免在HTML上顯示任何私人的檔案路徑,或是在HTML上使用id代表檔案名稱

• 可以利用白名單的方式驗證私人檔案路徑

41

Page 42: Web應用程式以及資安問題的探討

OWASP Top 10

#3

Page 43: Web應用程式以及資安問題的探討

OWASP Top 10 - #3

惡意檔案執行

Malicious File Execution

Page 44: Web應用程式以及資安問題的探討

OWASP Top 10 - #3

include $_REQUEST['file'];

Page 45: Web應用程式以及資安問題的探討

OWASP Top 10 - #3 – 解決

require_once($safe['file'] .

'inc.php');

Page 46: Web應用程式以及資安問題的探討

OWASP Top 10

Page 47: Web應用程式以及資安問題的探討

OWASP Top 10 - #2

SQL

Injection

Page 48: Web應用程式以及資安問題的探討

OWASP Top 10 - #2

駭客填空遊戲

Page 49: Web應用程式以及資安問題的探討

OWASP Top 10 - #2

• strSQL = "SELECT * FROM users WHERE (name =

'" + userName + "') and (pw = '"+ passWord +"');"

• userName = "' OR '1'='1";

• passWord = "' OR '1'='1";

• strSQL = "SELECT * FROM users WHERE (name =

'' OR '1'='1') and (pw = '' OR '1'='1');"

49

Page 50: Web應用程式以及資安問題的探討

OWASP Top 10 - #2 – 解決

• Parameterized Query

– SqlCommand sqlcmd = new

SqlCommand("INSERT INTO myTable (c1, c2, c3,

c4) VALUES (@c1, @c2, @c3, @c4)", sqlconn);

sqlcmd.Parameters.AddWithValue("@c1", 1);

sqlcmd.Parameters.AddWithValue("@c2", 2);

sqlcmd.Parameters.AddWithValue("@c3", 3);

sqlcmd.Parameters.AddWithValue("@c4", 4);

50

Page 51: Web應用程式以及資安問題的探討

OWASP Top 10

Page 52: Web應用程式以及資安問題的探討

OWASP Top 10 - #1

Page 53: Web應用程式以及資安問題的探討

OWASP Top 10 - #1

• echo $_REQUEST['userinput'];

• <script>alert(document.cookie)</script>

53

Page 54: Web應用程式以及資安問題的探討

OWASP Top 10 - #1 – 解決

• PHP

– htmlentities()

– htmlspecialchars()

• ASP.NET

– Server.HtmlEncode()

– Microsoft Anti-Cross Site Scripting Library

54

Page 55: Web應用程式以及資安問題的探討

OWASP Top 10

Page 56: Web應用程式以及資安問題的探討

程式碼安全品質

• [必要]

– A1. 跨網站的入侵字串(XSS)

– A2. 注入缺失(SQL Injection)

• [建議]

– A3. 惡意檔案執行

– A4. 不安全的物件參考

• [選擇]

– A5. 跨網站的偽造要求(CSRF)

56

Page 57: Web應用程式以及資安問題的探討

Coming soon…

Google

Maps

Page 58: Web應用程式以及資安問題的探討

Coming soon…

Version

Control

System

Page 59: Web應用程式以及資安問題的探討

沒了…

沒了…