入力のチェック
フォームデータは必ずチェックしよう
掲示板の投稿記事などは、悪意ある第三者が書き込む可能性が有ります。 訪問者が書き込むデータは必ずチェックしましょう。
文字長をチェックする
攻撃スクリプトはある程度以上の長さになるため、単純な方法ですが文字長のチェックをすることで、多くの攻撃を回避することができます。
文字の長さをチェックする関数は、strlenです。 日本語(マルチバイト文字)の長さをチェックする場合は、 mb_strlenを利用します。 mb_strlenの第二引数は文字コードになります(省略可)。
例えば、変数$addressが50字以内という条件なら、 50字を超えたら処理を中止するようにします。
if (mb_strlen($address,"EUC-JP") > 50) { exit; }
文字の種類を調べる
入力された文字が、想定内の文字種であるかをチェックします。 例えば、電話番号なら数字かどうかをチェックする、というように使います。
PHP4.2.0以降で使える ctype関数を利用すると、文字種のチェックがしやすいです。 ただし、日本語対応の関数は、2006年1月時点では用意されていません。
ctype関数は、調べたい文字列を引数に取り、 文字列が条件を満たす場合はTRUE、満たさない場合はFALSEを返します。
ctype_digit($phone_number);
関数名 | 働き |
---|---|
ctype_alnum | 英数字かどうかをチェックします。 |
ctype_alpha | 英字かどうかをチェックします。 |
ctype_digit | 数字かどうかをチェックします。 |
ctype_graph | 印字可能な文字かどうかをチェックします。(空白がある場合もFALSE) |
ctype_print | 印字可能な文字かどうかをチェックします。(空白があってもTRUE) |
より本格的な対策は、サニタイズをごらんください。
Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.