CGI スクリプトのバージョンは表示するべきか
少し前に「サーバのバージョンは表示するべきか」という話題が流行っていましたが、その話題は思っていたよりずっと早く収束してしまいました。
この話題が比較的アッサリ終わった理由は、一つには「バージョンを表示するか否かよりも、ちゃんとアップデートする事の方が遥かに大事」という事ではないでしょうか。アップデートする事に比べれば、バージョンの表示非表示など どちらも些細なメリット / デメリットしか持たず、個人の好みレベルの問題に過ぎない、と。
さて本題。自作 CGI スクリプトを配布しているサイトは多いですが、そうした CGI スクリプトのバージョン情報は表示するべきでしょうか?
…一見するとサーバのバージョン問題と同じ構造に思えますが、サーバの場合と違い、バージョンを表示するかどうか決める人間(= CGI スクリプト製作者)と アップデートを適用する人間(=設置者)が異なるため、「そんな事よりもちゃんとアップデートする方が…」で済ませる事ができません。
また、サーバのバージョン情報は HTTP ヘッダやエラーページなど 検索エンジンに引っかからない場所に現れるのに対し、 CGI スクリプトのバージョン情報は 検索エンジンに引っかかり得るという違いもあるため、「表示するか否か」の二択ではなく、以下の三択になります。
- バージョンを表示しない。
- バージョンを表示はするが、検索エンジンに引っかからない方法で表示する。
- 画像にするとか、 CSS や JS で生成するとか、別ページにしてロボット避けを入れるとか。
- バージョンを検索エンジンに引っかかるように表示する。
とりあえず、私の思いつく限り利点・欠点を挙げてみます。
人間に見える位置に表示する場合
利点
欠点
- 攻撃者が、脆弱なバージョンか否かをすぐに判断できる。
- とはいえ、バージョンが判らなくても とりあえず攻撃してみるって輩も当然いるわけで。特に削除機能のある掲示板などの場合、失敗しても 削除すれば証拠を消してしまえますし。
検索エンジンに引っかかるように表示する場合
利点
- 善意の人間が、脆弱性のあるバージョンのままアップデートせずに使っているページを探し出し、設置者にアップデートを促せる。
- そんな人いるのだろうか。
- あ、でも「善意の人間」ではなく「製作者」が、ってパターンならありえますかね。そんな事している製作者 見た事無いですけど。
- そんな人いるのだろうか。
欠点
- 攻撃者が、脆弱なバージョンのままアップデートせずに使っているページを簡単に探し出し、攻撃できる。
私の結論
…そんなわけで、「バージョンを表示はするが、検索エンジンに引っかからない方法で表示」というのが最適、ただし「検索エンジンに引っかかるように表示」との差は 個人の好みレベル、という感じではないかと思うわけですが、どうでしょう。
余談
古いバージョンの CGI スクリプトを使い続けているサイトを結構見かけます。製作者のサイトを見るのは設置する際だけで、その後はまったく見ないという人が多いのでしょう。
デスクトップアプリケーションでは、アップデートが無いか自動的に確認して アップデートを促す(或いはアップデートも自動的にやってくれる)ものが多くありますが、それと同じような仕組みを こうした CGI スクリプトにも持たせてやった方がいいんじゃないでしょうか。
やり方は簡単、例えば CGI スクリプト中に 製作者のサーバ上にある画像を表示するタグを埋め込んでおく。そして最初は 1x1透過画像を置いておき、バージョンアップしたら画像を「新しいバージョンが出ています。至急アップデートして下さい。」というものに置き換えるだけ。
…ただこの方法では、転送量がひどい事になり得るとか、外部からの埋め込みリンクを弾く設定にしているサーバ(無料レンタルサーバの多くはそうですね。)しか持っていないと行えないなどの欠点があるわけで。もっといい方法は無いものか。