web-dev-qa-db-ja.com

Wordpressデータベースのパスワードを正しく更新する方法

自分が管理しているサイトが最近侵害され、そのサイトを強化して安全を確保するための手順を実行しています。 MySqlデータベースのパスワードを変更したいのですが、サイトを停止しないように(1分以上)しないようにしたいです。

また、 wp-config.php ファイルでDBパスワードを直接手動で変更した場合、それが表示され暗号化されないようになることも心配です。たとえば、インストール時の初期パスワードが「please」の場合、 wp-config.php ファイルには「aDQps4txy」と表示されます。

それでは、データベースのパスワードを更新するための最良の方法は何ですか?

前もって感謝します。

1
MagRat

これは技術的に困難です。 WordPress 必須 プレーンテキストのDBパスワードにアクセスできる。 wp-config.phpの内容にアクセスすることはすでに進行中のセキュリティ違反です。

環境変数を使用して資格情報をロードするなど、設定には別の方法がありますが、PHP configファイルがすでに妥当な解決策であるため、実際にはあまり使用されません。

なぜあなたが誰かが設定にアクセスすると仮定するのかはっきりしません。ぶら下がっている果物としてあなたはそれをウェブのアクセス可能なディレクトリの外に置くことができます。 WordPressは自分自身の1つ上のディレクトリレベルで設定をスキャンします。サブディレクトリのインストールでは、他の場所から設定内容をロードするためにrequireを使用することができますが、それでもほとんど行われません。

2
Rarst

実際のDBパスワードはwp-config.phpに暗号化されずに保存されます。つまり、パスワードがfoobarの場合、wp-config.phpの対応する行は次のようになります。

/** MySQL database password */
define('DB_PASSWORD', 'foobar');

@Rarstが指摘したように:

Wp-config.phpの内容にアクセスすることはすでに進行中のセキュリティ違反です。

これはPHPがハイパーテキスト プリプロセッサ であるためです。 Webブラウザ経由でwp-config.phpにアクセスする人はだれでも サーバー側 PHPインタプリタを通してファイルをルーティングすることになります。インタプリタは、出力を指示されたデータのみをクライアント(Webブラウザ)に渡します。 DBのパスワードはPHPによって出力されません。私のブラウザを通して私のwp-config.phpにアクセスすると、このファイルは何も出力しないので、全くソースコードのない空のページを得ます。

ただし、DBパスワードを暗号化せずに保存しても完全にリスクがないわけではありません。 PHPインタプリタを迂回してファイルのソースを読む機会を得た人はだれでもあなたのパスワードにアクセスすることができます。これも@Rarstの意味です。はっきりさせるために、これは 中間者 あなたの 暗号化されていないFTP接続を盗聴している人 でも構いません。安全でないFTP接続(暗号化されたSFTP接続とは対照的)を介してwp-config.phpをダウンロードしてサーバーに再度アップロードする瞬間、パスワードが に盗まれている可能性があります .

ほとんどの攻撃を防ぐ最も簡単な方法は、セキュリティ更新プログラムを使用してサーバーを最新の状態に保ち、常に安全なプロトコル(HTTP/FTP over TLS = HTTPS/FTPS をHTTP/FTPではなく)を使用することです。機密データを扱う場合、つまり管理者として機能する場合は、代わりに _ sftp _ 、および _ ssh _ (Telnetの代わりに)を使用します。

https://codex.wordpress.org/Hardening_WordPress で詳細をお読みください。

0
Frank Kottler