2011-11-01 18 views
5

最初に、正確な重複がある場合 - 私は何も見つかりませんでしたので、回答がすでに提供されている場合にお詫び申し上げます。Webアプリケーション(LAMPスタック)のデータベース(MySQL)ログイン資格情報の保護

私は直面している問題を提示します。私はいくつかの洞察力や簡単な「不可能な」答えを得ることを望みます。

PHPが脆弱になっているサーバーの場合、Webアプリケーションでデータベースの資格情報を保護するにはどうすればよいですか? この問題のケースでは、共有ホスティング、VPSなどとは関係なく、MySQL情報を格納するボックスにアクセスできるのは1人だけです。

MySQLサーバ自体は別の(リモート)ボックスにあり、PHPボックスにバインドされた一連のIPアドレスからの接続のみを許可します。

悪意のあるユーザーがMySQLの接続文字列に必要な詳細を取得できないようにする方法を教えてください。ユーザーがPHPを実行しているLinuxボックスのrootログインを壊したとします。

このような場合にMySQL接続を確立するために必要な情報にアクセスする上で、最高のセキュリティを提供するために、

お読みいただきありがとうございます。

+0

このトピックは既にここで扱っています。http://stackoverflow.com/questions/3710511/best-way-to-connect-to-mysql-with-php-securely – hafichuk

+0

@hafichuk - リンクは、パスワードを使用してファイルを暗号化している最善の答えで、アクセスを保護します。しかし、もし誰かが根本的なものであれば、PHPコードの変更や信用証明のエコーを止めるものはありません。私は誰かが、公開サーバーの暗号化や公開鍵暗号化などのアプリケーションサーバーとdbサーバー間の通信を確立するためのより良い方法を持っているのかどうか疑問に思っています。 – Furicane

答えて

2

ここで最善の解決方法は、これが主な優先事項である場合は、ストアドプロシージャを使用することです。

ストアドプロシージャは、データベースクエリをデータベースに格納するため、ストアドプロシージャの実行権限だけで新しいMYSQLユーザーを作成します。このようにして、アプリケーションコードが侵害されても、データの限定されたサブセットのみを操作することができ、基盤となるデータベース構造についての知識も得られません。

このアプローチの欠点は、ミキシングアプリケーションの論理がストレージシステムと異なるため、保守性が低下し、プラットフォーム間で移植できない可能性があることです。

シンプルなソリューションが必要な場合は、hafichukが提案した内容が優れているかもしれませんが、ニーズに合わせてカスタマイズするだけです。残念ながら、Webサーバーとアプリケーションサーバーが別々のマシンにあり、SSHなどの暗号化されたチャネルを介して通信しない限り、スクリプトはデータベースにアクセスできる必要があります。それはすべて、保護が本当にあなたにとってどれほど重要であるか、それを確実にするためにあなたがどれくらい遠慮しているかによって異なります。

1

残念ながら、PHPコードでは、mysqlシステムのユーザー名とパスワードが平文で表示されます。私の提案は、あなたがそのデータベースユーザの権限を制限していることです(root以外のデータベースユーザを使用しています)。

http://dev.mysql.com/doc/refman/5.5/en/adding-users.htmlを参照してください。 phpmyadminやその他のUIを使用している場合は、そのような方法でユーザー権限を制限することができます。

基本的には、アプリケーションに別の権限が必要な場合を除いて、SELECT、UPDATE、INSERT、およびDELETEをmysqlユーザーに付与するのが一般的です。

これ以外にも、誰かがより良い解決策を提供できることを願っています。

+0

答えがありがとうございますが、目標は、ユーザーがデータベースにアクセスするのが困難かどうかを制限することです。 dbからの読み込みも違反とみなされるため、違反のレベルは、誰かがデータセット全体を削除または削除した場合と同じです。 – Furicane

関連する問題