Drupal7.24がリリースされたのでインストールしてみたところ、サイトの状態レポートで以下のような見慣れないメッセージが出ていました。
Temporary files directory Not fully protected See http://drupal.org/SA-CORE-2013-003 for information about the recommended .htaccess file which should be added to the /tmp directory to help protect against arbitrary code execution.
とりあえず、表示されているURLにアクセスしてみると、「.htaccessを変更しろ」とのことだったので、書かれている内容を追記したらサイトにアクセスできなくなりました。
これはいかんということでしっかり内容を読んでみると、どうもルートディレクトリにある.htaccessを変更するというわけではなさそうでした。あれやこれやとやっているうちにようやく対処法がわかったので、紹介したいと思います。
「Not fully protected」が表示される原因
[環境設定] – [メディア] – [ファイルシステム]で設定した「テンポラリーディレクトリー」に設置されている.htaccessの内容が古くなっていることが原因みたいです。Drupalをアップグレードした場合は、「パブリックファイルシステムパス」や「プライベートファイルシステムパス」についても同様のメッセージが出るかと思います。
内容が古くなったのでディレクトリのセキュリティが万全ではないですよ、というメッセージですね。
対処法
対処法は非常に簡単で、「Not fully protected」のメッセージ内に書かれているディレクトリ内に、以下の内容を記述した.htaccessを設置するだけです。
※作業前に必ずバックアップを取っておきましょう。
# Turn off all options we don't need. Options None Options +FollowSymLinks # Set the catch-all handler to prevent scripts from being executed. SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 <Files *> # Override the handler again if we're run later in the evaluation list. SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 </Files> # If we know how to do it safely, disable the PHP engine entirely. <IfModule mod_php5.c> php_flag engine off </IfModule>
Drupal7.24を新規インストールした場合は、sites/default/filesに新しい.htaccessがあるのでそれをコピーすればOKです。7.24以前のバージョンからアップグレードした場合は、もともとある.htaccessの内容を書き換えましょう。
上記内容の.htaccessを各ディレクトリに設置することで、「Not fully protected」は出なくなります。
詳細については、SA-CORE-2013-003 – Drupal core – Multiple vulnerabilitiesに記載されています。
あとがき
Drupalで何かあると、日本語の情報がなかなか見つからなくて大変ですよね。少しでもDrupalユーザーのお役に立てれば幸いです。
なお、.htaccessは、内容を少しでも間違えるとサイトにアクセスできなくなってしまいます。必ずバックアップを取ってから作業するようにしましょう。
日本語のタイムリーなdrupalの報参考になります。
私の場合ですが、テンポラリーディレクトリー「/tmp」の位置を勘違いしていたため、.htaccessを更新してもエラーメッセージが消えず焦りました。
誤)druplaのインストールディクレトリ配下の「tmp」
正)OSのルートディレクトリ直下の「/tmp」
単なる勘違いですがはまりました・・。
xiyoさん、コメントありがとうございます。
それはハマりそうですね^^; でも解決できてよかったですね。
ファイルシステムの設定もインストールディレクトリからの相対パスで指定するので、テンポラリーも普通インストールディレクトリの配下って思いますよね。