どうもこんにちは。
Web/App/UIデザイナーのサトウです。
今回は、WordPress「対応していないメソッド(MOVE/COPYなど)を使用した。」の解決方法について書いていきます。
前提として、サーバーはXserverです。
結論としては、XserverのWAF設定「コマンド対策」を一時的にOFFにして記事を更新し、そのあとすぐに「コマンド対策」をONに戻すという方法で解決しました。
記事を更新しようとしたら501エラー
先ほど、別のブログのある記事を修正して、更新しようとWordPressの「更新」ボタンをクリックしたところ、Xserverの501エラー画面が表示されました。
慌てて他の画面を確認すると、ブログ自体は正常に表示されているし、管理画面も普通に動いています。
更新しようとした記事の「更新」する操作だけが拒否されて実行されず、501エラーが出ているということのようです。
エラーはXserverのWAF設定の影響と推測
エラー画面に表示されている「対応していないメソッド(MOVE/COPYなど)を使用した。」というテキストをコピーして、Googleで検索してみると、いくつもの結果がヒットしました。
その中に、「WordPressの「501エラー」の解決策(エックスサーバー)」という記事があったので見てみます。
その記事によれば、どうやらXserverの用意してくれているセキュリティー設定の「XSS(クロスサイトスクリプティング)」に関する設定がONになっていると発生する症状らしいと書かれています。
XSS(クロスサイトスクリプティング)は、悪意あるスクリプトを含むリンクをクリックすることによりスクリプトが実行されて様々な被害を受ける攻撃のことです。
「このセキュリティー設定をOFFにすればエラーが解消する」というのはいささか不安が残る解決策ですね。
そもそも、このエラーがXSS対策の影響であるとすれば、それはつまりその記事のどこかにXSSを発生させうるリンクが含まれている可能性を示唆しています。
むしろその原因を調査して排除するほうが健全だと思います。
エラーを発生させている箇所を特定
XSS対策に引っかかってエラーが出ているとするならば、記事本文に含まれているいずれかの文字列がエラーを引き起こしているということになります。
まずは本当にそうなのか検証してみます。
記事本文を白紙にして「更新」してみる
記事本文を全文カット(command+X)して外部エディターにペーストし、WordPress側の本文が白紙になった状態で「更新」ボタンを押してみます。
これで更新できるなら、やはり本文に含まれるいずれかの文字列がエラーの原因と考えていいでしょう。
結果、本文が白紙の状態なら更新することができました。
やはり、本文に含まれるいずれかの文字列がエラーを引き起こしているようです。
では、その文字列がどれなのかを特定していきます。
本文を切り分けて更新しながら病巣を探る
外部エディターにペーストした本文を部分的に切り出し、WordPressの記事本文にペースト、更新します。
これを繰り返していき、更新時にエラーが出たら、そのときにペーストした文字列の中に病巣が含まれているというわけです。
エラーが出たら、そのときペーストした文字列をさらに分割してペースト、更新を繰り返し、病巣を絞り込みます。
病巣は外部リンクURLに含まれる「mail-」の文字列
エラーを引き起こしていたのは、外部リンクに含まれる「mail-convenient-use」の文字列でした。
さらに絞り込むと、どうやら「mail-」というふうに「mail」に「-」が付くとNGのようです。
実際、同ページの中には「mail」を単体で含むリンクは複数あり、それらはエラーを引き起こしていません。
また、「mail-convenient-use」を「ail-convenient-use」「mailconvenient-use」等に変更してみると、エラーは起こりませんでした。
エラーはXserverのWAF設定「コマンド対策」の影響と判明
当初、このエラーはXserverのWAF設定「XSS対策」の影響かと推測しましたが、調べてみるとそうではなく、同設定「コマンド対策」の影響でした。
XserverのWAF設定「コマンド対策」では下記の対策が講じられているそうです。
kill、ftp、mail、ping、ls 等コマンドに関連する文字列が含まれたアクセスを検知します。
今回調べてみた結果を見ると、「mail」はセーフで「mail-」はアウトという結論ですが、「mail」でアウトなケースもあるのでしょうか。
とはいえ、なるほど。
外部リンクのURLがNGワードではどうしようもないですね。。。
- 外部リンクのURLに判読不能な謎の文字列が含まれてしまっていた
- 記事のパーマリンクにNGワードが含まれていた
といったケースもあるようです。
同様のエラーでお困りの方は複数の原因を探ってみることをおすすめします。
XserverのWAF設定「コマンド対策」を一時的にOFFにして対応
このセキュリティー設定が本当に必要かどうか、僕は専門家ではないので調べるのに少し時間がかかりそうです。
ひとまず、完全にOFFにするという選択はしたくありません。
セキュリティー設定はONのまま、病巣となっている文字列の一部を大文字や伏字等にしてエラーを回避する方法も考えましたが、そうしてしまうとブログ閲覧者のユーザビリティーを低下させてしまいます。
エラーを引き起こしている文字列を変更できればそれが一番いいのでしょうが、それが外部リンクのURLでは、こちらとしてはどうすることもできません。
検討した結果、XserverのWAF設定「コマンド対策」を一時的にOFFにして記事を更新し、そのあとすぐに「コマンド対策」をONに戻すという方法をとることにしました。
今回ばかりは仕方ありません。
記事の更新完了後は「コマンド対策」を再度ONに
XserverのWAF設定「コマンド対策」をOFFにすると、件の記事はすんなり更新することができました。
更新後は「コマンド対策」を「ON」に戻します。
セキュリティー設定によるエラーは可能な限り根本的な解決を
何らかのセキュリティー設定の影響でエラーが出ているからといって、安易にその設定をOFFにするというのはよくありません。
万が一何かあったときに後悔するのは自分です。
可能な限り、原因を突き止めてそれを解消するのがいいと思います。
が、今回の僕のケースのように、自分ではどうにもできない部分が原因になっているケースもあります。
また、エラーを改善するためにコンテンツの価値を落としてしまっては本末転倒です。
そういった場合には、応急処置として一旦セキュリティー設定をOFFにし、用事が済んだらすぐONに戻すといった対応も選択肢に入れていいでしょう。
さて、今回は、WordPress「対応していないメソッド(MOVE/COPYなど)を使用した。」の解決方法について書いてみました。
いかがだったでしょうか?
読んでくださったあなたの参考に少しでもなれば嬉しいです。
それではまた次回。