XAMPP - 加強安全性

這篇中文版的 XAMPP for Windows 已經講得很清楚,XAMPP 的出發點是提供一個系統開發的環境,並不適合拿來當作實際上線的系統。我不解地想要尋找原因,才發現其實他所警示的安全漏洞都不是什麼難以克服的大問題,不外乎就是一些套件預設的設置沒有密碼保護等等。


1. MySQL 的系統管理者 (root) 預設沒有密碼。
2. 可以透過任何網路來存取 MySQL。
3. 可以透過任何網路來存取 PhpMyAdmin
4. 可以透過任何網路來存取所有範例。
5. Mercury 和 FileZIlla的使用者都是已知的。

按照說明,只要執行了 "http://127.0.0.1/security" 的安全加強程序,就能夠幫助你設定MySQL root密碼,並且將 XAMPP 的系統預設網頁加上 .htaccess 存取保護。

如果打算手動加強安全性,不妨參考一下我的建議:

Setup MySQL root password


  1. 開啟cmd視窗

  2. 改變路徑到 (XAMPP)/mysql/bin

  3. 進入 MySQL CLI
    > mysql -u root

  4. 設定root權限與密碼
    mysql> grant all privileges on *.* to root@localhost
    identified by 'PASSWORD';
    記得上面的PASSWORD是你要設定的密碼,行末一定要加分號以執行上述命令

  5. 使上述權限設定生效,或者重新啟動 MySQL 服務亦可
    mysql> flush privilege;

  6. 離開CLImysql> exit

Setup PhpMyAdmin


  1. 編輯 (XAMPP)/phpMyAdmin/config.inc.php

  2. 修改
    $cfg['PmaAbsoluteUri'] = "http://localhost/phpmyadmin/";

  3. 修改
    $cfg['Servers'][$i]['auth_type'] = "AUTH_TYPE";
    上述的AUTH_TYPE可以是 "http" 或 "cookie",其實兩者差不多,差異在登入係用瀏覽器 http_authentication 或是網頁畫面

Protect XAMPP webpages


  1. 複製 (XAMPP)/htdocs/forbidden/目錄下的 .htaccess 和
    .htpasswd 檔案到 (XAMPP)/htdocs/xampp

  2. 修改 .htaccess 檔案
    AuthUserfile "../htdocs/xampp/.htpasswd"

  3. 修改 .htpasswd 檔案
    帳號:密碼
    須注意,上述的存取帳號與密碼都是未編碼的文字,要注意被他人以檔案系統開啟探知密碼內容

  4. 移除 (XAMPP)/htdocs/ 目錄內不必要的網頁

Apache VirtualHost


在 Apache 內,可以於同一個 IP 設置多組網站 Hosts,善用 VirtualHost 的功能,可以幫你靈活集中調用主機,並且利用 hostname 將網站資源放入分站,減少網站路徑長度,防止有心人窺視你的網頁文件結構。

Apache Alias


在 httpd.conf 文件中尋找 "IfModule alias_module" 子段落,將一些平常少用或想要限定使用的路徑設置成 Alias,好處是你可以不用重新命名檔案目錄,卻可以將網站路徑跨越層級指向特定地方。譬如說你可以指定
Alias /tHiS.mY.pHPMyadMin /phpmyadmin
然後搭配上面 phpMyAdmin 的說明將 PmaAbsoluteUri 存取路徑指向 "/tHiS.mY.pHPMyadMin"。

由於 Alias 是大小寫對應的 (case-sensitive),所以除非有人猜中你那個大小寫亂拼的路徑,否則無法正確開啟 phpmyadmin 路徑。反之若是你只是重新命名 phpmyadmin 為 pHPMyadMin,因為 URI 是 case-insensitive 不分大小寫,所以這種混編大小寫完全沒有效用。

Apache URL Rewrite


高段班的做法,是設定 Apache 的 url_rewrite rules,利用 regular expression 將存取要求改寫到不同的目標。
  1. 先得要取消下面這行開頭的備註符號以載入模組
    LoadModule rewrite_module modules/mod_rewrite.so

  2. 在 Directory 或 VirtualHost 裡面加入以下設定:

    〈IfModule mod_rewrite.c〉
    RewriteEngine On
    RewriteRule ^/([^/]+) /index.php?$1
    〈/IfModule〉

