2020/03/15 にお茶の水女子大学内でセキュリティ・キャンプ (https://www.security-camp.or.jp/) の宣伝をした際に、それに合わせて小さな講義を提供しました。これはその発表資料です。 --- 誤りを見つけたら、Twitter (https://twitter.com/lmt_swallow) の DM かポートフォリオサイト(https://shift-js.info/) で示されているメールアドレスまでご連絡ください。
![正規表現とセキュリティ / Regular Expressions and Their Security-Related Aspects](https://cdn-ak-scissors.b.st-hatena.com/image/square/597210488b1ee88c177e99142239445397d33225/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fd1a1db7ce50f4bc19353fe6f20ce8f0d%2Fslide_0.jpg%3F15139161)
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く