phpMyAdmin 資料庫管理工具
phpMyAdmin是用PHP語言寫成的,能與資料庫溝通的一個方便的視覺化界面,讓使用者用滑鼠點一點就能操作MySQL資料庫了。
開啟XAMPP上的MySQL服務後,在瀏覽器上輸入 127.0.0.1/phpmyadmin
會來到這樣一個頁面
修改使用者帳號密碼
首先先點選Home回到主頁
修改登入時使用的密碼
C:\xampp\phpMyAdmin 資料夾中的 config.inc.php 檔案
登入授權方式
config.inc.php檔案中的auth_type權限認證方式,支援以下參數:
config: 預設方式。自動帶入config中設定的帳號密碼,不需額外輸入
cookie: 使用cookie帶入
http: 使用http Auth輸入帳號密碼的方式
signon: 單點登入方式(還沒研究)
主機名稱 允許來自何處的連線
這邊的使用者帳戶主機名稱欄位,指的是可以允許連線的來源
% 代表從何處ip都可以連線
localhost, 127.0.0.1, ::1 表示只能從本地端(伺服器自己電腦上)連線
如果設定成特定ip,則是這組帳號只能允許來自該ip的連線
此一步驟可以在添加使用者帳戶的時候
點選此主機或文字方塊來設定
遠端登入phpMyAdmin (Remote Access)
預設情況下 用別台電腦遠端連線時,phpMyAdmin 會出現權限不足的情形
Forbidden
You don't have permission to access this resource.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2.4.54 (Win64) OpenSSL/1.1.1p PHP/7.4.30 Server at gjlmotea.com Port 443找到 Alias /phpmyadmin "C:/xampp/phpMyAdmin/" 這一段
將 Require local 改為 Require all granted
存檔後重新啟動Apache服務就可以透過phpMyAdmin對資料庫遠端操作了。
因為暴露出phpmyadmin給遠端使用,等於使用者拿著伺服器端的config.ini.php登入phpmyadmin,導致"主機名稱"的限制都不會起作用
所以記得先設好使用者的密碼,否則任何人都可以進入連線(很危險、根本是在找死)
以下提供幾個方法
方法1
僅允許來自特定ip的連線
如果允許多個ip,則以空白連接:
Require ip 192.168.1.100 192.168.1.101
這樣一來從非以上ip的地方連線就會出現Forbidden
如果要同時允許local以及特定ip:
Require local
Require ip 192.168.1.100 192.168.1.101
方法2
到 C:\xampp\phpMyAdmin\config.inc.php 中
調整這兩行設定
是否允許無密碼連線、是否允許root帳戶連線
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Servers'][$i]['AllowRoot'] = true;
方法3
把用不到的User先Lock住
(不過也要小心,不要把全部帳號都刪除或上鎖,否則會連不進資料庫只能用一些特異方法了... 例如到其他台電腦的 C:\xampp\mysql\data\mysql 複製完好如初的資料覆蓋過去)
這幾組預設帳號,密碼都改好之後會無法用root登入會出現以下畫面。
紅圈處記得修改成對應的
將資料庫密碼放於php檔案會不會有問題?
以wget測試結果來看,是沒有問題的
不管是php mysql的密碼或是wordpress wp-admin的後台都是顯示渲染過後的資料
敏感資料不容易被看到
會不會被找到該檔案之後密碼就暴露了?
一般情況下是不太可能的,客戶端瀏覽器只能接收到PHP渲染後產生的HTML內容
但若是攻擊者並非以網頁方式瀏覽
以類似FTP的方式直接存取檔案本身,能夠直接看到php檔案程式碼
那答案是肯定的
所以要做好安全的目錄權限設置
可設置許可權限,只有Web伺服器(如Apache、Nginx)能讀取該檔案
不允許其他使用者或進程訪問
例如 Linux將檔案權限設置成600、644,或者Windows在屬性中的"安全"選項卡設置使用者和群組權限(或直接使用icacls指令)
以及可以在 php.ini 檔案中 將這行設置成off
不直接將錯誤堆疊顯示在返回的HTML上,降低錯誤發生時 伺服器敏感資訊暴露的可能
display_errors = Off
然後重啟伺服器
最後要小心的是
不要貪圖方便
絕對不要放機敏資料到網頁伺服器上,尤其像是以下這種sql檔案
https://gjlmotea.com/warehouse/warehouse.sql
常見檔案如下:
.sql
.git
readme.md
推薦作法是
- 把它們都移到網站伺服器之外的目錄,例如:User目錄
- 或者設定成禁止訪問,例如:在httpd.conf中加入 `RedirectMatch 404 /\.git` 當訪問.git時必定出現404;或者在httpd.conf中將Indexes這個關鍵字移除掉,使得無法訪問 缺少index page的資料夾
- 或者至少設置個加密:用.zip或者7-zip,或者設置檔案加密
- 甚至不要放上伺服器上!
沒有留言:
張貼留言