ブックマーク / blog.ohgaki.net (8)

  • 徳丸さんのブログに対するコメント

    (Last Updated On: 2018年8月4日)最初、書いた時はユーザーが一人だけと頭にあったので思いっきり誤解していました。確かに複数ユーザーの場合は真正性に問題があります。修正版の差分をアーカイブを更新しておきました。 題のブログはこちらです。 書籍『Webアプリケーションセキュリティ対策入門』のCSRF脆弱性 トークンの有効範囲は? トークンがDBに保存される場合、トークンの有効範囲が気になるところです。大垣および第二版のソースを見ると、トークンを保存するテーブルの定義は以下の通りです。 CREATE TABLE form_id (sha1 TEXT PRIMARY KEY, created TEXT NOT NULL) sha1がトークン、createdが生成日時を保持します。 シンプルな構造ですが、これだとトークンは、ユーザーやセッションを超えて、アプリケーション全体

    徳丸さんのブログに対するコメント
    mumincacao
    mumincacao 2015/06/30
    別の人が有効なとーくん埋め込んだりくえすとを準備できちゃう時点で『CSRF 対策には使えない』って指摘通りに見えるなぁ・・・ っていうかばりでーしょん以外でも仲良しさんですの?(・x【みかん
  • 徳丸浩氏との長年の議論に終止符 – 論理的/体系的セキュリティとそれ以外

    (Last Updated On: 2018年8月4日)私が長年徳丸さんと議論していることをご存知の方も多いと思います。徳丸さんがなぜ論理的に矛盾する主張、明らかにセキュリティ標準規格/ベストプラクティスに反する主張を繰り返えしたのか、その理由が判明しました。それと同時に長年の議論に終止符が打たれ、徳丸さんの考えを完全に理解することができたと思われます。 徳丸さんがセキュリティ対策製品であるWAF(Web Application Firewall)を販売/推奨しつつ、アプリケーション側のファイアーウォールと言える「入力バリデーション」を「セキュリティ対策ではない」と主張されるのは、ジョブセキュリティやステスルマーケティングの類ではないのか?と思えるほどでした。アプリケーションがバリデーションしなければしないほどWAFの有効性は上がり、WAFが売れるでしょう。「WAFはセキュリティ対策」「ア

    徳丸浩氏との長年の議論に終止符 – 論理的/体系的セキュリティとそれ以外
    mumincacao
    mumincacao 2015/02/17
    ほわいとりすと神話は実用性考えるとぐれーぞーんが入らざるを得ないからほわいと&ぶらっく関係なく実際に値を扱うときは適切にえすけーぷしないとねってだけじゃないのかなぁ?(・x【みかん
  • ホスト名バリデーションのやり方

    (Last Updated On: 2018年8月13日)徳丸さんのブログで私のブログ「GHOSTを使って攻撃できるケース」にコメントがあったようなので、好ましいホスト名バリデーションの方法を書いておきます。 特定の低レベルAPIのバグが10年ほど前に書いたのコードで対応できていない、と議論するのもどうかと思いますがしっかりチェックする場合の例を書いておきます。 そもそもホスト名の仕様はどうなっているのか? 入力バリデーションを行うには仕様を理解する必要があります。ホスト名の仕様は幾つかのRFCで言及されています。例えば、RFC 2181の11. Name syntaxには That one restriction relates to the length of the label and the full name. The length of any one label is li

    ホスト名バリデーションのやり方
    mumincacao
    mumincacao 2015/02/04
    日本語どめいん()ぶつけてみたくなったけどこの場合はぷにこーどに変換して投げることになるのかなぁ?(・x【みかん
  • PHPのセッションアダプション脆弱性克服への道のり

    (Last Updated On: 2018年8月13日)PHP Advent Calender用のエントリです。 PHPのセッション管理は非常に簡単です。セッションをsession_start()で開始して$_SESSION配列を使うだけです。便利で簡単なセッションモジュールですがセッションアダプションに脆弱であるため、一般に言われてる「ログインする時にはsession_regenerate_id()を呼ぶ」コーディングではセッションアダプションに脆弱になってしまいます。 まずは危険性と対策を紹介します。 セッションアダプションの危険性 セッションアダプションとは外部などから設定されたセッションIDを受け入れ初期化する脆弱性です。一番分かりやすい例はTrans SIDを有効にして http://example.com/index.php?PHPSESSID=1234567890 とアクセ

    PHPのセッションアダプション脆弱性克服への道のり
    mumincacao
    mumincacao 2011/12/06
    多重くっきー問題で複数 SID が送信されると不正な SID が優先されてせっしょんが切れることはあっても再生成で破棄された SID が有効にはならない気がするんだけどなぁ・・・ (´・ω【みかん
  • セッションのクッキーを設定する場合のベストプラクティス

    (Last Updated On: 2018年8月18日)HTTPセッションは通常クッキーを利用して行います。クッキーを利用したセッションの場合、お薦めする設定は以下の通りです。 ドメイン名は指定しない パスはルート(/)を指定する セッション管理用のクッキーはセッションクッキー(有効期間0)にする httponly属性を付ける 可能な場合は必ずsecure属性をつける 複数アプリケーションを利用する場合はsession.nameまたはsession_name()でセッションクッキー名で指定する (アプリケーションの固有名デフォルトで設定し、設定項目として変更できるようにする) 3まではPHPデフォルト設定です。4から6までは自分で設定しなければなりません。PHPの場合、すべてphp.iniで指定できます。session_set_cookie_params()でセッション開始前に指定すれば

    セッションのクッキーを設定する場合のベストプラクティス
    mumincacao
    mumincacao 2011/11/25
    毎回ろぐいんするのがめんどいからって有効期限長くしちゃうひと見かけるなぁ・・・ 大量のせっしょん情報が残ってるから GC まわり調べてみたら有効期限2ヶ月になってたなんて落ちが・・・ (´・ω【みかん
  • PHPが文字エンコーディング攻撃に強い理由 – HTMLエスケープ

    (Last Updated On: 2018年8月13日)PHPが文字エンコーディング攻撃に比較的強い理由は入出力の文字エンコーディングのバリデーション(サニタイズ)が行えるだけではありません。PHPが提供するHTMLエスケープ関数が文字エンコーディング攻撃に対して強い事も理由の一つです。 PerlHTMLエスケープと言えば、<,>,&,”,’をエンティティ変換するコードが一番に見つかります。 「perl html escape」でググると一番に見つかったページは次のページです。このページではまだ3バイトEUCの場合の例、CGIモジュールを使った例も載っているので良い方でしょう。 http://saboten009.blogspot.com/2008/04/perlhtml-xss.html 少し前にPerl, Ruby,Pythonユーザは検索で有用なセキュリティ情報を得られるのか?と

    PHPが文字エンコーディング攻撃に強い理由 – HTMLエスケープ
    mumincacao
    mumincacao 2009/09/30
    ばりで~しょん(さにたいず)ってえすけ~ぷしてねと伝えたら処理のはじめに入力で~たを mysql_real_escape_string() しただけで対応したよって返ってきたときのもにょり感となんだか似てるにゃぁ… (´・ω・`;【みかん
  • #PHP でもutf8_decodeは使ってはならない

    (Last Updated On: 2009年9月22日)Twitterで書いた方が良いようなエントリですが、たまには良いでしょう。 #perl – utf8::decode()ではなくEncode::decode_utf8()を使うべき理由 という記事がありました。PHPにも似た関数、utf8_decodeがあります。PHPでも使ってはなりません。日人というよりマルチバイト圏で使っている人はほとんどいないはずです。理由はコードを見れば一目瞭然です。 /* All the encoding functions are set to NULL right now, since all * the encoding is currently done internally by expat/xmltok. */ xml_encoding xml_encodings[] = { { "ISO-

    #PHP でもutf8_decodeは使ってはならない
    mumincacao
    mumincacao 2009/09/24
    まるちばいと戦争はいつまで続くのかなぁ? それにしても utf8_decode() なんてはじめて見たのです(´ω`;【みかん
  • 何故かあたり前にならない文字エンコーディングバリデーション

    (Last Updated On: 2018年8月8日)私が4年前(2005年)に「Webアプリセキュリティ対策入門」を執筆していた時には、既に壊れた文字エンコーディングなどの不正な文字エンコーディングを利用したJavaScriptインジェクションやSQLインジェクション攻撃は比較的広く知られていました。この問題は当時のスラッシュドットジャパンでも取り上げられていました。/.で取り上げられたので、そこら中のWebサイトとユーザが被害に合うのでは?とヒヤヒヤしたので良く覚えています。 不正な文字エンコーディングを利用した攻撃は、文字エンコーディングを厳格に取り扱い、文字エンコーディングをバリデーションすれば無くなります。これを怠ると、システムのどこで問題が発生するか予想できなくなります。つまり、いい加減に文字エンコーディングを取り扱うと安全なシステムは作れないのです。 参考:エンジニア向けに

    何故かあたり前にならない文字エンコーディングバリデーション
    mumincacao
    mumincacao 2009/09/11
    mysql_set_charset() は 5.2 系からじゃないと使えないからさ~ばによっては SET NAMES しかできないこともあるにう(´・ω・`;【みかん そ~いえば,mb_check_encoding() ってどこかのば~ぢょんで誤動作しなかったっけ?
  • 1