halupy package
Submodules
halupy.halu module
- halupy.halu.resolveSafePath(basedir, clientpath, require_segment=None, allow_segments=None, allow_index=0)[ソース]
クライアントから受け取ったパスを、基準ディレクトリ配下に限定して解決する。
realpath で基準ディレクトリと対象パスの双方を解決したうえで、パス境界を意識した 判定(commonpath)で対象が基準ディレクトリ配下にあることを確認する。 文字列の前方一致は行わない(/app と /app_evil の誤判定を避けるため)。
- パラメータ:
basedir (str) -- 基準ディレクトリ(絶対パス)。hconf.apppath / hconf.syspath 等。
clientpath (str) -- クライアント由来のパス。絶対パスまたは基準ディレクトリからの相対パス。
require_segment (str, optional) -- 必須セグメント。指定時は基準ディレクトリからの相対パスに 当該セグメントが含まれることを確認する(例: 'DownLoad'/'UpLoad')。
allow_segments (list of str, optional) -- 許可セグメントのリスト。指定時は相対パスの allow_index 番目のセグメントが リストに含まれることを確認する(例: ['Html', 'Json'])。
allow_index (int, optional) -- allow_segments を照合する相対パス上のセグメント位置。既定は 0。 appfile({アプリ名}/{Html|Json}/...)は 1、sysfile({Html|Server}/...)は 0。
- 戻り値:
検証を通過した場合は解決済みの絶対パス。 基準ディレクトリ外・許可外セグメント・パス解決失敗の場合は None(呼び出し側で404化する)。
- 戻り値の型:
str or None