ikepyonのお気楽な日々〜技術ネタ風味〜 このページをアンテナに追加 RSSフィード

気になった日々のニュースとメモのためのリンクと戯言のページ

To Do(というかやりたいこと。何時終わることやら)
-ITIL導入のための成熟度チェックシートみたいなの(あると便利だよね?)
-Hacknotes Web Security Portable Reference和訳(出版社募集中)
-Webアプリケーションセキュリティ検査ツールの改良(一応完成)
-Hacker HighSchoolの資料の日本語訳
-OSSTMMの日本語訳
-「燃えるセキュアプログラミング」若しくは「サルでも分かるセキュアプログラミング」とか書いてみたいなぁみたいな。

これだけはチェックしときなはれ!!受入れテスト用セキュリティチェックリスト公開中
Webアプリケーションセキュリティはてなぐるーぷ(テスト中やで)
SQL Injectionの仕組みと対策公開中
RSS feed meter for http://d.hatena.ne.jp/ikepyon/
Secure Coding に入ろう!! [MLの詳細]
メールアドレス
SKUF Meeting なかのひと

2009-10-22 だるい

なんかネタが浮かんだので書いてみる。

[]何故かあたり前にならないエスケープ処理 何故かあたり前にならないエスケープ処理を含むブックマーク 何故かあたり前にならないエスケープ処理のブックマークコメント

私が3年前(2006年)に「SQL Injectionの仕組みと対策」を執筆していた時には、既にJavaScriptインジェクションやSQLインジェクション攻撃は比較的広く知られていました。この問題はそれ以前からスラッシュドットジャパンでも取り上げられていました。/.で取り上げられたので、そこら中のWebサイトユーザが被害に合うのでは?とヒヤヒヤしたので良く覚えています。

JavaScriptインジェクションやSQLインジェクション攻撃は、文字をデータとして厳格に取り扱い、特殊文字エスケープすれば無くなります。これを怠ると、システムのどこで問題が発生するか予想できなくなります。つまり、いい加減にエスケープ処理を取り扱うと安全なシステムは作れないのです。

(中略)

2006年当時、近い将来この問題は解決されると信じていました。しかし、残念ながらこの予想は全く外れました。

(以下略)

もちろん、ネタですよ、ネタ

しっかし、なくならないなぁorz

[]動的に検索項目を指定したい場合のSQLインジェクション対策 動的に検索項目を指定したい場合のSQLインジェクション対策を含むブックマーク 動的に検索項目を指定したい場合のSQLインジェクション対策のブックマークコメント

バインド機能を使えば、ほぼすべてのSQLインジェクション脆弱性を防ぐことが出来るのは良く知られていると思いたい。しかし、アプリケーション仕様によっては、検索項目やソート順を自由に変更したい場合がある。この場合、バインド機能では残念ながら対応できない。

そこで、以下のようなSQL文を組み立てることがあるのでは無いだろうか?

sql = "select * from table1 where " + (入力データ1) + "= ? order by " + (入力データ2) + ";";

「(入力データ*)」はここでブラウザから渡されたデータとする。この場合、いくらバインド機能使ってても、「(入力データ*)」の妥当性チェックがなされていなければSQLインジェクションが起こってしまう。

では、こうすればいいか?

sql = "select * from table1 where ? = ? order by ?;";

これは検索項目が文字データとし取り扱われるため、目的のことと違ってしまう。

検索項目を自由に指定できるようにし、安全にSQLを組み立てるには以下のようにすればよいと思う。まあ、入力値チェックをやってりゃいいんだけど、それを忘れたときのために・・・

param={"field1", "field2", "field3"};

sql = "select * from table1 where " + param[(入力データ1)] + "= ? order by " + param[(入力データ2)] + ";";

検索目名、やソートキーはテーブルに存在するものしか存在しないのであるから、それらすべてを配列に格納し、配列の添え字をパラメータとして指定するようにすれば、数値チェックだけで済むので、非常に楽になると思う。

こういったロジックって使ってないことがたまにあるような?

トラックバック - http://d.hatena.ne.jp/ikepyon/20091022

2009-10-05 今一自分に合わないw

[]セッションIDって? セッションIDって?を含むブックマーク セッションIDって?のブックマークコメント

http://b.hatena.ne.jp/into_the_blue/20091001#bookmark-16421068

語弊がある言い方だけど、セッションIDってそもそもユーザ認証ではなく、ユーザ識別だと思う。

セッションが生きている場合に限り、どのユーザリクエストを送信しているのかを識別するものであって、そのユーザが本人かどうかを確認する認証ではない。

なので、セッションIDを含んだURLリンクとして貼り付けると、セッションが生きている間、その人と認識されるのは当たり前。

今回の大本の問題のケースでは、セッションの維持時間をある程度短くするとか、するべきだったんだろうなぁ。

まあ、それもこれもDocomoが<追記>一部の端末で<追記>未だにCookie対応していないのが原因なんだが。

GateWayCookie付加するようには出来ないのかなぁ?システム上大変だろうけど・・・

ockeghemockeghem 2009/10/05 17:17 >Docomoが未だにCookie対応していないのが原因
この書き方は誤解を与えるような。今年の夏モデル以降の機種は、Cookie対応しています。ゲートウェイでCookie対応すると、SSLの場合に対応できないという言い訳は一応あるかと思います。

ikepyonikepyon 2009/10/05 17:42 あー確かに。それを忘れてました

トラックバック - http://d.hatena.ne.jp/ikepyon/20091005

1900 | 01 | 06 |
2003 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 02 | 03 | 04 |
2011 | 01 | 02 |