ほとんどのWordPressテーマのheader.php
テンプレートに含まれている、wp_head
と呼ばれる重要なフックがあります。 この本質的なフックは、WordPressの機能があなたのwebページの<head>
領域のブラウザにコンテンツを出力することを可能にします1。
たとえば、新しいバージョンのWordPressでは、wp_head()
を使用すると、WordPressは次の3行をテーマの<head>
に出力できます:
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://digwp.com/xmlrpc.php?rsd" /><link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://digwp.com/wp-includes/wlwmanifest.xml" /> <link rel='index' title='Digging into WordPress' href='https://digwp.com/' /><meta name="generator" content="WordPress 2.8" />
ご覧のように、フィードリンク、XML-RPCとWLWリンク、および他のいくつかの項目を含む多くのものが追加されています。 これらの包含物のすべてについて議論することはたくさんありますが、ここでは主にxmlrpc.php
ファイルへのリンクに関係しています。 WordPressには、リモートアプリケーションがWordPressと通信して対話することを可能にするXML-RPCインターフェイス用のこのリンクが含まれています。
xmlrpcとは何ですか。phpは行いますか? 私はそれを必要としますか?
WordPressのXML-RPCに関するドキュメントはかなり薄いですが、xmlrpc.php
がどのように機能するかについては、ファイル自体のコードをステップスルーすることで部分的に理解することができます。 心配しないでください、私たちはここであなたを退屈させるつもりはありませんが、xmlrpc.php
は次のようなものに必要であると言えば十分です:
- TextMate、Flock、および他のクライアントを使用してあなたのブログに直接投稿
- Eudora、Thunderbird、および他のアプリを使用してあなたのブログに直接投稿
- 他のブログからあなたのサイトにピングバックやトラックバックを受け取る
誰もがWordPressで利用可能なリモート投稿機能を使用しているわけではありませんが、多くのブログは間違いなくピングバックおよびトラックバック機能のためのxml-rpcプロトコル。
はxmlrpcを実行します。phpファイルは、セキュリティ上のリスクを提起しますか?
あなたの中には、WordPress2.1.2の古き良き時代にxmlrpc.php
スクリプトに関連するセキュリティリスクを覚えている人もいます。:
WordPressは、リモート認証された攻撃者がxmlrpcスクリプトによる不適切な検証によって引き起こされるセキュリティ制限を回避することを可能にす 貢献者権限を持つリモートの攻撃者がこの脆弱性を悪用してWebサイトに投稿を公開する可能性があります。
この脆弱性はバージョン2.1.3では速やかに排除されましたが、その後すぐに(バージョン2.3では)削除されました。1)XML-RPC実装が情報を漏洩することが判明したときに、別のセキュリティ問題が発見されました。
これはバージョン2.3.2で修正されましたが、XML-RPCプロトコルに関連するセキュリティ上の懸念により、最終的にWordPressの開発者はバージョン2.6でデフォル xmlrpc.php
ファイルはまだドキュメント<head>
に含まれています(おそらくピングバックとトラックバックのために)が、リモートアクセス機能は明示的に有効になる2までは動作しません。
xmlrpcの詳細については、生鮮プレスでこれらの関連記事をチェックしてください。phpファイルとサイトのセキュリティ:
- WordPressのピングバックの脆弱性の保護
- WordPressのブルートフォース増幅攻撃からの保護
サイトのxmlrpcのセキュリティヒント。phpファイル
この記事の執筆時点では、WordPressのXML-RPCプロトコルに関連する既知の脆弱性はありません。 たとえそうであっても、xmlrpc.php
スクリプトには過去にセキュリティ上の問題があり、現在も将来も新しい問題が存在する可能性があります。 ちょうど安全な側にあるために、ここではあなたのブログのための最大のセキュリティを確保するためのいくつかの異なる戦略とヒン
必要がない場合は削除してください
潜在的なセキュリティ脆弱性を排除する最も安全な方法は、問題のスクリプトを削除するだけです。 リモート投稿、ピングバック、トラックバックを必要としない場合は、サーバーからxmlrpc.php
ファイルを削除するのが最も簡単です。 実際に削除するのではなく、推測できない名前を変更することができます。 いずれにしても、スクリプトが攻撃者に利用できない場合は、悪用が困難になります。
xmlrpc.php
ファイルを削除(または名前を変更)する場合は、次のセクションで説明する関数を実装して、404エラーの雪崩を回避する必要があります(詳細についてはこのコメントを参照してください)。xmlrpcへのリンクを削除します。phpとwlwmanifest。xml
または、リモートアクセスやピングバック機能を必要としない場合は、サーバーからコアファイルを削除するのではなく、関連するヘッダーリンクを削 これは、アクティブなテーマのfunctions.php
ファイルに次の関数を配置することで簡単に実現できます:
function removeHeadLinks() {remove_action('wp_head', 'rsd_link');remove_action('wp_head', 'wlwmanifest_link');}add_action('init', 'removeHeadLinks');
これにより、これら2つのファイルがヘッダー内にリンクされるのを防ぎますが、ファイル自体はサーバー上で利用可能なままになります。 このメソッドを実装する場合は、リモート公開のデフォルトの無効化が有効であることを確実に確認してくださ
リモート公開機能を無効にする
リモート公開しないが、ピングバックやトラックバックを受け取りたい場合は、WordPressのアドバイスを受けて、リモートアクセス機能をデフォルトで無効にしたままにしておきます。 単独でこのステップはあなたのblogの保証の下できつく締まるのを助ける途方もない方法のようにようである。 ファイルはサーバー上で利用可能になりますが、攻撃者はそれをはるかに少なくすることができます。
悪意のあるxmlrpcを防止します。phpディレクトリスキャン
サーバーへのアクセスとエラーログを賢明に監視している人にとっては、悪意のあるxmlrpc.php
ディレクトリスキャンの量が最近急増している可能性があります。 何らかの理由で、悪者は突然xmlrpc.php
ファイルに非常に興味を持ち、ボットがそれらを見つけようとしているすべてのディレクトリをスキャンしています。 私は最近、この種の活動のトンを見てきました:
http://domain.tld/2009/xmlrpc.phphttp://domain.tld/2009/06/xmlrpc.phphttp://domain.tld/2009/06/01/xmlrpc.phphttp://domain.tld/2009/06/01/permalink/xmlrpc.phphttp://domain.tld/2009/06/02/permalink/xmlrpc.phphttp://domain.tld/2009/06/03/permalink/xmlrpc.php...
攻撃者がターゲットを見つけたかどうかにかかわらず、この種の動作はシステムリソースを浪費し、帯域幅を奪い、サイトが最大容量で動作するのを防 したがって、この悪意のある動作があなたのサイトに損傷を与えるのを防ぐために、私は次のHTAccessソリューションを考案しました:
<IfModule mod_alias.c>RedirectMatch 301 /(.*)/xmlrpc\.php$ http://domain.tld/xmlrpc.php</IfModule>
この単純なディレクティブは、サイトのWebアクセス可能なルートHTAccessファイルに配置すると、ブログのxmlrpc.php
ファイルへのすべてのリクエストを実際のファイルにリダイレクトします。 私は生鮮プレスで今数週間のためにこの方法を使用していると、それのために誤った方向の要求の数千を排除しています。
xmlrpcのままにします。phpファイルが、それへのアクセスを防ぐ
最後に、サーバー上の場所にファイルを残すが、それへのアクセスを防ぐことを可能にする簡単な方法です。 あなたがスクリプトを必要とせず、それを安全に保つことについてできるだけ怠惰にしたい場合に最適です(メンテナンスは考えていません)。 ルートHTAccessファイルに次のコードを貼り付けて、それを実行するだけです:
<IfModule mod_alias.c>RedirectMatch 403 /(.*)/xmlrpc\.php$</IfModule>
- 1 または
wp_head()
フックがある任意の場所。 - 2この機能を有効にするには、設定▸書き込み▸リモート公開
に移動します。