[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[port139:01532] ASP 関連の拡張子マッピングについて



佐名木という者です。

ASP 関連の拡張子、特に .inc(インクルード・ファイル)と .asa(global.asa で使用)
についてです。

皆さんは、これらの拡張子を拡張子マッピングとして登録されていると思います。
(...私の勘違いかな...)
確かに、拡張子マッピングに登録する事で、ソースコードの漏洩問題から保護する
事がある程度(IIS のセキュリティホールは除く)できます。

もう一つの方法として、通常は、ASP などのスクリプト実行権のあるディレクトリに対して、
「読み取り権限を」付与しない。
という方法もあります。

拡張子マッピング登録によって、インクルード・ファイル(.inc)のソースコード漏洩は、
防げますが、一方でインクルードファイルは実行されてしまいます。
確かに、インクルード・ファイルの中身が関数集(サブルーーチン集)であれば、問題ありません
が、
ASP のヘッダ処理、フッタ処理を一箇所にまとめる目的のインクルード・ファイルもあると思い
ま
す。
(確かに、ヘッダ処理、フッタ処理は、サブルーチン化すればよいのですが、そうでない場合もあ
る
のかな...と)

という事で、
「読み取り権限」を付与しない。という事が可能な場合
(画像や HTML ファイルが別ディレクトリに配置されており、ASP 用のディレクトリにはスクリプ
ト
しか配置されていない)
は、.asa や .inc を拡張子マッピングしない。という方法もアリかなぁ。と思います。
(当然「読み取り権限」を付与すると大変な事になります)

------------------------
以下のような include.inc を全ての ASP ファイルはファイルの先頭にインクルードする事で、
前処理を実現しているような場合が考えられる。
include.inc の中身は、サブルーチンではないので、
拡張子マッピングで登録される場合、リモートから直接呼び出されると、実行される。
(例の場合はたいした処理ではないけど)

include.inc
<%
 Option Explicit
        REM ASP 処理の前処理として、自作セッションIDが正しいかどうかの処理
 Session("mySid") = Request.QueryString("mySid")
 If Not Session("mySid") = Session("mySid.bak") Then
        REM 自作セッションIDが改変されていたら、エラーページへリダイレクトする
  Response.Redirect("error.asp")
 End If
%>

DispUserData.asp
<!--#INCLUDE FILE="include.asp"-->
<%
  .... ここは、自作セッションIDが正しいときの処理 
%>
------------------------

以上、よろしくお願いします

 -----------------------------------------------------
 佐名木 智貴(Tomoki Sanaki) 
    E-mail=active@xxxxxxxxxxxxxxxxxx
 PGP FingerPrint 
 = 34E5 2A31 45C8 2CB5 3CED  0B46 F328 A402 7182 DCC6