PHP 防駭 - 基礎觀念篇

7,621 views

Published on

哇寶內部教育訓練用教材

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,621
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
74
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

PHP 防駭 - 基礎觀念篇

  1. 1. PHP 防駭 - 基礎觀念篇 如何寫出安全的 PHP 網站
  2. 2. 常見的威脅 上線環境的錯誤訊息中出現相關系統資訊 • 透過網址就能進入管理頁面 • 資料庫中的資料無端地被全部刪除 • 頁面被植入不明連結 • 程式中多出不明的 PHP 檔案 •
  3. 3. 開發環境的設定
  4. 4. error_reporting = E_ALL • 嚴格是安全的根本 • http://localhost/hack/notice.php
  5. 5. register_globals = Off • 想偷懶想節省打字字數 • http://localhost/hack/admin/index.php • http://localhost/hack/admin/index.php?isLogin=1
  6. 6. 上線環境的設定
  7. 7. display_errors = Off • 錯誤洩漏系統環境 • http://localhost/hack/notice.php
  8. 8. log_errors = On • 將錯誤記到 log 檔中 • error_log = filename
  9. 9. Safe mode • 通常是共享主機才有必要打開 • 官方建議不應該在 PHP 層級裡使用 • PHP6 已不再內建
  10. 10. SQL Injection
  11. 11. 資料型態的重要性 • 過份相信外部資料 • http://localhost/hack/user.php?id=1 • http://localhost/hack/user.php?id=' or 1=1; /* • POST 表單也有同樣的問題,而且更危險
  12. 12. 更可怕的指令 • http://localhost/hack/user.php?id=';delete from users; /* • 其實只要權限夠,什麼指令都能執行。
  13. 13. 善用 Library 提供的函式 Zend Framework: Zend_Db_Adapter_Abstract::quoteInto() • MySQL Library: addslashes(), mysql_real_escape_string() • MySQLi Library: mysqli::real_escape_string() • ADOdb: ADOConnection::Quote() •
  14. 14. 將資料編碼 • 敏感資料用可逆的加密演算法加密 – 優點:駭客不容易解讀 – 缺點:一定要用程式解讀,而且還是有可能被 破解 • 敏感資料用不可逆的加密演算法加密 – 優點:如果夠嚴密的話,駭客完全無法解讀 – 缺點:無法還原為原來密碼
  15. 15. Script Injection
  16. 16. 讓瀏覽者踩到地雷 • <?php echo $content ?> • http://localhost/hack/post.php – <script src=quot;http://example.com/hack.jsquot;></script> – <iframe src=quot;http://example.com/hack.phpquot; height=quot;0quot;></iframe>
  17. 17. 去除HTML的影響 • <?php echo htmlspecialchars($content); ?> – 缺點:沒辦法顯示 HTML • <?php echo strip_tags($content, '<p>'); ?> – 缺點:有可能無法避掉 onxxxx 的 JS • BBCode, Wiki, PEAR::HTML_Safe, …
  18. 18. 木馬
  19. 19. 上傳後門檔案 • 沒有檢查型態 – mime-type 還是副檔名? – 白名單檢查 • 用 SQL Injection
  20. 20. 一支 PHP 程式就能看透你的網站 • http://localhost/hack/c99shell.php • http://localhost/hack/phpspy2008.php
  21. 21. 討論
  22. 22. 如何建立良好的程式開發習慣? • MIS能為你做些什麼? • 用套件?還是自己來? • 哪些網站提供相關資訊? •
  23. 23. 謝謝

×