タグ

正規表現とbookに関するraimon49のブックマーク (3)

  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

    正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/

    raimon49
    raimon49 2014/03/04
    >Rubyの正規表現機能は、デフォルトで複数行モードである / ひー。知らなかった。PHPも末尾が改行コードだと挙動が変わる。
  • もし『よくわかるPHPの教科書』の著者が徳丸浩の『安全なWebアプリケーションの作り方』を読んだら - ockeghem's blog

    たにぐちまことさんの書かれた『よくわかるPHPの教科書(以下、「よくわかる」)』を購入してパラパラと見ていたら、セキュリティ上の問題がかなりあることに気がつきました。そこで、拙著「体系的に学ぶ 安全なWebアプリケーションの作り方(以下、徳丸)」の章・節毎に照らし合わせて、「よくわかる」の脆弱性について報告します。主に、徳丸の4章と5章を参照します。 4.2 入力処理とセキュリティ 「よくわかる」のサンプルや解説では、入力値検証はほとんどしていません。しかし、入力値検証をしていないからといって即脆弱かというとそうではありません。徳丸でも強調しているように、入力値検証はアプリケーション要件(仕様)に沿っていることを確認するもので、セキュリティ対策が目的ではないからです。 「よくわかる」の中で、私が見た範囲で唯一の入力値検証は、郵便番号のチェックをするものです。以下に引用します(「よくわ

    もし『よくわかるPHPの教科書』の著者が徳丸浩の『安全なWebアプリケーションの作り方』を読んだら - ockeghem's blog
  • 正規表現とワイルドカードは違います by Inquisitor

    注意:ここでは正規表現とワイルドカード自体については説明しません。ここで紹介するような間違いに注意して、もう一度検索してください。 「・・・がわかっていない人は、情報関係のなんて書くべきではない」なんてことを言うと自分に跳ね返ってきそうで怖いのですが、正規表現とワイルドカードの違いがわかっていない人は、お願いですから情報関係の教科書は書かないでください。 計算機概論の講義のネタを集めているときに、「正規表現とワイルドカードをごっちゃにする」というとんでもない間違いが世に蔓延っているのを知りました。影響力の小さいブログとかなら別にいいのですが、情報処理技術者試験の教科書や、IT用語辞典が間違っているのはまずいでしょう。 たとえば、手元にあった『ソフトウェア開発技術者完全教』には、次のような記述がありました。 正規表現は、特定の文字列ではなく文字列の一部を一般化して表現するための手法。プロ

    raimon49
    raimon49 2008/06/06
    こんなにごっちゃになっているのか。
  • 1