岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

セキュリティ

Ruby製Webアプリでの書式チェック用正規表現

制御文字は不許可にすべき 前回の日記で「単なる書式チェック(文字種や長さなどのチェック)なので、アプリの要件にしたがって粛々と行えばよい」と書いた「(c)パラメータ文字列の妥当性検証」であるが、実は考えるべきことがそれなりにある。アプリの要件…

Ruby製Webアプリでの入力チェック手順

今回はRuby製Webアプリでの入力チェック手順について考えてみる。Ruby1.9を使い、Railsなどのフレームワークは使わない前提だ。 文字エンコーディングの妥当性検証こそが重要 徳丸浩さんの『体系的に学ぶ 安全なWebアプリケーションの作り方』には「入力処理…

Twitterの中途半端なエスケープにどう対応するか

TwitterのつぶやきをAPIで取得すると、中途半端にエスケープされた文字列が返ってくる id:koseki2さんが「Twitterのエスケープ処理について。 - こせきの技術日記」で指摘されているように、TwitterのつぶやきをAPIで取得すると、中途半端にエスケープされた…

ユーザID≠ログインIDにしよう、そうしよう

この日記が良い例ですが、URLなどでIDが公開されるWebアプリは、悪意のある第三者にパスワードが推測されてしまうと、不正ログインされる可能性があります。考えてみると、ログインに使うIDをわざわざ公開する必要はなさそうです。公開することに意味がある…

Webアプリケーションにおけるセッション管理についての私なりのまとめ

認証時にセッションIDを発行し、HTTPリクエストに含まれるセッションIDで認証済み状態を維持する手法を「セッション管理」とよぶ(すなわち、セッション管理は「認証」とは別物である) 認証やセッション管理の不備によるセッションID漏洩に備えることを「セ…

htmlspecialcharsに関する素敵なお知らせ

外出のため確認が遅くなってしまったのですが、「htmlspecialcharsに関する残念なお知らせ」という記事で触れたバグレポートが、reopenされ、fixされました。「改善される見込みは薄い」という私の予測は外れたわけで、申し訳ないと思うと同時に、htmlspecia…

htmlspecialcharsに関する残念なお知らせ

「htmlspecialcharsのパッチ私案」に書いた件、バグレポートを出してみましたが、「すでに同じバグレポートがあるだろ」という理由により、あえなく却下されました。せめて先方が「同じ」とみなしているレポート番号ぐらいは示してほしくて、そのようにコメ…

htmlspecialcharsのパッチ私案

PHPのhtmlspecialchars関数について、文字エンコーディングの妥当性チェックが不充分であること、また場合によってはXSS攻撃が可能になることが、下記ふたつの記事で指摘されています。 htmlspecialcharsは不正な文字エンコーディングをどこまでチェックする…

セッションIDのみの認証はセキュリティレベルが低いのか

はてなブックマークモバイル版の脆弱性 昨日、はてなブックマークモバイル版の脆弱性に関する報告が公開されました。 「はてなブックマーク モバイル版」の脆弱性を利用した不正アクセスに関するご報告 - はてなブックマーク日記 - 機能変更、お知らせなど …

XSS対策パッチを当ててもRailsに残る脆弱性

どのような脆弱性か 先日書いた「Rails 2系のXSS脆弱性がRuby 1.9では影響なしとされる理由」という記事に、奥さん(id:kazuhooku)より、下記のブックマークコメントをいただきました。 たとえばブログの場合、誰かに壊れたUTF-8を含むコメントを書き込まれ…

Rails 2系のXSS脆弱性がRuby 1.9では影響なしとされる理由

Rails 2系のXSS脆弱性を修正するパッチが先日公開されました。 4日(米国時間)、Ruby on Railsの2系すべてのバージョンにXSSの脆弱性があることがRiding Rails: XSS Vulnerability in Ruby on Railsにおいて発表された。特定のUnicode文字列を使ってチェック…

不正な文字列をどこでチェックすべきか

大垣さんの書かれた: 不正な文字エンコーディングを利用した攻撃は、文字エンコーディングを厳格に取り扱い、文字エンコーディングをバリデーションすれば無くなります。これを怠ると、システムのどこで問題が発生するか予想できなくなります。つまり、いい…

第02回まっちゃ445勉強会に参加した

第02回まっちゃ445勉強会 竹迫さん(id:TAKESAKO)によるmod_wafful話が聞けそうだ、ということで参加表明した勉強会。表明後、徳丸さん(id:ockeghem)・大垣さん・園田さん(id:sonodam)が登壇されることが決まり、願ってもない流れに。勉強会開始直後…

第02回まっちゃ445勉強会に参加予定です

開発系の情報セキュリティ勉強会ワッフルたべながら、わっふるわっふるを考えよう! 第02回まっちゃ445勉強会 何かの間違いでmod_waffulの話が聞けたらよいな(えー)という期待をこめて、参加申請しました。本当に「わっふるわっふる」を考える会だった…

ブルートフォースアタックがひどかった

先日入れたDenyHostsのレポートメールが、今日はやたらに届いた。 $ grep 'new denied hosts' /var/log/denyhosts | grep '2008-08-19' -c 3535件だって。

Basic認証のダダ流し問題

でもID/PASSはダダ流しなんでしょ? はてなブックマーク - NOV1975のブックマーク / 2008年7月12日 SSL/TLSで解決しませんか?

id:ZIGOROuさんの資料が勉強になった

プロバイダ(OPでもRPでも)やるなら必読といえるのではないでしょうか。 WASForum Conference 2008 での OpenID のセキュリティについてのスライドを公開します - Yet Another Hackadelic 個人的にありがたかったのが、「RPは OP Endpoint URL と openid.re…

ブルートフォースアタックがひどいのでDenyHostsを入れた

リリースチェッカーを動かしているFreeBSDサーバに対し、ここ数日ブルートフォースアタックが行われていました。どげんかせんといかんので、DenyHostsというツールを入れて様子を見ています。とりあえず作業メモを残しておきます。なお、作業にあたっては下…

RESTfulなWebアプリのCSRF対策について考える

『安全なウェブサイトの作り方 改訂第3版』(PDF)によれば、CSRF脆弱性の根本的解決策は下記の3つしかありません。 処理を実行するページを POST メソッドでアクセスするようにし、その「hidden パラメータ」に秘密情報が挿入されるよう、前のページを自動…

ENT_QUOTES脳?

builder編集部の大野です。初出時、2ページ目最下のソースコードにおいて、htmlspecialchars($_REQUEST ['my_name'])となっていましたが、特別な理由がない限りhtmlspecialchars($_REQUEST['my_name'], ENT_QUOTES)とすべきなので、第2引数を追加しました。…

『安全なウェブサイトの作り方 改訂第3版』を読んだ

Webアプリ開発者なら必読と思っている資料が改訂されたので読んだ。 安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構 うん。やっぱり必読だ。こういう指針があるのはありがたい。前の版にもあったと思うが『URL を出力するときは、「http://…

return_urlだけでもリプレイ攻撃が防げるのかー

OpenID認証トランザクションの開始時にConsumer側でnonceを発行して、ユーザーのCookieやSessionデータ、あるいはreturn_urlに付与しておきつつ、自前でDBに格納しておく。 OpenIDとリプレイ攻撃 - Yet Another Hackadelic cookie無効のUAでも使えるようにす…

面倒だけど

XSS対策:JavaScriptのエスケープ(その4) - ockeghem's blog インジェクションが発生しうる箇所すべてで不正バイト列のチェックを行えば安心じゃないかと思った。