請注意上述範例中的角括弧為了顯示都改用全形,請自行改回來。有關 RewriteRule 的各種用法,請自行去查閱網路上的說明(好一個推卸責任的說法),這裡提供幾個簡單的 rule 當作參考。
  • RewriteRule ^/ABC/([^/]+) /bin/script.php?ABC=$1

  • RewriteRule ^/script/([^/]+)/([^/]+).html /data.php?id=$1&page=$2

怎樣,看懂了嗎?不懂沒關係,正規式本來就是火星人溝通的語言之一,我們地球人是無法理解的。

Re:XAMPP - 加強安全性

tommy | 2007-02-27 22:46:48

很贊的內容
感謝

Re:XAMPP - 加強安全性

電腦半桶水 | 2007-03-04 19:02:10

按照說明,只要執行了"http://127.0.0.1/security"的安全加強程序,就能夠幫助你設定MySQL root密碼,並且將 XAMPP 的系統預設網頁加上 .htaccess 存取保護。

請問我設了之後什麼在別台電腦流覽時會要求輸入密碼?

電腦半桶水

Re:XAMPP - 加強安全性

Takol | 2007-03-04 22:29:38

to 電腦半桶水,
.htaccess 的用意,就在利用密碼保護某目錄下的網頁,所以不管在哪台電腦開啟 XAMPP 系統網頁自然得要輸入密碼。由於實際營運狀態下的網站,最好別讓一般訪客知曉太多系統平台的資訊,所以將預設會開啟的 XAMPP 網頁關閉,能夠稍加保護系統安全性。

簡單回答你的問題,如果開啟 XAMPP 預設網頁時詢問密碼,就是 .htaccess,如果在開啟 PhpMyAdmin 時詢問密碼,應該就是設定了 MySQL root 密碼所致。

Re:XAMPP - 加強安全性

電腦半桶水 | 2007-03-05 02:15:31

感謝版主:
我的問題有以下
1.我設了MySQL root 與 .htaccess密碼之後結果我不能讓人到我的網站看,(因為要帳號.密碼),請問如何解開帳號.密碼設定讓人進入首頁(我是用127.0.0.1)設的
2.如果我要鎖住另一個不讓人進入的目錄又要如何設??
總之,我的意思是要設PhpMyAdmin的密碼,不要設.htaccess密碼,但在127.0.0.1一定要填入,怎麼辦,第一次自己架站,感謝站長哦

電腦半桶水,感恩

Re:XAMPP - 加強安全性

電腦半桶水 | 2007-03-05 13:25:13

上面寫的很詳盡了,我太白目了,以經架好了,感謝!

XAMPP - 外網連線的問題

peter | 2007-10-13 04:12:28

大大請問一下 XAMPP 我自己設定的網頁可以連線,但是他人無法連線到我的網頁,我去網路上面看教學說去防火牆設置
xampp\\apache\\bin\\apache.exe
xampp\\mysql\\bin\\mysqld.exe
HTTP
設定好了還是沒辦法連線 請問我改怎麼用設定它人才有辦法連線到我網頁!!

Re:XAMPP - 加強安全性

Takol | 2007-10-13 09:30:09

Windows 內建的防火牆是一個,防毒軟體的防火牆又是另外一個,要兩者都檢查測試才行。看起來這不是 xampp 的問題,得從 OS 或 網路層來測試找答案。

XAMPP - 外網連線的問題

peter | 2007-10-13 19:51:58

嗯嗯~好謝謝Takol大大 我從這個方面去找資料作修改好了!!

回應留言

姓名:
Email:
網站:
標題:
為了防止垃圾留言,請動動腦筋計算一下:
九加上八等於多少? (阿拉伯數字)
Menu_home
Menu_mobile
Menu_category
Menu_label
Menu_calendar
Menu_rss
木由子的咆笑日記