タグ

2013年6月12日のブックマーク (2件)

  • 第12回■主要言語別:入力値検証の具体例

    これまで2回にわたってWebアプリケーションにおける入力値検証とセキュリティ対策の関係を説明してきた。入力値検証はセキュリティ上の根的対策ではないが,保険的な対策として効果が期待でき,特に制御コードや不正な文字エンコーディングによる攻撃対策には有効であることを説明した。 今回は,Webアプリケーション開発によく使われる4種類の言語(PerlPHPJavaASP.NET)に関して,入力時処理の具体例を示す。ここで取り上げる「入力時処理」とは以下の内容を含んでいる。 文字エンコーディングの検証文字エンコーディングの変換入力値検証 Perlによる実装の方針 Perl言語はバージョン5.8から内部文字エンコーディングとしてUTF-8をサポートし,文字単位での日語処理が可能だ。文字エンコーディング処理にはEncodeモジュールを使用する。入力値検証には正規表現を用いるのが便利だ。 ■文字エ

    第12回■主要言語別:入力値検証の具体例
  • 文字種チェック用の読みやすくて速い正規表現 - 岩本隆史の日記帳(アーカイブ)

    前回の日記で「クライアントに的確なエラーメッセージを返すため、文字種のチェックと文字数のチェックは分けて行うべきかもしれない」と書いた。 このうち、文字数のチェックは簡単である。文字数をカウントし、許容文字数を超えていないかどうか調べるだけでよい。 文字種のチェックには悩みどころがある。どのような正規表現を使うのが適切かという点だ。読みやすく、かつ速い正規表現が知りたい。 さて、文字種チェック用の正規表現は2種類に大別できる。 禁止文字が1文字でも含まれればマッチ 許容文字のみで構成されていればマッチ 具体的には下記のようなものだ。制御文字(定義は前回の日記を参照)を禁じ、ただし改行とタブは認める例である。 /[\p{C}\p{Zl}\p{Zp}&&[^\t\r\n]]/u /\A[[^\p{C}\p{Zl}\p{Zp}]\t\r\n]*\z/u どちらも意図は明確で、読みやすさは変わらな

    文字種チェック用の読みやすくて速い正規表現 - 岩本隆史の日記帳(アーカイブ)