タグ

ブックマーク / tumblr.tokumaru.org (7)

  • 勝手に解説:大垣流バリデーション入門

    大垣さんは、かねてより「バリデーションは重要なセキュリティ対策である」という持論を持っておられます。そして、それは「世界の常識」と指摘されています。 「入力バリデーションはセキュリティ対策である」は世界の常識です。少なくとも大多数の世界のセキュリティ専門家は「入力バリデーションはセキュリティ対策」は常識だと考えています。 第45回 入力バリデーションはセキュリティ対策 :なぜPHPアプリにセキュリティホールが多いのか?より引用 私は「バリデーションはセキュリティ対策とは言えない」と思っているのですが、実は「世界の常識」という点に異論があるわけではなくて、話は逆なのです。「従来からバリデーションはセキュリティ対策としてとらえられてきて『世界の常識』となっているが、実はそれはおかしいのではないか?」という問題提起をしているのです。なので、「世界の常識だろ」と言われても、それでは反論になっていま

    勝手に解説:大垣流バリデーション入門
  • 大垣さん流の「入力ミス」と「入力バリデーションエラー」を区別するスクリプトを書いてみた

    大垣さんとの「バリデーション論争」において、大垣さんは「入力ミス」と「入力バリデーションエラー」を区別するものだと主張されています(参考:「入力ミス」と「入力バリデーションエラー」の違いに関する大垣さんと徳丸のやり取り)。 しかし、「入力ミス」と「入力バリデーションエラー」の区別の方法が分からないので伺ったところ、大垣さん曰く @ockeghem もしプログラマが「入力ミスと入力バリデーションエラーの区別ができない」という事は「プログラマが入力仕様を理解していない」という事です。正直、何が難しいのか理解できません。 http://t.co/Xkzs44zIJw ということでしたが、ブログエントリを書いていただきました。 簡単な問題です。プログラムが「想定する入力」以外は「妥当な入力」ではありません。プログラムを作っているプログラマが想定する入力を明確に理解していないなら、どのような入力仕様

  • もう入力値検証はセキュリティ対策として *あてにしない* ようにしよう

    スタックオーバーフロー対策をする場合、関数の入口でチェックすれば大抵対策可能なんだけど、それだと対策漏れの可能性があるから、例えば、strcpyの代わりにstrncpyあるいはもっと高機能な文字列関数を使うことが当然になってきました。 これは、入口でのチェックだと漏れやすいから、脆弱性が発生するその箇所で対策するという考え方にシフトしているのだと私は考えます。 Webアプリケーションの場合も同様で、XSSやSQLインジェクションの対策は、脆弱性の発生する箇所、すなわち、HTMLの生成とか、SQLの呼び出しの時点で行います。いや、これらは「セキュリティ対策」ではなく、全ての文字を扱うために必要なエスケープ処理に過ぎないので、例がよくないですね。例えば、パストラバーサル脆弱性対処のためのファイル名の確認は、ファイルをオープンする直前(ファイル名を使う直前)に行うべきだ、という考え方です。 スタ

    もう入力値検証はセキュリティ対策として *あてにしない* ようにしよう
  • データベースのデータを信用してはいけないか?

    ネットを見ていたら「問題集 : PHP技術者認定・初級」というのを見つけました。 【セキュリティ対策】 セキュリティ対策について、正しいものを1つ次の記述の中から選択せよ。 入力のフィルタリングのみ行う。出力のエスケープのみ行う。少なくとも、入力のフィルタリングと出力のエスケープを行う。データベースのデータは信頼してよい。ITトレメ PHP技術者認定・初級 - @IT自分戦略研究所より引用 過去問なのか練習用の想定問題なのかわかりませんが、「問題提供: PHP技術者認定機構」とあります。 PHPアプリケーションの問題ですから、Webアプリケーションセキュリティの問題ですね。茫漠とした問題文ですが、実は正答を得るのは難しくありません。選択肢から技術的な中味を抜いてみると下記になります。 ○○のみ行う。○○のみ行う。少なくとも、□□を行う。○○は信頼してよい。このように並べてみると、○○の選択

    データベースのデータを信用してはいけないか?
    escape_artist
    escape_artist 2013/04/15
    バトルの匂いがするよ
  • 社畜論に学ぶ「プロブロガー」の文章術

    それでは、なぜ読んで不快になるかですが、以下のように「図星だから怒るのでしょう」という意見もあります。 おもしろい。社畜の人はあたってるから怒るんでしょうね。w / 社畜と家畜の共通点 ikedahayato.com/index.php/arch… @ihayatoさんから しかし、そうとは限らないと思います。このエントリが不快になる理由は、文章が曖昧だからです。 元エントリは以下のように始まっています。 巷でよく言う「社畜」って何なんでしょうね?と思ったので、家畜との共通点を洗い出してみましたよ。 飼われている家畜は牧場主に飼われています。【後略】 社畜と家畜の共通点を列挙する形で始まっているのですが、この文章には以下の二通りの解釈が可能です。 日のサラリーマン、すなわち社畜は、家畜と共通する以下の性質があるサラリーマンのうち、家畜と共通する以下の性質を持つものを社畜と言う1. と受け

    社畜論に学ぶ「プロブロガー」の文章術
  • 書式文字列によるSQLインジェクション攻撃例

    以下のようなコードがあり、nameは画面入力なのでSQLインジェクションが起こるのでは? と作成者に確認したところ、"%s"してあるから大丈夫との返事をもらいました。 ネット調べるとmysql_real_escape_stringでエスケープしてから"%s"で変換すれば大丈夫といった内容は見つけたのですが、mysql_real_escape_stringなど不要との返事をもらいました。 なぜ?と聞くとそういうものだとしか回答がありません。 ひどいですね。これは質問者が正しく、sprintfの%sで受けただけでは、SQLインジェクション脆弱性となります。 しかし、どうしてこのような間違った知識が出てきたのかと考えるに、数値を%dで受ける場合と混乱したのではないかと憶測しました。数値の場合、書式%dで受けていれば、仮に攻撃コードが入力されたとしても、%dで整数に強制変換されるので、SQLインジ

    書式文字列によるSQLインジェクション攻撃例
  • Yahoo!の『秘密の「質問」と「答え」』の変更方法

    Yahoo!Japan IDは、現在は新規登録時に必ず『秘密の「質問」と「答え」』の登録が義務づけられており、パスワードリセットなどで用いられます。 そして、この『秘密の「質問」と「答え」』は、いったん登録すると変更することができません。 秘密の「質問」と「答え」の内容は、Yahoo! JAPAN IDの登録後に、確認および変更できません。 http://help.yahoo.co.jp/help/jp/edit/edit-43.html しかしながら、『秘密の「質問」と「答え」』の質問の方は、あらかじめ用意された選択肢から選ぶようになっており、第三者が予測できそうなものが多いのが現状です。 子どものころのあだ名は?初めて買った曲のタイトルは?初恋の人の名前は?子どものころの夢は?座右の銘は?初めて飼ったペットの名前は?祖父の下の名前は?生まれた病院は?初めて行った海外の国・地域は?小学1

  • 1