CGI スクリプトのバージョンは表示するべきか

少し前に「サーバのバージョンは表示するべきか」という話題が流行っていましたが、その話題は思っていたよりずっと早く収束してしまいました。

この話題が比較的アッサリ終わった理由は、一つには「バージョンを表示するか否かよりも、ちゃんとアップデートする事の方が遥かに大事」という事ではないでしょうか。アップデートする事に比べれば、バージョンの表示非表示など どちらも些細なメリット / デメリットしか持たず、個人の好みレベルの問題に過ぎない、と。


さて本題。自作 CGI スクリプトを配布しているサイトは多いですが、そうした CGI スクリプトのバージョン情報は表示するべきでしょうか?

…一見するとサーバのバージョン問題と同じ構造に思えますが、サーバの場合と違い、バージョンを表示するかどうか決める人間(= CGI スクリプト製作者)と アップデートを適用する人間(=設置者)が異なるため、「そんな事よりもちゃんとアップデートする方が…」で済ませる事ができません。

また、サーバのバージョン情報は HTTP ヘッダやエラーページなど 検索エンジンに引っかからない場所に現れるのに対し、 CGI スクリプトのバージョン情報は 検索エンジンに引っかかり得るという違いもあるため、「表示するか否か」の二択ではなく、以下の三択になります。

  • バージョンを表示しない。
  • バージョンを表示はするが、検索エンジンに引っかからない方法で表示する。
    • 画像にするとか、 CSS や JS で生成するとか、別ページにしてロボット避けを入れるとか。
  • バージョンを検索エンジンに引っかかるように表示する。

とりあえず、私の思いつく限り利点・欠点を挙げてみます。

人間に見える位置に表示する場合

利点
  • セキュリティに気を使う利用者が、脆弱性のあるバージョンを使っているページの利用を避けられる。
  • そのページの利用者が、脆弱性のあるバージョンのままアップデートしていない設置者に対し、アップデートを促せる。
欠点
  • 攻撃者が、脆弱なバージョンか否かをすぐに判断できる。
    • とはいえ、バージョンが判らなくても とりあえず攻撃してみるって輩も当然いるわけで。特に削除機能のある掲示板などの場合、失敗しても 削除すれば証拠を消してしまえますし。

検索エンジンに引っかかるように表示する場合

利点
  • 善意の人間が、脆弱性のあるバージョンのままアップデートせずに使っているページを探し出し、設置者にアップデートを促せる。
    • そんな人いるのだろうか。
      • あ、でも「善意の人間」ではなく「製作者」が、ってパターンならありえますかね。そんな事している製作者 見た事無いですけど。
欠点
  • 攻撃者が、脆弱なバージョンのままアップデートせずに使っているページを簡単に探し出し、攻撃できる。

私の結論

…そんなわけで、「バージョンを表示はするが、検索エンジンに引っかからない方法で表示」というのが最適、ただし「検索エンジンに引っかかるように表示」との差は 個人の好みレベル、という感じではないかと思うわけですが、どうでしょう。


余談

古いバージョンの CGI スクリプトを使い続けているサイトを結構見かけます。製作者のサイトを見るのは設置する際だけで、その後はまったく見ないという人が多いのでしょう。

デスクトップアプリケーションでは、アップデートが無いか自動的に確認して アップデートを促す(或いはアップデートも自動的にやってくれる)ものが多くありますが、それと同じような仕組みを こうした CGI スクリプトにも持たせてやった方がいいんじゃないでしょうか。

やり方は簡単、例えば CGI スクリプト中に 製作者のサーバ上にある画像を表示するタグを埋め込んでおく。そして最初は 1x1透過画像を置いておき、バージョンアップしたら画像を「新しいバージョンが出ています。至急アップデートして下さい。」というものに置き換えるだけ。

…ただこの方法では、転送量がひどい事になり得るとか、外部からの埋め込みリンクを弾く設定にしているサーバ(無料レンタルサーバの多くはそうですね。)しか持っていないと行えないなどの欠点があるわけで。もっといい方法は無いものか。