tkapplication_cgi プログラム仕様
CGIアプリケーションの基本機能を提供するモジュール。
このモジュールは、tkApplication を継承し、CGI環境でのHTTPヘッダ出力、 フォームデータの取得、パスの検証などの機能を追加した tkApplication_CGI クラスを提供します。
関連リンク: tkapplication_cgi.py 技術ドキュメント
- class tklib.tkapplication_cgi.tkApplication_CGI(**args)[ソース]
ベースクラス:
tkApplicationCGI環境で動作するアプリケーションの基底クラス。
tkApplication を継承し、CGI固有の処理(HTTPヘッダの出力、GET/POSTデータの解析、 フォームデータの取得、パスのセキュリティ検証など)を提供します。
- get_args()[ソース]
クエリ文字列から引数を辞書形式で取得する。
環境変数 QUERY_STRING を解析し、キーと値のペアを辞書として返します。 このメソッドはURLエンコードされた値をデコードしません。
- 戻り値:
dict: クエリ文字列の引数を格納した辞書。
- get_cgi_mode()[ソース]
現在のCGIリクエストメソッド(GETまたはPOST)を文字列で返す。
環境変数 REQUEST_METHOD の値に基づいて 'get' または 'post' を返します。 それ以外の場合は空文字列を返します。
- 戻り値:
str: 'get', 'post', または空文字列。
- getfirst(key, defval=None)[ソース]
フォームデータから指定されたキーの最初の値を取得する。
cgi.FieldStorage.getfirst() メソッドをラップし、フォームデータから`key`に対応する最初の値を取得します。 キーが存在しない場合は`defval`を返します。複数の値がある場合でも最初の1つのみを返します。
- パラメータ:
key -- str: 取得したいフォームデータのキー。
defval -- Any or None: キーが見つからなかった場合に返すデフォルト値。デフォルトはNone。
- 戻り値:
Any: 指定されたキーの最初の値、またはデフォルト値。
- getvalue(key, defval=None)[ソース]
フォームデータから指定されたキーの値を取得する。
cgi.FieldStorage.getvalue() メソッドをラップし、フォームデータから`key`に対応する値を取得します。 キーが存在しない場合は`defval`を返します。
- パラメータ:
key -- str: 取得したいフォームデータのキー。
defval -- Any or None: キーが見つからなかった場合に返すデフォルト値。デフォルトはNone。
- 戻り値:
Any: 指定されたキーの値、またはデフォルト値。
- init_html(charset='utf-8', lang='ja', extra_headers=None, header_only=False)[ソース]
HTMLページの初期ヘッダを出力する。
"Content-Type: text/html" ヘッダと基本的なHTML構造 (<!DOCTYPE html>, <html>, <head>, <body>)を出力します。 既に初期化されている場合は何もしません。
- パラメータ:
charset -- str: HTMLページの文字エンコーディング。デフォルトは 'utf-8'。
lang -- str: HTMLページの言語。デフォルトは 'ja'。
extra_headers -- str or None: head タグ内に挿入する追加のヘッダ文字列。
header_only -- bool: body タグを出力せず、ヘッダ部分のみを出力するかどうか。
- 戻り値:
None
- is_get()[ソース]
現在のリクエストがGETメソッドであるかを判定する。
環境変数 REQUEST_METHOD が "GET" である場合にTrueを返します。
- 戻り値:
bool: リクエストがGETメソッドであればTrue、そうでなければFalse。
- is_post()[ソース]
現在のリクエストがPOSTメソッドであるかを判定する。
環境変数 REQUEST_METHOD が "POST" である場合にTrueを返します。
- 戻り値:
bool: リクエストがPOSTメソッドであればTrue、そうでなければFalse。
- validate_path(path, keys='all')[ソース]
提供されたパス文字列がセキュリティ上の問題を含んでいないか検証する。
トップディレクトリへのアクセス(/, `, `:`, `:/, //)、 上位ディレクトリへのアクセス(..)、不正な文字(<, >, |)が 含まれていないかをチェックします。keys 引数で検証するタイプを指定できます。
- パラメータ:
path -- str: 検証対象のパス文字列。
keys -- str or list: 検証するセキュリティチェックの種類。 'all' (全て), 'top_dir' (トップディレクトリへのアクセス), 'upper_dir' (上位ディレクトリへのアクセス), 'invalid_char' (不正な文字) のいずれか、またはそれらのリスト。
- 戻り値:
str: 問題がなければ空文字列。問題がある場合はエラーメッセージ文字列。