タグ

正規表現とsecurityに関するTAKESAKOのブックマーク (2)

  • 鬼車+Unicodeの\[\[:print:\]\]はPOSIX流じゃないらしい - moriyoshiの日記

    追記: どっちが正しいとかそういう話ではないので念のため...。 追記2: Technical ReportがAnnexとなっていたのを修正。 追記3: 微妙に誤解があった部分を修正。結論としては同じ。 id:ockeghem さんの、 「POSIX正規表現の[:print:]は改行やタブがマッチするかどうかがPerlPHPで異なりますね。Perlはマッチしない、PHPはマッチする。どっちが正しいんだ? 」というつぶやきを見て、いろいろ調べてみたんですが、 今回はPHPのせいじゃなかった みたいなのでいろいろほっとしました。 さて、まずは試してみる PHP: <?php foreach (str_split("\x09\x0a\x0d a") as $c) { var_dump(ord($c)); echo "preg_match(): "; var_dump(preg_match("(

    鬼車+Unicodeの\[\[:print:\]\]はPOSIX流じゃないらしい - moriyoshiの日記
  • 正規表現で「制御文字以外」のチェック - ockeghem's blog

    一般に、セキュアコーディングの基として入力値の検証(Validation)をせよということになっていますが、これが変な方向に行くといわゆる「サニタイズ」のような手法になってしまいます。以前も指摘したように、アプリケーションとしてのValidationは仕様に従って行うべきものです。 ですが、概ねどの場合でも行うべき検証として以下があると思います。 文字エンコーディングの妥当姓 制御文字(\x00〜\x1f, \x7f)のチェック 文字列長のチェック このうち後ろ二つを正規表現として書くにはどうすればいいかを考えていました。つまり、「制御文字以外の文字でm文字以上n文字以下」というようなチェックです。m文字以上、n文字以下は、{m,n}で書けるので、問題は「制御文字以外の文字」です。これはtextタイプのinput要素で、かつアプリケーション仕様としては文字種の制限をしない場合を想定してい

    正規表現で「制御文字以外」のチェック - ockeghem's blog
  • 1