

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

PHPで、

[code]

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

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

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

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


CC BY-SA 3.0
2015-11-13T11:07:54.007
18793
2015-11-16T03:30:11.710
2015-11-14T00:53:56.400
4236
10057
question
php 正規表現
特殊文字を正規表現で判定したい

[code]

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

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

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

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

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

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


CC BY-SA 3.0
2015-11-14T02:14:36.990
18801
2015-11-14T04:58:32.253
2015-11-14T04:58:32.253
5793
5793
18793
answer


ご回答ありがとうございます。  
CMSへのバリデーションの実装でしたので、条件式の挿入を行いました。  
ご紹介いただいた書籍は是非読ませていただきます、丁寧にありがとうございました。

続いて報告まで、以下の配列で実装しました。。  
$strings = [  
" ", " ", "!", "\"", "#", "$", "%", "&", "'",  
"(", ")", "*", "+", ",", ".", "/", ":", ";",  
"<", "&nvlt", "=", "&bne", ">", "&nvgt", "?",  
"@", "[", "\", "]", "^", "_", "`", "&fjlig",  
"{", "|", "}", " ", "¡", "¢", "£", "¤", "¥",  
"¦", "§", "¨", "©", "ª", "«", "¬", "­", "®",  
"¯", "°", "±", "²", "³", "´", "µ", "¶", "·",  
"¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À",  
"Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É",  
"Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò",  
"Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û",  
"Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä",  
"å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í",  
"î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö",  
"÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ",  
"Ā", "ā", "Ă", "ă", "Ą", "ą", "Ć", "ć", "Ĉ",  
"ĉ", "Ċ", "ċ", "Č", "č", "Ď", "ď", "Đ", "đ",  
"Ē", "ē", "Ė", "ė", "Ę", "ę", "Ě", "ě", "Ĝ",  
"ĝ", "Ğ", "ğ", "Ġ", "ġ", "Ģ", "Ĥ", "ĥ", "Ħ",  
"ħ", "Ĩ", "ĩ", "Ī", "ī", "Į", "į", "İ", "ı",  
"Ĳ", "ĳ", "Ĵ", "ĵ", "Ķ", "ķ", "ĸ", "Ĺ", "ĺ",  
"Ļ", "ļ", "Ľ", "ľ", "Ŀ", "ŀ", "Ł", "ł", "Ń",  
"ń", "Ņ", "ņ", "Ň", "ň", "ŉ", "Ŋ", "ŋ", "Ō",  
"ō", "Ő", "ő", "Œ", "œ", "Ŕ", "ŕ", "Ŗ", "ŗ",  
"Ř", "ř", "Ś", "ś", "Ŝ", "ŝ", "Ş", "ş", "Š",  
"š", "Ţ", "ţ", "Ť", "ť", "Ŧ", "ŧ", "Ũ", "ũ",  
"Ū", "ū", "Ŭ", "ŭ", "Ů", "ů", "Ű", "ű", "Ų",  
"ų", "Ŵ", "ŵ", "Ŷ", "ŷ", "Ÿ", "Ź", "ź", "Ż",  
"ż", "Ž", "ž", "ƒ", "Ƶ", "ǵ", "ȷ", "ˆ", "ˇ",  
"˘", "˙", "˚", "˛", "˜", "˝", "̑", "Α", "Β",  
"Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ", "Λ",  
"Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "Σ", "Τ", "Υ",  
"Φ", "Χ", "Ψ", "Ω", "α", "β", "γ", "δ", "ε",  
"ζ", "η", "θ", "ι", "κ", "λ", "μ", "ν", "ξ",  
"ο", "π", "ρ", "ς", "σ", "τ", "υ", "φ", "χ",  
"ψ", "ω", "ϑ", "ϒ", "ϕ", "ϖ", "Ϝ", "ϝ", "ϰ",  
"ϱ", "ϵ", "϶", "Ё", "Ђ", "Ѓ", "Є", "Ѕ", "І",  
"Ї", "Ј", "Љ", "Њ", "Ћ", "Ќ", "Ў", "Џ", "А",  
"Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й",  
"К", "Л", "М", "Н", "О", "П", "Р", "С", "Т",  
"У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы",  
"Ь", "Э", "Ю", "Я", "а", "б", "в", "г", "д",  
"е", "ж", "з", "и", "й", "к", "л", "м", "н",  
"о", "п", "р", "с", "т", "у", "ф", "х", "ц",  
"ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я",  
"ё", "ђ", "ѓ", "є", "ѕ", "і", "ї", "ј", "љ",  
"њ", "ћ", "ќ", "ў", "џ", "‐", "–", "—", "―",  
"‖", "‘", "’", "‚", "“", "”", "„", "†", "‡",  
"•", "‥", "…", "‰", "‱", "′", "″", "‴", "‵",  
"‹", "›", "‾", "⁁", "⁃", "⁄", "⁏", "⁗", " ",  
"&ThickSpace", "⁠", "⁡", "⁢", "⁣", "€", "⃛", "⃜",  
"ℂ", "℅", "ℊ", "ℋ", "ℌ", "ℍ", "ℎ", "ℏ", "ℐ",  
"ℑ", "ℒ", "ℓ", "ℕ", "№", "℗", "℘", "ℙ", "ℚ",  
"ℛ", "ℜ", "ℝ", "℞", "™", "ℤ", "℧", "ℨ", "℩",  
"ℬ", "ℭ", "ℯ", "ℰ", "ℱ", "ℳ", "ℴ", "ℵ", "ℶ",  
"ℷ", "ℸ", "ⅅ", "ⅆ", "ⅇ", "ⅈ", "⅓", "⅔", "⅕",  
"⅖", "⅗", "⅘", "⅙", "⅚", "⅛", "⅜", "⅝", "⅞",  
"←", "↑", "→", "↓", "↔", "↕", "↖", "↗", "↘",  
"↙", "↚", "↛", "↝", "&nrarrw", "↞", "↟", "↠",  
"↡", "↢", "↣", "↤", "↥", "↦", "↧", "↩", "↪",  
"↫", "↬", "↭", "↮", "↰", "↱", "↲", "↳", "↵",  
"↶", "↷", "↺", "↻", "↼", "↽", "↾", "↿", "⇀",  
"⇁", "⇂", "⇃", "⇄", "⇅", "⇆", "⇇", "⇈", "⇉",  
"⇊", "⇋", "⇌", "⇍", "⇎", "⇏", "⇐", "⇑", "⇒",  
"⇓", "⇔", "⇕", "⇖", "⇗", "⇘", "⇙", "⇚", "⇛",  
"⇝", "⇤", "⇥", "⇵", "⇽", "⇾", "⇿", "∀", "∁",  
"∂", "&npart", "∃", "∄", "∅", "∇", "∈", "∉",  
"∋", "∌", "∏", "∐", "∑", "−", "∓", "∔", "∖",  
"∗", "∘", "√", "∝", "∞", "∟", "∠", "&nang",  
"∡", "∢", "∣", "∤", "∥", "∦", "∧", "∨", "∩",  
"&caps", "∪", "&cups", "∫", "∬", "∭", "∮",  
"∯", "∰", "∱", "∲", "∳", "∴", "∵", "∶", "∷",  
"∸", "∺", "∻", "∼", "&nvsim", "∽", "&race",  
"∾", "&acE", "∿", "≀", "≁", "≂", "&nesim", "≃",  
"≄", "≅", "≆", "≇", "≈", "≉", "≊", "≋", "&napid",  
"≌", "≍", "&nvap", "≎", "&nbump", "≏", "&nbumpe",  
"≐", "&nedot", "≑", "≒", "≓", "≔", "≕", "≖",  
"≗", "≙", "≚", "≜", "≟", "≠", "≡", "&bnequiv",  
"≢", "≤", "&nvle", "≥", "&nvge", "≦", "&nlE", "≧",  
"&NotGreaterFullEqual", "≨", "&lvertneqq", "≩",  
"&gvertneqq", "≪", "&nLtv", "&nLt", "≫",  
"&NotGreaterGreater", "&nGt", "≬", "≭", "≮", "≯",  
"≰", "≱", "≲", "≳", "≴", "≵", "≶", "≷", "≸", "≹",  
"≺", "≻", "≼", "≽", "≾", "≿", "&NotSucceedsTilde",  
"⊀", "⊁", "⊂", "&vnsub", "⊃", "&nsupset", "⊄", "⊅",  
"⊆", "⊇", "⊈", "⊉", "⊊", "&vsubne", "⊋", "&vsupne",  
"⊍", "⊎", "⊏", "&NotSquareSubset", "⊐", "&NotSquareSuperset",  
"⊑", "⊒", "⊓", "&sqcaps", "⊔", "&sqcups", "⊕", "⊖",  
"⊗", "⊘", "⊙", "⊚", "⊛", "⊝", "⊞", "⊟", "⊠", "⊡",  
"⊢", "⊣", "⊤", "⊥", "⊧", "⊨", "⊩", "⊪", "⊫", "⊬",  
"⊭", "⊮", "⊯", "⊰", "⊲", "⊳", "⊴", "&nvltrie", "⊵",  
"&nvrtrie", "⊶", "⊷", "⊸", "⊹", "⊺", "⊻", "⊽", "⊾",  
"⊿", "⋀", "⋁", "⋂", "⋃", "⋄", "⋅", "⋆", "⋇", "⋈",  
"⋉", "⋊", "⋋", "⋌", "⋍", "⋎", "⋏", "⋐", "⋑", "⋒",  
"⋓", "⋔", "⋕", "⋖", "⋗", "⋘", "&nLl", "⋙", "&nGg",  
"⋚", "&lesg", "⋛", "&gesl", "⋞", "⋟", "⋠", "⋡", "⋢",  
"⋣", "⋦", "⋧", "⋨", "⋩", "⋪", "⋫", "⋬", "⋭", "⋮",  
"⋯", "⋰", "⋱", "⋲", "⋳", "⋴", "⋵", "¬indot", "⋶",  
"⋷", "⋹", "¬inE", "⋺", "⋻", "⋼", "⋽", "⋾", "⌅", "⌆",  
"⌈", "⌉", "⌊", "⌋", "⌌", "⌍", "⌎", "⌏", "⌐", "⌒",  
"⌓", "⌕", "⌖", "⌜", "⌝", "⌞", "⌟", "⌢", "⌣", "⌭",  
"⌮", "⌶", "⌽", "⌿", "⍼", "⎰", "⎱", "⎴", "⎵", "⎶",  
"⏜", "⏝", "⏞", "⏟", "⏢", "⏧", "␣", "Ⓢ", "─", "│",  
"┌", "┐", "└", "┘", "├", "┤", "┬", "┴", "┼", "═",  
"║", "╒", "╓", "╔", "╕", "╖", "╗", "╘", "╙", "╚",  
"╛", "╜", "╝", "╞", "╟", "╠", "╡", "╢", "╣", "╤",  
"╥", "╦", "╧", "╨", "╩", "╪", "╫", "╬", "▀", "▄",  
"█", "░", "▒", "▓", "□", "▪", "▫", "▭", "▮", "▱",  
"△", "▴", "▵", "▸", "▹", "▽", "▾", "▿", "◂", "◃",  
"◊", "○", "◬", "◯", "◸", "◹", "◺", "◻", "◼", "★",  
"☆", "☎", "♀", "♂", "♠", "♣", "♥", "♦", "♪", "♭",  
"♮", "♯", "✓", "✗", "✠", "✶", "❘", "❲", "❳", "⟈",  
"⟉", "⟦", "⟧", "⟨", "⟩", "⟪", "⟫", "⟬", "⟭", "⟵",  
"⟶", "⟷", "⟸", "⟹", "⟺", "⟼", "⟿", "⤂", "⤃",  
"⤄", "⤅", "⤌", "⤍", "⤎", "⤏", "⤐", "⤑", "⤒", "⤓",  
"⤖", "⤙", "⤚", "⤛", "⤜", "⤝", "⤞", "⤟", "⤠", "⤣",  
"⤤", "⤥", "⤦", "⤧", "⤨", "⤩", "⤪", "⤳", "&nrarrc",  
"⤵", "⤶", "⤷", "⤸", "⤹", "⤼", "⤽", "⥅", "⥈", "⥉",  
"⥊", "⥋", "⥎", "⥏", "⥐", "⥑", "⥒", "⥓", "⥔", "⥕",  
"⥖", "⥗", "⥘", "⥙", "⥚", "⥛", "⥜", "⥝", "⥞", "⥟",  
"⥠", "⥡", "⥢", "⥣", "⥤", "⥥", "⥦", "⥧", "⥨", "⥩",  
"⥪", "⥫", "⥬", "⥭", "⥮", "⥯", "⥰", "⥱", "⥲", "⥳",  
"⥴", "⥵", "⥶", "⥸", "⥹", "⥻", "⥼", "⥽", "⥾", "⥿",  
"⦅", "⦆", "⦋", "⦌", "⦍", "⦎", "⦏", "⦐", "⦑", "⦒", "⦓",  
"⦔", "⦕", "⦖", "⦚", "⦜", "⦝", "⦤", "⦥", "⦦", "⦧",  
"⦨", "⦩", "⦪", "⦫", "⦬", "⦭", "⦮", "⦯", "⦰", "⦱",  
"⦲", "⦳", "⦴", "⦵", "⦶", "⦷", "⦹", "⦻", "⦼", "⦾",  
"⦿", "⧀", "⧁", "⧂", "⧃", "⧄", "⧅", "⧉", "⧍", "⧎",  
"⧏", "&NotLeftTriangleBar", "⧐", "&NotRightTriangleBar",  
"⧜", "⧝", "⧞", "⧣", "⧤", "⧥", "⧫", "⧴", "⧶", "⨀", "⨁",  
"⨂", "⨄", "⨆", "⨌", "⨍", "⨐", "⨑", "⨒", "⨓", "⨔", "⨕",  
"⨖", "⨗", "⨢", "⨣", "⨤", "⨥", "⨦", "⨧", "⨩", "⨪", "⨭",  
"⨮", "⨯", "⨰", "⨱", "⨳", "⨴", "⨵", "⨶", "⨷", "⨸", "⨹",  
"⨺", "⨻", "⨼", "⨿", "⩀", "⩂", "⩃", "⩄", "⩅", "⩆", "⩇",  
"⩈", "⩉", "⩊", "⩋", "⩌", "⩍", "⩐", "⩓", "⩔", "⩕", "⩖",  
"⩗", "⩘", "⩚", "⩛", "⩜", "⩝", "⩟", "⩦", "⩪", "⩭",  
"&ncongdot", "⩮", "⩯", "⩰", "&napE", "⩱", "⩲", "⩳", "⩴",  
"⩵", "⩷", "⩸", "⩹", "⩺", "⩻", "⩼", "⩽", "&nles", "⩾",  
"&nges", "⩿", "⪀", "⪁", "⪂", "⪃", "⪄", "⪅", "⪆", "⪇",  
"⪈", "⪉", "⪊", "⪋", "⪌", "⪍", "⪎", "⪏", "⪐", "⪑", "⪒",  
"⪓", "⪔", "⪕", "⪖", "⪗", "⪘", "⪙", "⪚", "⪝", "⪞", "⪟",  
"⪠", "⪡", "&NotNestedLessLess", "⪢", "&NotNestedGreaterGreater",  
"⪤", "⪥", "⪦", "⪧", "⪨", "⪩", "⪪", "⪫", "⪬", "&smtes",  
"⪭", "&lates", "⪮", "⪯", "&NotPrecedesEqual", "⪰",  
"&NotSucceedsEqual", "⪳", "⪴", "⪵", "⪶", "⪷", "⪸", "⪹",  
"⪺", "⪻", "⪼", "⪽", "⪾", "⪿", "⫀", "⫁", "⫂", "⫃", "⫄",  
"⫅", "&nsubE", "⫆", "&nsupseteqq", "⫇", "⫈", "⫋", "&vsubnE",  
"⫌", "&varsupsetneqq", "⫏", "⫐", "⫑", "⫒", "⫓", "⫔", "⫕",  
"⫖", "⫗", "⫘", "⫙", "⫚", "⫛", "⫤", "⫦", "⫧", "⫨", "⫩",  
"⫫", "⫬", "⫭", "⫮", "⫯", "⫰", "⫱", "⫲", "⫳", "⫽", "&nparsl",  
"ﬀ", "ﬁ", "ﬂ", "ﬃ", "ﬄ"  
];


CC BY-SA 3.0
2015-11-16T03:30:11.710
18871
2015-11-16T03:30:11.710
10057
18793
answer