Upload
mu-chun-wang
View
2.606
Download
3
Embed Size (px)
DESCRIPTION
Citation preview
Web應用程式以及資安問題的探討
kewang
1
今日主題
今日主題
今日主題
OWASP
Top 10
自我介紹
宜蘭讀書6年
自我介紹
任職大X資訊
自我介紹
2008/9/16
自我介紹
2011/8/24
自我介紹
44/1072
自我介紹
據說比willie
早退伍!
關於OWASP
開放Web軟體安全計畫
Open Web Application
Security Project
OWASP目標
研議協助解決Web軟體安全之標準、工具與技術文件
目前五大資安困境
• IT人員不足
• 缺乏資安領域專業知識
• 功能性驗收為主
• 缺乏自動化工具
• 成本、效率導向專案模式不利確保專案品質
12
OWASP Top 10
#10
OWASP Top 10 - #10
疏於限制URL存取
Failure to Restrict URL Access
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
OWASP Top 10 - #10
OWASP Top 10 - #10 – 解決
• 阻擋存取所有不會在伺服器上執行的檔案
• 將所有需要加入權限控管的檔案,設定正確的權限
• 利用MVC架構(如RoR)控制所有需要加入權限控管的檔案
• 不要把使用者當笨蛋17
OWASP Top 10
#9
OWASP Top 10 - #9
不安全的通訊
Insecure Communication
OWASP Top 10 - #9
OWASP Top 10 - #9 – 解決
使用SSL!
OWASP Top 10
#8
OWASP Top 10 - #8
不安全的密碼儲存器
Insecure Cryptographic Storage
OWASP Top 10 - #8
• this is a text
• MD4: 24886fa61e16a6e5dd12fd180c878251
• MD5: 78821a05d282822e4abec190c061ba78
• SHA-1: 703c445982e074e33a05c161d221217f2facbf5e
• RSA:
45683425c7df8a78f80d4801ff277888fdba7a72150541e8eca1d7329ca
2cf53f8ca1f2d2dcd34513067b1f6db402bfee48143288f2b7b448da015
e5a6b0aababb1f95ef4a653547c98c6492a552d0d7f7425c1663f4f3008
91b6d0abc0ee17a499ad4f46ace65182c5bf26577021d49f26abb1a496
1f3e9e7e339ff2b4e778a
24
OWASP Top 10 - #8 – 解決
• 使用較安全的加密演算法
– AES
– RSA
– SHA-256
25
OWASP Top 10
#7
OWASP Top 10 - #7
遭破壞的鑑別與連線管理
Broken Authentication and
Session Management
OWASP Top 10 - #7
OWASP Top 10 - #7 – 解決
• 不要允許來自網址列或是外部request的session id
• 將隱密性的資料使用已註冊的email傳送
• 修改密碼時需要再次確認舊密碼
• 每個網頁都需要有登出連結
29
OWASP Top 10
#6
OWASP Top 10 - #6
資訊揭露與不適當錯誤處置
Information Leakage and
Improper Error Handling
OWASP Top 10 - #6
想不到例子了啦…
OWASP Top 10 - #6 – 解決
• 確保每一個專案在開發時,都會有一個共同的例外處理方法(exception handling approach)
• 關閉/限制顯示錯誤資訊的大小
33
OWASP Top 10
#5
OWASP Top 10 - #5
跨網站的偽造要求
Cross-Site Request Forgery,
CSRF
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
OWASP Top 10 - #5 – 解決
• 在每個form加入一個隨機值,代表目前執行動作的使用者
• 針對敏感性資料的修改,在修改前請再次認證
• 不要把GET傳輸方式用在敏感性資料的修改
37
OWASP Top 10
#4
OWASP Top 10 - #4
不安全的物件參考
Insecure Direct Object Reference
OWASP Top 10 - #4
• <select name="language"><option
value="fr">Francais</option></select>
…
require_once
($_REQUEST['language']."lang.php");
40
OWASP Top 10 - #4
• 避免在HTML上顯示任何私人的檔案路徑,或是在HTML上使用id代表檔案名稱
• 可以利用白名單的方式驗證私人檔案路徑
41
OWASP Top 10
#3
OWASP Top 10 - #3
惡意檔案執行
Malicious File Execution
OWASP Top 10 - #3
include $_REQUEST['file'];
OWASP Top 10 - #3 – 解決
require_once($safe['file'] .
'inc.php');
OWASP Top 10
OWASP Top 10 - #2
SQL
Injection
OWASP Top 10 - #2
駭客填空遊戲
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
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
OWASP Top 10
OWASP Top 10 - #1
OWASP Top 10 - #1
• echo $_REQUEST['userinput'];
• <script>alert(document.cookie)</script>
53
OWASP Top 10 - #1 – 解決
• PHP
– htmlentities()
– htmlspecialchars()
• ASP.NET
– Server.HtmlEncode()
– Microsoft Anti-Cross Site Scripting Library
54
OWASP Top 10
程式碼安全品質
• [必要]
– A1. 跨網站的入侵字串(XSS)
– A2. 注入缺失(SQL Injection)
• [建議]
– A3. 惡意檔案執行
– A4. 不安全的物件參考
• [選擇]
– A5. 跨網站的偽造要求(CSRF)
56
Coming soon…
Maps
Coming soon…
Version
Control
System
沒了…
沒了…