CGI FORM処理 チェッカー(PHP)
※※※ 『CGI FORM処理 チェッカー 説明』のこのページは作成中 ※※※
CGIを作成していて
クロスサイトスクリプティング(略称はXSS)対策の
エスケープ(サニタイズ)処理の確認って、面倒であるし抜けがあるよね。
そこで、こんな、スクリプト(CGI)をPHPで作成した。
FORMタグあるページを選択(登録)して、チェックをスタートすると
このスクリプト(チェッカー)が、INPUTタグ対して"<s>'<s>・・・・を入れて
検査対象のCGIを実行(SUBMIT)すると、
生の"<s>'<s>を吐き出すのか
"<s>'<s>とエスケープ(サニタイズ)処理して吐き出すのか
%22%3Cs%3E%27%3Cs%3Eを吐き出すのか
この関係の文字を吐き出さない(エラー表示画面になってるとか)
を判定します。
このスクリプト群は、テスト用サーバー(ローカル・イントラ)を想定しています。
このスクリプト群は、想定外のデータをPOSTし、CGIが対応できているかを確認するチェッカーです。
そのためCGIが想定外のデータを書き込み、最悪データが破損する場合があります。
クロスサイトスクリプティング(略称はXSS)対策
XSSチェッカーのつもりである。
{msg.comment}
構成
chk.zip には、5個のファイルがあります。
1.chk_html_inp.php 本体1
2.chk_post.php 本体2
3.chk_setting.php 設定ファイル
4.chk_utl.php 共通
5.html_chk.php オプション(html5構文チェック)
実行時に、生成されるファイルがあります。
chk_html_inp.txt 本体1のデータファイル
chk_html_inp_postdata_url.txt 本体2の主要データファイル、本体1はデータを追加
chk_setting.txt 本体1 本体2 設定ファイル
chk_html_inp_action.txt
chk_html_inp_okng.txt
chk_post_cookie.dat
chk_post_tmp.htm 本体2(chk_post.php)のiframeで表示するファイル
設定
設定ファイル chk_setting.php
必ず、設定してください。
$g_chk_urls = array(
'www.example.jp' => '/home/my_name/public_html', // 最後に/はつけない
'www1.example.jp' => '/home/my_name/public_html/www1.example.jp', // 最後に/はつけない
);
URLに対するパス位置
オプション(html5構文チェック)が、不要な場合、html_chk.phpを削除してください。
実行 使用方法
スクリプト実行前にかならず、注意を読んでから実行してください。
実行するスクリプトは、本体1(chk_html_inp.php)です。
まずチェックするfromがあるページを登録する。
1.サーバーを選択
2.ページを選択すると登録されます。
chklist から、ページを選択するとチェック行われます。
診断
ダブルクート・シングルクォート[<][>]及び
タブ(0x09) CR(0x0d) LF(0x0a) HT(0x0b) 0x7f
が、変換しているかどうか
1.判定OK
2.判定NG
3.判定不可
すべてのページチェックするには
chk_html_inp.php?mode=auto
を、数回実行することで可能です。
通常、タブ(0x09) HT(0x0b) 0x7f等は、ブラウザの画面からは入力できませんが
本システムでなくても、送り込むことは簡単です。
タブ(0x09) HT(0x0b) 0x7fの判定NGは、入力チェックがないか、すり抜けていることが問題です。
本体1(chk_html_inp.php)では、通常表示のページからのアクションでの診断で、
判定NGのCGIを修正したときの再診断や、管理画面などパスワード等でアクセスしてからの診断は、行えません。
本体2(chk_post.php)では、簡単に再診断が行えます。
また、手動で、formのinputを行うことができます。
注意
このスクリプト群は、テスト用サーバー(ローカル・イントラ)を想定しています。
このスクリプト群は、想定外のデータをPOSTし、CGIが対応できているかを確認するチェッカーです。
そのためCGIが想定外のデータを書き込み、最悪データが破損する場合があります。
このチェッカーは、自作スクリプトや自サイト設置CGIをチェックするためのものです。
自作スクリプトが、想定外のデータ(入力値)に対応できているかを調べる
簡易チェッカーです。
想定外のデータ(入力値)に対応できていない場合、最悪データファイルが破損します。
そのため、テスト環境(イントラ)での、実行を想定しています。
また、他人のサーバー(サイト)に対して行った場合、不正アクセスに抵触する場合があります。
このページの様に、初めから
"<s>
'<s>
"<s>
'<s>
%22%3Cs%3E
%27%3Cs%3E
の様な記述ある場合、正しい判定はできません。
html_chk.phpオプション(html5構文チェック)は、かなり癖が強く
筆者が使用しないタグ・オプションは含まれず作っています。
不具合未作成
// ScriptAliasの設定では、深い階層のファイルが表示しない
WordPressの様な、RewriteEngine には、対応してません。
JavaScriptで、formタグ等を表示しているものには、対応してません。
ダウンロード
[chk.zip]
高度な設定
apache の ScriptAlias 設定対応は
$g_server_alias = array(
);
で、行うことができます。(一部未対応)
セキュリティ
本体1(chk_html_inp.php)及び、本体2(chk_post.php)は
パスワード等で、実行を拒否を行っていません。
直の実行を拒否するには、
'Security' => 0, // 0 or '' : off
を
'Security' => 1, // 0 or '' : off
に設定し、
パスワード等で制限するPHPスクリプトを自作し
OKの場合、require('chk_html_inp.php');で、呼び出してください。(本体2も同様です)
その他
// Ver0.04 2019-12-03 Header(CookieInjection)Check
- 構成
- 設定
- 実行
- 注意
- 不具合未作成
- ダウンロード
- 高度な設定
- その他