この記事は会員限定です。会員登録すると全てご覧いただけます。
ApacheでSSI(Server Side Include)を利用する際、場合によっては実行できる内容をカスタマイズしたいことがある。SSIすべてを許可すると、次のようなものがすべて実行されるからだ。
All | MultiViewsを除いた以下のようなすべてが利用可能 |
---|---|
Indexes | インデックス表示を有効にする |
Includes | SSIを有効にする |
IncludesNoExec | SSIを有効にするが、EXEC命令(CGIプログラムを実行する命令)は無効にする |
FollowSymLinks | シンボリック先へのアクセスも許可する |
FollowSymLinksIfOwnerMatch | シンボリック先のアクセスはオーナー権限が一致しないと許可しない |
ExecCGI | CGIスクリプトの実行を許可する |
MultiViews | 言語ネゴシエーション機能を有効にする(参考Tips:「ApacheのMultiViews機能ってなに?」) |
SSI(ディレクトリ)指定で使用されるオプション |
上記のオプション(パラメータ)は、次のようにApacheの設定ファイル「httpd.conf」内で使用される(以下は、Red Hat Linux 7.xなどのRPMパッケージでインストールしたディレクトリ構成)。
<Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/html> Options All AllowOverride None </Directory> <Directory /var/www/cgi-bin> Options None AllowOverride None </Directory>
上記の中で、Directoryに続くディレクトリ指定が特定の個所に実行権を定義している個所だ。「/」はhttpで公開するディレクトリ下すべて、「/var/www/html」は通常htmlファイルや画像ファイルなどを置くディレクトリ下、「/var/www/cgi-bin」はCGI実行を許すディレクトリ下といった具合だ。
Optionsに続く指定は、上記リストで解説をした各オプションに相当する。許可をしたいものだけを記述すればよいわけだ。例えば次のように指定した場合、
Options FollowSymlinks Includes
「FollowSymlinks」「Includes」が有効になり「ExecCGI」は無効となる。代表的なオプションのそれぞれの具体的な許可内容も見ていこう。
Optionsに「Includes」を記述した場合には、次の指定が有効になる。
<!--#exec cmd="..."--> <!--#exec cgi="..."--> <!--#include file="..."-->
Optionsに「IncludesNoExec」を記述した場合には、次のようになる。
<!--#include file="..."-->
は有効になるが、
<!--#exec cmd="..."--> <!--#exec cgi="..."-->
といったプログラム実行(exec)は制限される。htmlファイル内に他のファイルをincludeしたいものの、プログラムの実行(表示結果を取り込まない)を禁止したいといった場合に指定すればよいだろう。
このオプションは、シンボリックリンクを有効(許可)にするかどうかである。シンボリックリンク自体についてはほかのTipsを参考にしてほしい。FollowSymLinksオプションが指定された場合、ディレクトリ下にリンクが存在すると、先へたどることができるようになるのだ。
ただし、万が一自分が把握してないシンボリックリンクがあった場合には、情報漏洩(ろうえい)に結びついてしまう危険性がある。このため、ディレクトリ下すべてのファイルを把握している個所のみを指定しよう。
Copyright © ITmedia, Inc. All Rights Reserved.