SSI
はおろか、独自の CGI
さえも許可しない場合が常識化しています。その最大の理由がセキュリティに関係しています。SSI
や CGI
は、サーバに負担をかけます。しかし、実際には不用意なプログラムによるサーバのダウンや情報の漏洩です。SSI
では、UNIX
のコマンド処理が可能なため、セキュリティの見地から、使わせたくないことに多少は理解できます。SSI
を使うことで、サーバのセキュリティにはどのような影響があるのでしょうか?CGI
プログラムを許可するかどうかという基本的に同じ問題に過ぎません。CGI
プログラムに対して設けているのと同じ制約を置くとすれば、特に新たなリスクが発生してくるということはありません。SSI
を許可しても、execコマンドは使えないようにしているサーバも少なくありません。そのような制約をするのは、execコマンドが CGIプログラムよりも多くのことができると判断しているからですが、実際はそんなことはありません。Perl
で書く CGI
プログラムの中でできてしまうことは、かなりたくさんあり、SSI
よりもはるかに多いのです。SSI
によってできることは、ユーザがボタンをクリックしなくてもプログラムを起動できるようにすることだけです。CGI
プログラムのリンクを貼るだけでも、CGI
プログラムを起動できるわけですから、それとたいして違うわけではありません。その意味では、サーバ側で execコマンドが使えないというのは、矛盾があります。SSI
は、CGI
プログラムと同じ程度のリスクしか与えていないことです。ですから、サーバに対して CGI
プログラムを許可するのなら、SSI
のすべての機能を使わせるべきと考えます。ただし、サーバの負荷が過大になるとするのなら、1つの手段として SSI
を使えないようにしておくほうが安心ともいえるでしょう。SSI
解析の負担が生じたときに、どのような対策を講じるべきかを考えなければならないでしょう。CGI
プログラムを見抜くことは至難のことです。私は頻繁に外国のサイトを閲覧します。特に、企業サイトではスパイウェアをインストールしようとしています。それを裏で行っているのが SSI
です。HTML
ソースを見ても、SSI
が動いているのは分からないのです。SSI
は、プログラムの結果を表示させるため、ソースには現れない性質を持っています。唯一、Webブラウザの URL
欄に表示されるファイルの拡張子が「.shtml」だけが、SSI
の動作を裏付けています。SSI
を実行できるサーバもあります。