エンジニア足立のコーディング日記

エンジニア足立のコーディング日記

ブログトップへ >> 『2012年6月』の記事一覧

RSS お問い合わせフォームの脆弱性・セキュリティ対策_入力値の妥当性チェック

この記事を読むのに掛る所要時間: 614

前回記事の続きで、

 

今回は入力値の妥当性チェックについてです。

 

妥当性チェックといっても、

 

色々チェックすることがあります。

 

例えば、

 

メールアドレスが正しく入力されているかをチェックする場合には、

 

============================================================

/*
*説明 :メールアドレスの形式をチェックする
* IN  :$mail チェック対象となるメールアドレス
* OUT :エラーが無ければ「true」、エラーがあれば「false」を返す
*/
function checkMailAddress($mail = “”){

 if(preg_match(“/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/”, $mail)){

  return true;

 }else{

  return false;

 }

}
============================================================

 

という関数を作成して、

 

if(!checkMailAddress($mail)){
 echo “メールアドレスを半角英数字で正しく入力してください。”;
}

 

とすればチェックできます。

 

 

ただし、

 

 

メールアドレスのチェックは本来はこれだけでは不十分で、

 

 

完全チェックコードを書くのは相当な作業量になるようです。

 

また、

 

電話番号だと、
============================================================
if(preg_match(“/^0\d{8,9}$/”, $tel_num)){

 return true;

}else{

 return false;

}
============================================================
とします。

 

これは、

 

「0」から始まり、9桁もしくは10桁で入力されていることを確認しています。

 

これは

 

数字のみ入力を許可する場合の処理で、

 

例えば「-」付きの電話番号をチェックする場合には、
============================================================
if(preg_match(“/\d{2,4}-\d{2,4}-\d{4}/”, $number)){

 return true;

}else{

 return false;

}
============================================================

となります。

 

これはファックスも同じです。

 

因みに携帯電話だと、
============================================================
/*
*説明 :携帯番号の形式をチェックする
* IN  :$number チェック対象となる携帯番号
* OUT :エラーが無ければ「true」、エラーがあれば「false」を返す
*/
function checkKeitaiNumber($number = “”){

 if(preg_match(“/^0(7|8|9)0\d{8}$/”, $number)){

  return true;

 }else{

  return false;

 }

}
============================================================

その他にも、

 

名前やふりがなに全角以外の文字が入っていないか?は
============================================================
/*
*説明 :全角文字のみかをチェックする
* IN  :$string チェック対象となる文字列
* OUT :エラーが無ければ「true」、エラーがあれば「false」を返す
*/
function checkHalf($string){

 if(mb_convert_kana($string, “AK”, “文字コード”) != $string){

  return false;

 }else{

  return true;

 }

}
============================================================

とmb_convert_kanaで変換した場合と変換しない場合で差異が出れば、

 

全角以外が混ざっていると判定しています。

 

 

その他にも、

 

例えば性別を問うラジオボタンを設けた場合、

 

性別は「男」か「女」だけなので、

 

それ以外の値が入っていないか?

 

また、

 

郵便番号は「3桁-4桁」で入力されているか?

 

数字のみのを入力する項目は半角数字で入力されているか? ※is_numeric()関数でチェックすればOK!?

 

年齢であれば3桁半角英数のみで入力されているか? ※「preg_match(“/^\d{1,3}$/”, $age)」とすればOK!!

 

入力された日付けは妥当か? ※日付けはcheckdate()関数を使えば便利ですね!!

 

などのチェックが必要です。

 

 

 

取り敢えず、

 

妥当性チェックといってもチェックすることは山程あり、

 

結構面倒な作業ではあります。

このページのTOPへ戻る

著者情報

足立 拓也(あだち たくや)
1980年生まれ。
出身:兵庫県丹波市。
趣味:ボクシングジム通い。
特技:歴史の話しをすること。
一言:頑張って面白いブログを書きます。

月別アーカイブ

  •  

    • [+]2016 (49)
    • [+]2015 (86)
    • [+]2014 (81)
    • [+]2013 (104)
    • [+]2012 (78)
  • カテゴリー