入力のチェック

フォームデータは必ずチェックしよう

掲示板の投稿記事などは、悪意ある第三者が書き込む可能性が有ります。 訪問者が書き込むデータは必ずチェックしましょう。

文字長をチェックする

攻撃スクリプトはある程度以上の長さになるため、単純な方法ですが文字長のチェックをすることで、多くの攻撃を回避することができます。

文字の長さをチェックする関数は、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関数
関数名 働き
ctype_alnum 英数字かどうかをチェックします。
ctype_alpha 英字かどうかをチェックします。
ctype_digit 数字かどうかをチェックします。
ctype_graph 印字可能な文字かどうかをチェックします。(空白がある場合もFALSE)
ctype_print 印字可能な文字かどうかをチェックします。(空白があってもTRUE)

より本格的な対策は、サニタイズをごらんください。

Copyright (C) 2003-2013. PHP で WEB 作成 All rights reserved.