特殊文字を正規表現で判定したい


**会員登録時に特殊文字の入力チェックをしたいです。**

PHPで、

[code]

    case 'SPECIAL_CHARCTER'
    if($value == ''){ //仮
      $arrErr[$key] = '※ ' . $this->disp_name[$index] . 'に特殊文字が含まれています。<br>';
    }
    break;
    
[/code]

のifの箇所に、preg_matchを使用してHTML特殊文字のチェックを行いたいです。

調べましたが、四苦八苦しています。。

アドバイスをいただけませんか？



[code]

    if(preg_match('/[<>&"]/', $value)) 
    
[/code]

とかこんな感じでしょうか。

が、このまま使わないでください。

Webアプリケーションにおいて、なぜ(あえて不正確な用語を使いますが)「HTML特殊文字」に特別な扱いが必要なのか、どのように適切に処理すべきか、というのは基本として理解が必要です。一般論としては出力時にエスケープするべきで、入力時にチェックするのは筋が悪い方法だと考えられています。

(アプリケーション要件として使える文字種を制限することはありますが、そうであればエラーメッセージはもっと適切な物にしたほうがよいでしょう)

Webアプリケーションはささいなことで簡単に脆弱性が生じ得ますので、きちんと勉強されることをお勧めします。書籍であれば、「体系的に学ぶ安全なWebアプリケーションの作り方」(ISBN:
978-4-7973-6119-3)は一通り知っておいた方がよいことが網羅されていますのでお勧めです。

