• ベストアンサー

SSIの使用

SSIは最近は一般的に使用するものでしょうか。 セキュリティの観点から、使用を控えるべきでしょうか。 個人的には、使用したことによるメリットの方が大きいように思います。 補足 使用する目的としては、 共通のヘッダー要素など、変更が入った時に1ファイルを修正してすべてのページに反映する ことを主としています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

オーサリングソフトのテンプレート機能は、すべてのHTMLファイルにあらかじめテキストエディタでコピーしておく作業を、オーサリングソフトが肩代わりしてくれる、という物です。 条件分岐などもなく、単純に他のファイルを取り込んで表示する、 つまり最も一般的に行われている<!--#include file="xxx.txt" -->または<!--#include virtual="xxx.txt" -->だけであれば、 SSIでもPHPでも、オーサリングソフトのテンプレートでも良いと思いますし、 テンプレート機能があるオーサリングソフトを持っていなければ、SSIでの管理のしやすさのメリットは大きいと思います。 ただNo.2にも書いたとおり、PerlやPHPなら、管理面はSSIもCGIも変わりません。 さらにCGIならSSIで出来ないことでも出来るようになるメリットがあり、わざわざSSIを勉強する必要はありません。 特にPHPの文法はSSIに似たところもありますし、includeだけなら簡単でしょう。 SSIだけでフォームの内容を取得して、表示する内容を変えるくらいのことはできます。 http://home.wi-wi.jp/scripts/log/2008070901/index.html アルバムサイトなどのページ移動なら、これで十分だと思いますが、 むしろもっと高機能な物を作れるPerlやPHPで作りたいと思うようになるかも知れません。 適材適所という言葉も当てはまりますが、なぜSSIが適材なのか、なぜCGIが適材なのかという理由がわからないと、使い分けは難しいと思います。 CGIなどを使うにはアクセス属性なども関係してきますが、そういうのを理解できるなら、SSIを勉強する必要性はないかも知れません。 一般的に使われないのは、CGIで代用できるからではないでしょうか。

jun860107
質問者

補足

たびたびご回答ありがとうございます。 PHPやPerlを使うと、 ファイル名・アドレスが.php .pl .cgiとなってしまうと思います。 ファイル名は.htmlのままで行きたいです。 SSIでやろうとしていることは、まさに <!--#include file="xxx.txt" -->または<!--#include virtual="xxx.txt" --> だけです。 変な話、たとえば、いまどきSSI!?という風潮であれば、やめようと思いますし、そうでなければ、SSIを使用したいです。

その他の回答 (5)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.5

#4です。 説明不足失礼しました。cppの事は私の勘違いもあり忘れてください。 あと、「PHPを使用しない静的なサイト」とお書きですが、SSIを使った時点で(Xbithackを使わない限り)「動的なサイト」です。 SSIでincludeさせると、(Xbithackを使わない場合)ブラウザから見ると動的ページになるので、ユーザーやネットに優しくない。表示のたびに毎回転送が発生するので。 ↓ includeをあらかじめ行って、SSIを使わない静的なファイルにすれば、ブラウザでキャッシュできるので、ユーザーやネットに優しい。 ↓ includeをあらかじめ行っておくのは、プログラムで処理するか、手動でやるか Dreamweaverの機能は知りませんが、include相当の機能があるなら使えばいいし、無くて手動で各ページに共通部を組み込むしかないなら、やっぱりSSIでincludeするんでしょうかね。個人のサイトならキャッシュされないことはあまり気にしなくていいと思います。 何度か書いているXbithackというのは、SSIを使っていても静的なページに見せる方法ですが、ちょっと使いこなしが難しいかもしれません。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

セキュリティの観点では特に問題ないと思いますが、Xbithack fullを指定した上で実行ビットを設定しないと静的コンテンツにもかかわらずLast-Modified:ヘッダを出力されず、動的コンテンツと見なされてブラウザ側でキャッシュされませんので、再表示が遅くなります。 単に、 >共通のヘッダー要素など、変更が入った時に1ファイルを修正してすべてのページに反映する と言うことであれば、開発環境からテスト環境ないし実運用環境にHTMLページを移行するときに、includeの解決を行って移行するのがいいと思います。 例えば、<?php include "common-header.html"; ?> と書いて、コピーコマンドの代わりに php を通すとか、#include "common-header.html" と書いて、cpp を通すとか。 開発環境とテスト環境を共用するなら、実運用環境移行用には自分で、<!--#include file="common-header.html" --> を処理するスクリプトを書いた方がいいかな?

jun860107
質問者

補足

ご回答ありがとうございます。 想定しているサイトはPHPは使用しない、静的なサイトになります。 そのため、includeの使用を前提としない解決方法があれば、ご教授いただきたいです。 素人で申し訳ないですが、 cppとはC++のことでしょうか。 PHPやC++やCを使わずに作業を行いたいです。

  • warez
  • ベストアンサー率57% (29/50)
回答No.3

入力チェックは外部からの値を SSI 命令に渡している場合には必要になると思います。フォーム以外には環境変数やクッキーなどでしょうか。SSI 命令の引数値が定数なら問題ないと思います。

jun860107
質問者

お礼

ご回答ありがとうございます。 参考になりました。

回答No.2

SSIのセキュリティーはNoExec環境ならCGIと全く同じ (SSIからCGIアプリケーションを呼び出したときに限る。SSIコマンドだけの場合は、せいぜい環境変数を表示することしかできないと思います。) execが使える環境では、telnetでログインしたときとほぼ同じです。 PerlやPHPを知っていれば、SSIの知識が無くてもPerlやPHPで同じことができますから、 あえてSSIを使う必要性は無いかも知れません。 私は負荷の関係でCGIよりもSSIを使うことの方が多いですね。 SSIの負荷が高いと言われる原因は、SSIコマンドが含まれないHTMLファイルもSSIを実行しようとするからです。 標準モジュールやサーバーソフトウェアの組み込みで実行されるSSIは、CGIよりも負荷が小さいですし、 オプションで使用するmod_perl、mod_php(モジュール版PHP)よりも負荷が小さくと思います。 (応答速度のベンチマークでは同程度にしかなりませんでしたが。 メモリ消費量は比較していません。) > phpは使わない、静的なサイトだと、 > 上記の目的の場合、SSIが最適という認識でよいのでしょうか。 SSIは動的なページを作るための技術ですので、 静的なサイト(ページ)であれば、SSIも使わない方が良いと思います。

参考URL:
http://httpd.apache.org/docs/2.0/howto/ssi.html
jun860107
質問者

補足

ご回答ありがとうございます。 > SSIは動的なページを作るための技術ですので、 > 静的なサイト(ページ)であれば、SSIも使わない方が良いと思います。 共通のヘッダーやフッターを使うときは、 各ページに書くのが最善ということでしょうか。 (DreamweaverのTempleteやLibraryを使う)

  • warez
  • ベストアンサー率57% (29/50)
回答No.1

個人的には SSI よりも php のインクルードなどを使うことの方が多くなっていますが、それでもたまに使いますね。 セキュリティの面ですが、サーバで動くプログラムと考え、外部からの値の入力チェックなどを行えば「特に危険」ということはないと思います。

jun860107
質問者

補足

ご回答ありがとうございます。 phpは使わない、静的なサイトだと、 上記の目的の場合、SSIが最適という認識でよいのでしょうか。 SSI内では、フォーム項目(<input>,<textarea>など)を使わなくても、外部からの値の入力チェックはしないといけないのでしょうか。 また、その方法をご存じであれば、教えていただけますでしょうか。

関連するQ&A