タグ

Rubyとsecurityに関するGlnのブックマーク (2)

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

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

  • 高木浩光@自宅の日記 - 「高橋メソッド」的突貫工事と、脆弱性を排除する構造設計は両立するか

    ■ 「高橋メソッド」的突貫工事と、脆弱性を排除する構造設計は両立するか こんな記事が出ていた。 「3年で陳腐化するWebサイトの構築には軽量言語のほうが向いている」,日Rubyの会,高橋征義会長, 日経ソフトウェア, 2006年2月10日 高橋氏は「Webサイトは構築してから3年経つと陳腐化する」と指摘する。ただ,壊れたわけでもないWebサイトを3年でリニューアルするには,事前に顧客と話をつけておく必要がある。3年で捨てる予定のアプリケーションの予算は少ない――これが,WebにはPHPRubyといったLLが向いている理由である。Javaのような重量級の言語だと,10年持ちそうな設計や構造のアプリケーションを作ることになり,費用もそれなりに高額になってしまう。 それは話が逆だろう。「10年持ちそうな」という言葉で比喩されるような、つまり、しっかりとした設計や構造のアプリケーションを作ると

  • 1