簡體   English   中英

保護Web應用程序(LAMP堆棧)中的數據庫(MySQL)登錄憑據

[英]Securing database (MySQL) login credentials in a web application (LAMP stack)

首先,如果有完全重復 - 我沒有找到任何,所以我道歉,以防已經提供了答案。

我將提出我面臨的問題,希望我能得到一些見解或直截了當的“不可能”的答案。

如果PHP受到損害的服務器,如何在Web應用程序中保護數據庫憑據? 假設在這個問題的情況下我們不是在討論共享主機,VPS或類似的東西,只有一個人可以訪問存儲MySQL信息的盒子。

MySQL服務器本身位於另一個(遠程)盒子,只允許來自一系列IP地址(綁定到PHP盒子)的連接。

如何確保惡意用戶無法獲取MySQL連接字符串所需的詳細信息? 假設用戶已經破壞了運行PHP的linux框的root登錄。

在這種情況下,您將在訪問建立MySQL連接所需的信息方面采取哪些步驟來提供最高安全性?

感謝您提前閱讀和評論。

如果這是一個主要優先級,那么這里的最佳解決方案是使用存儲過程。

存儲過程將數據庫查詢存儲在數據庫中,因此只需設置它們,然后創建一個只具有存儲過程執行權限的新MYSQL用戶。 這樣,即使應用程序代碼被泄露,它們也只能操縱有限的數據子集,而且它們也不了解底層數據庫結構。

這種方法的負面影響是可維護性,因為您的混合應用程序邏輯與您的存儲系統混合,並且它可能無法跨平台移植。

如果您想要一個簡單的解決方案,hafichuk建議的可能會更好,只需根據您的需求進行定制。 不幸的是,您的腳本需要能夠訪問數據庫,除非您的Web服務器和應用程序服務器位於不同的計算機上並通過某些加密通道(如SSH)進行通信,但是您的過程太復雜了。 這一切都取決於保護對您的重要程度,以及您願意確保保護的程度。

不幸的是,PHP代碼將以明文形式提供mysql系統的用戶名和密碼。 我的建議是你限制該數據庫用戶的權限(你使用的是非root的數據庫用戶,我希望)。

請參閱http://dev.mysql.com/doc/refman/5.5/en/adding-users.html 如果您正在使用phpmyadmin或其他UI,那么您可以通過這種方式限制用戶權限。

基本上,除非您的應用程序需要其他權限,否則您通常只希望向mysql用戶授予SELECT,UPDATE,INSERT和DELETE。

除此之外,希望其他人可以提供更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM