Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,914 views

Published on

Published in: Technology
  • Be the first to comment

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

  1. 1. Web應用程式以及資安問題的 探討 kewang 1
  2. 2. 今日主題 今日主題
  3. 3. 今日主題 OWASP Top 10
  4. 4. 自我介紹 宜蘭讀書6年
  5. 5. 自我介紹 任職大X資訊
  6. 6. 自我介紹 2008/9/16
  7. 7. 自我介紹 2011/8/24
  8. 8. 自我介紹 / 44 1072
  9. 9. 自我介紹 據說比willie 早退伍!
  10. 10. 關於OWASP 開放Web軟體安全計畫 Open Web Application Security Project
  11. 11. OWASP目標 研議協助解決Web軟體安全之 標準、工具與技術文件
  12. 12. 目前五大資安困境 • IT人員不足 • 缺乏資安領域專業知識 • 功能性驗收為主 • 缺乏自動化工具 • 成本、效率導向專案模式不利 確保專案品質 12
  13. 13. OWASP Top 10 #10
  14. 14. OWASP Top 10 - #10 疏於限制URL存取 Failure to Restrict URL Access
  15. 15. 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
  16. 16. OWASP Top 10 - #10
  17. 17. OWASP Top 10 - #10 – 解決 • 阻擋存取所有不會在伺服器上執行的 檔案 • 將所有需要加入權限控管的檔案,設 定正確的權限 • 利用MVC架構(如RoR)控制所有需要 加入權限控管的檔案 • 不要把使用者當笨蛋 17
  18. 18. OWASP Top 10 #9
  19. 19. OWASP Top 10 - #9 不安全的通訊 Insecure Communication
  20. 20. OWASP Top 10 - #9
  21. 21. OWASP Top 10 - #9 – 解決 使用SSL!
  22. 22. OWASP Top 10 #8
  23. 23. OWASP Top 10 - #8 不安全的密碼儲存器 Insecure Cryptographic Storage
  24. 24. OWASP Top 10 - #8 • this is a text • MD4: 24886fa61e16a6e5dd12fd180c878251 • MD5: 78821a05d282822e4abec190c061ba78 • SHA-1: 703c445982e074e33a05c161d221217f2facbf5e • RSA: 45683425c7df8a78f80d4801ff277888fdba7a72150541e8eca1d7329ca 2cf53f8ca1f2d2dcd34513067b1f6db402bfee48143288f2b7b448da015 e5a6b0aababb1f95ef4a653547c98c6492a552d0d7f7425c1663f4f3008 91b6d0abc0ee17a499ad4f46ace65182c5bf26577021d49f26abb1a496 1f3e9e7e339ff2b4e778a 24
  25. 25. OWASP Top 10 - #8 – 解決 • 使用較安全的加密演算法 – AES – RSA – SHA-256 25
  26. 26. OWASP Top 10 #7
  27. 27. OWASP Top 10 - #7 遭破壞的鑑別與連線管理 Broken Authentication and Session Management
  28. 28. OWASP Top 10 - #7
  29. 29. OWASP Top 10 - #7 – 解決 • 不要允許來自網址列或是外部request的 session id • 將隱密性的資料使用已註冊的email傳送 • 修改密碼時需要再次確認舊密碼 • 每個網頁都需要有登出連結 29
  30. 30. OWASP Top 10 #6
  31. 31. OWASP Top 10 - #6 資訊揭露與不適當錯誤處置 Information Leakage and Improper Error Handling
  32. 32. OWASP Top 10 - #6 想不到例 子了啦…
  33. 33. OWASP Top 10 - #6 – 解決 • 確保每一個專案在開發時,都會有一個共同的 例外處理方法(exception handling approach) • 關閉/限制顯示錯誤資訊的大小 33
  34. 34. OWASP Top 10 #5
  35. 35. OWASP Top 10 - #5 跨網站的偽造要求 Cross-Site Request Forgery, CSRF
  36. 36. OWASP Top 10 - #5 • clickme.html – <body><iframe width=quot;1quot; height=quot;1quot; src=quot;attack.htmlquot;></iframe></body> • attack.html – <body onload=quot;document.frm.submit() quot;><form name=quot;frmquot; method=quot;postquot; action=http://a.com/atk.cgi><input type=quot;hiddenquot; name=quot;artquot; value=quot;tttquot;><input type=quot;submitquot; value=quot;sendquot;></form> 36
  37. 37. OWASP Top 10 - #5 – 解決 • 在每個form加入一個隨機值,代表目前執行動 作的使用者 • 針對敏感性資料的修改,在修改前請再次認證 • 不要把GET傳輸方式用在敏感性資料的修改 37
  38. 38. OWASP Top 10 #4
  39. 39. OWASP Top 10 - #4 不安全的物件參考 Insecure Direct Object Reference
  40. 40. OWASP Top 10 - #4 • <select name=quot;languagequot;><option value=quot;frquot;>Francais</option></select> … require_once ($_REQUEST['language'].quot;lang.phpquot;); 40
  41. 41. OWASP Top 10 - #4 • 避免在HTML上顯示任何私人的檔案路徑,或 是在HTML上使用id代表檔案名稱 • 可以利用白名單的方式驗證私人檔案路徑 41
  42. 42. OWASP Top 10 #3
  43. 43. OWASP Top 10 - #3 惡意檔案執行 Malicious File Execution
  44. 44. OWASP Top 10 - #3 include $_REQUEST['file'];
  45. 45. OWASP Top 10 - #3 – 解決 require_once($safe['file'] . 'inc.php');
  46. 46. OWASP Top 10
  47. 47. OWASP Top 10 - #2 SQL Injection
  48. 48. OWASP Top 10 - #2 駭客填空 遊戲
  49. 49. OWASP Top 10 - #2 • strSQL = quot;SELECT * FROM users WHERE (name = 'quot; + userName + quot;') and (pw = 'quot;+ passWord +quot;');quot; • userName = quot;' OR '1'='1quot;; • passWord = quot;' OR '1'='1quot;; • strSQL = quot;SELECT * FROM users WHERE (name = '' OR '1'='1') and (pw = '' OR '1'='1');quot; 49
  50. 50. OWASP Top 10 - #2 – 解決 • Parameterized Query – SqlCommand sqlcmd = new SqlCommand(quot;INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4)quot;, sqlconn); sqlcmd.Parameters.AddWithValue(quot;@c1quot;, 1); sqlcmd.Parameters.AddWithValue(quot;@c2quot;, 2); sqlcmd.Parameters.AddWithValue(quot;@c3quot;, 3); sqlcmd.Parameters.AddWithValue(quot;@c4quot;, 4); 50
  51. 51. OWASP Top 10
  52. 52. OWASP Top 10 - #1
  53. 53. OWASP Top 10 - #1 • echo $_REQUEST['userinput']; • <script>alert(document.cookie)</script> 53
  54. 54. OWASP Top 10 - #1 – 解決 • PHP – htmlentities() – htmlspecialchars() • ASP.NET – Server.HtmlEncode() – Microsoft Anti-Cross Site Scripting Library 54
  55. 55. OWASP Top 10
  56. 56. 程式碼安全品質 • [必要] – A1. 跨網站的入侵字串(XSS) – A2. 注入缺失(SQL Injection) • [建議] – A3. 惡意檔案執行 – A4. 不安全的物件參考 • [選擇] – A5. 跨網站的偽造要求(CSRF) 56
  57. 57. Coming soon… Google Maps
  58. 58. Coming soon… Version Control System
  59. 59. 沒了… 沒了…

×