タグ

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

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

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

    徳丸さんのブログに対するコメント
    hilde
    hilde 2015/06/30
    1度あけたら壊れる鍵を用意したけど部屋の区別をしていないから、攻撃者が作った鍵を被害者に渡せば使えてしまう
  • 入力バリデーションがセキュリティ対策かどうかは、”どうでもいい”!?

    (Last Updated On: 2018年8月8日)徳丸さんとの議論は終わっている いるので議論することはありません。しかし、 ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~ というおかしなスライドが目に入ったのでコメントしておきます。今現在で2万近くのビュー回数もあると放っておけません。 ”セキュリティ専門家”という肩書を持つ方が非論理的/非科学的な独自のセキュリティ理論を展開されるようでは、誤解してしまった開発者がセキュアでないコードを書いてしまいます。どのように非論理的/非科学的なのか簡単にコメントします。 問題のスライド 問題のスライドはこちらです。 色々あるのですが、特にp27です。 それ(入力バリデーション)が「セキュリティ対策」かどうかは、”どうでもいい” とセキュリティ専門家としては論外の主張をされています。因みに私もOWASPの考え方に基的に大賛

    入力バリデーションがセキュリティ対策かどうかは、”どうでもいい”!?
    hilde
    hilde 2015/06/16
    またやってる。何処まで行っても平行線
  • PHP本体でタイミング攻撃を防御できるようになります

    (Last Updated On: 2021年3月25日) PHP 5.6からタイミング攻撃に対する対策が導入されます。メジャーなアプリケーションはタイミング攻撃対策が導入されていますが、PHP 5.6から簡単に対策できるようになります。 タイミングセーフな文字列比較関数はhash_equalsとして実装されました。 http://php.net/manual/es/function.hash-equals.php タイミング攻撃とは タイミング攻撃とは、コンピュータが動作する時間の違いを測って攻撃する、サイドチャネル攻撃(副作用攻撃)と呼ばれる攻撃手法の1つです。HTTPSの圧縮の副作用を利用したサイドチャネル攻撃が有名です。 コンピュータの動作時間、温度、音、電子ノイズ、電力使用量など、アルゴリズム自体の脆弱性を攻撃するのではなく副産物を利用する攻撃方法でサイドチャネル攻撃の一種です。

    PHP本体でタイミング攻撃を防御できるようになります
  • タグ検索するならPostgreSQLで決まり!

    (Last Updated On: 2018年8月13日)PostgreSQL Advent Calender 2013、13日目のエントリです。 表題の通り「タグ検索するならPostgreSQLで決まり!」です。 追記:JSONの場合はPostgreSQLのJSONB型を利用してタグ検索を行うを参照 RDBはタグが苦手 WebアプリではRDBでは取り扱いづらいデータを取り扱う事がよくあります。タグの管理・検索はその一つです。 RDBはタグ情報の管理・検索をしっかりやれますが、どちらかと言うと苦手な分野です。しかし、PostgreSQLの 配列 GIN(Generalized Inverse Index – 転置インデックス) を使うと簡単かつ高速に処理できます。 PostgreSQLを使うとタグ検索が簡単・高速に実現できますが、Googleで「タグ検索 PostgreSQL」と検索しても

    タグ検索するならPostgreSQLで決まり!
    hilde
    hilde 2013/12/13
  • セッションアダプション脆弱性がないセッション管理が必要な理由

    (Last Updated On: 2018年8月18日)徳丸さんから「ブログ読みました。サンプルも動かしました。問題は分かるのですが、セッションアダプションがないPHPだと、何が改善されるのかが分かりません。教えて下さい 」とあったのでツイッターで返信するには少し長いのでこちらに書きます。まだ直していない脆弱性を詳しく解説するのはあまりよくないのですが、今なら影響を受けるアプリはほぼないと思うので構わないでしょう。 まず前提として、Webサーバと同様にJavascriptからもクッキーが設定できます。Javascriptインジェクションに脆弱なコードがサイトに1つでもあると、サイト上のセッションアダプション脆弱性をもつアプリへの攻撃が可能になります。この攻撃を緩和する対策もありますが、それはそれ、これはこれなので省略します。 セッションアダプションに脆弱なセッション管理機構で困る代表的な

    セッションアダプション脆弱性がないセッション管理が必要な理由
  • DOMベースXSSの検出ツール

    (Last Updated On: 2011年11月3日)久しぶりにブログを更新すると色々書きたくなるものですね。ということでまだこのブログでは紹介したことがないDOMベースXSSのオープンソースツール、DOMinatorを紹介します。最近の商用ツールも類似の機能をサポートしています。 http://code.google.com/p/dominator/ DOMベースXSS: JavascriptはDOMを利用してHTMLを動的に変更できます。この機能を利用するとブラウザ側のJavascriptで動的に変化するWebサイトを構築できます。HTMLなどを修正するとデータにユーザが入力が含まれているとプログラマが意図しないJavascriptが実行できます。 要はクライアントサイドのJavascriptインジェクション攻撃の事です。 Javascriptは非常に柔軟な言語で便利な反面、セキュ

    DOMベースXSSの検出ツール
    hilde
    hilde 2011/12/29
  • PHP:既知のセキュリティ脆弱性 – Session Adoption

    (Last Updated On: 2018年8月13日)追記:より新しい情報については間違いだらけのHTTPセッション管理とその対策をどうぞ。 PHPには広く知られているにも関わらず放置されている既知のセキュリティ脆弱性が幾つかあります。その一つがセッションモジュールのセッションアダプション(Session Adoption)脆弱性です。この脆弱性は現在広く利用されているWebアプリケーションの安全性に、非常に大きな影響を与える脆弱性です。 セッションアダプション脆弱性とはセッション固定化攻撃を可能とする脆弱性の一種です。セッションアダプションに脆弱なセッション管理システムは、ユーザ(ブラウザ)が送信してきた未初期化のセッションIDを受け入れ、セッションを初期化してしまいます。PHPに限らず、RailsJavaのフレームワーク等、多くのWebフレームワークに発見されている脆弱性です。

    PHP:既知のセキュリティ脆弱性 – Session Adoption
  • ホワイトリストはどう作る?

    (Last Updated On: 2018年8月13日)まずホワイトリストの基中の基は”デフォルトで全て拒否する”であることに注意してください。全て拒否した上で許可するモノを指定しないとホワイトリストになりません。 例えば、CSPはホワイトリストで不正なJavaScriptの実行を防止する仕組みです。2016年のGoolgeの調査によると95%のCSP定義が、実際にはJavaScriptインジェクション脆弱性の防止に役立っていない、との調査結果を発表しています。原因はホワイトリストの作り方の基、全て拒否した上で許可するモノを指定する、を理解していないことにあると考えられます。1 私はいつも基的に能動的なセキュリティ対策2を選択するようにお勧めしています。能動的なセキュリティ対策とは全ての入力値の厳格なバリデーション処理であり、出力時に過剰とも言えるエスケープ処理です。入力/出力の

    ホワイトリストはどう作る?
    hilde
    hilde 2008/02/08
  • 正しいメールアドレスのチェック方法

    (Last Updated On: 2018年8月13日)正しいメールアドレスのチェック方法がちょっとした話題になっているようです。Web屋のネタ帳でも取り上げられていますが、メールアドレスのチェック方法自体は解説していません。ついでなので書いておきます。 「当に正しいメールアドレスかチェック」するには実際にメールを送信して、送信されたユーザしか知り得ない情報をユーザが知っている事により確認しなければなりません。これはWeb屋のネタ帳で解説されている通りです。 安全でより確実なメールアドレスのチェック方法 きちんと正規表現でメールアドレスをチェックするのは面倒です。しかも、RFCを守らない大手企業もあり、正規表現でチェックするのは諦めるのが妥当でしょう。 記入されたメールアドレスが正しいかチェックする手順 @でスプリット(分割)する 配列要素数が2つかチェック。NGはエラー 1つ目の要素

    正しいメールアドレスのチェック方法
    hilde
    hilde 2008/01/30
  • PHPで実装されたベイズフィルタ

    (Last Updated On: 2018年8月13日)PHPで実装されたベイズフィルタを見かけました。 http://www.atomicmpc.com.au/forums.asp?s=2&c=10&t=4466 ライセンスはGPLライセンスです。 ソースコードを見ると当然ですが半角スペースでトークンに分解しているので日語では使えません。しかし、mecabなどを使用して使えるようにするのはそう難しくありません。もともとベイズフィルタは難しいアルゴリズムではないので読むと直ぐに理解できると思います。PHPで利用できる形態素解析モジュールは幾つかあります。 しばらく前には毎日数百のコメントスパムが送信されてきていました。b2evolutionデフォルト設定でコメントのモデレートが必須化されてから時間が経過してきたので今はかなり減ってきています。必要性は減ってきてはいますが時間があったら改

    PHPで実装されたベイズフィルタ
    hilde
    hilde 2007/12/08
  • SET NAMESは禁止

    (Last Updated On: 2018年8月13日)MySQLには文字エンコーディングを変更する「SET NAMES」SQL文が用意されています。(PostgreSQLも同様のSQL文、SET CLIENT_ENCODINGがあります)この機能はSQLコンソールからは使ってよい機能ですが、アプリケーションからは使ってはならない機能です。SQLインジェクションに脆弱になる場合があります。 Ruby on Railsを読んでいて、ActiveRecordを説明している部分にMySQLの文字エンコーディングを変更する場合の例としてSET NAMESが利用されていました。アプリケーションからはSET NAMESは使ってはならない事を周知させるのは結構時間が必要かなと思いました。 PHPも5.2の途中からMySQLモジュールにlibmysqlの文字エンコーディング設定APIのラッパー関数が

    SET NAMESは禁止
  • SHA1でハッシュ化したパスワードは危険になった

    (Last Updated On: 2018年4月3日)パスワードを平文で保存するのは論外で、MD5やSHA1でハッシュ化するのは当たり前です。しかし、SHA1を2000倍早くクラックする方法などが発見され「SHA1は脆弱だ」(ちなみにMD5はもっと危険)とされてからしばらく経ちます。アメリカ政府や大手企業はSHA1は使わない、としています。 Slashdot.orgにまた載っているので更に高速化できた、ということか? 参考: RainbowテーブルによるMD5ハッシュのクラック(英語) RainbowテーブルによるSHA1ハッシュのクラック(英語) 前のエントリ PostgreSQLでSHA1 でPostgreSQLでSHA1を使う方法の一つを紹介していますが可能であればSHA512など、より強いハッシュ関数を利用したり、Saltを利用する、等の方法を採用した方が良いと思います。 備考:

    SHA1でハッシュ化したパスワードは危険になった
    hilde
    hilde 2007/01/25
    個人的なコードでsaltつけるの習慣にしてないのでこれからします。
  • QuickTime XSS Howto

    (Last Updated On: 2006年12月18日)QuickTimeを利用してXSSを行えることはMySpaceのWorm http://www.f-secure.com/v-descs/js_quickspace_a.shtml で有名になりました。 http://www.gnucitizen.org/blog/backdooring-quicktime-movies/ はQuickTimeを利用したXSSの手順を解説しています。 XSSのサンプル http://www.gnucitizen.org/blog/backdooring-quicktime-movies/sample_backdoored.mov 上記のリンクを開くとJavaScriptのダイアログ(Windows XP SP2 + Firefox2.0)が開きます。NoScript拡張等、JavaScriptを無

    QuickTime XSS Howto
  • yohgaki's blog - PHP_SELFはそのまま出力できない

    (Last Updated On: 2018年8月13日)追記:現在のPHPでは$_SERVER[‘PHP_SELF’]はクエリ文字列(?以降のクエリパラメータ)を含みません。しかし、index.php/<script>alert(1)</script>/aaa/bbb とすることは可能です。PHP_SELFと同様の変数は以下です。 $_SERVER[‘PATH_INFO’] $_SERVER[‘PATH_TRANSLATED’] 時々見かけるのでブログでも問題を指摘します。 PHPの$_SERVER配列に入っているPHP_SELF要素はPATHINFOも含めてしまうため、そのまま出力するとXSSに脆弱になる場合があります。 phpinfo()がXSSに脆弱だ、と指摘する人がいるので(元々phpinfo()の出力は管理者・開発者のみ参照できるようにしておくべきですが..)現在のPHPはPH

    yohgaki&#39;s blog - PHP_SELFはそのまま出力できない
    hilde
    hilde 2006/02/28
  • Open Ajax

    (Last Updated On: 2018年8月14日)Ajax普及目指すオープンソースプロジェクト「Open Ajax」をIBMやその他の会社がはじめた、とニュースリリースがりました。 ApacheとMozilla Pulicライセンスに基づき公開されるAjaxランタイムツールキットを提供するZimbraのサイトにデモアプリケーションがありました。メールとスケール管理のアプリケーションですが、ここまでやれば従来型のクライアントサーバ型アプリケーションと変わらない状態です。 http://zimbra.com/products/hosted_demo.php 「Skip Registration, go to Demo」ボタンを押せばデモアプリケーションを利用できます。日語対応も考えられている(?)らしく日時は日語で表示されていました。 オープンソース化されるツールキットはこちら。

    Open Ajax
    hilde
    hilde 2006/02/06
  • 1