top / index / prev / next / target / source

2005-06-09 diary: XMLインジェクションという脆弱性観点

いがぴょん画像(小) 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

XMLインジェクションという脆弱性観点

インジェクション攻撃とかサニタイジングとかいう用語に業務上 強制的に携わっている今日このごろ…

XMLインジェクションという脆弱性観点

ここのところ インジェクション攻撃サニタイジングという用語と業務上 出会うことが多く、私のなかでは強制的に流行語となっています。

実際のところ、なんだか業務の過程でインターネット関連技術のセキュリティ・コンサルティングに出会うことが多いです。なぜだろう、、、。インターネット・セキュリティ・コンサルティングに私は詳しくなるのを避けたいので、なるべくインターネット・セキュリティ・コンサルティングの仕事を回してほしく無いです

(苦笑) そんな中、下記の@ITの記事が (アタマの中では意図は理解できるのですが) 気になってしょうがなかったです。

「説明のために敢えてこのようなプログラムを提示いているのだ」ということはアタマで理解しています。私も説明用とかサンプル用として、敢えてAPIを利用せずにベタ書きすることも良くあります。連載ものになっていて、積み上げで現在のXMLベースの説明になっていることも理解します。.NET Frameworkに XML関連APIがいくつも存在していることも知っています。(以前 業務として ぎとぎとの .NET系 XML案件 (C#.NET) のプロデュースに携わったこともあるからです。.NET系のXML APIは 結構高速に動作します) 総じて、この記事の意図しているところのデザインパターンの説明のために こうやって書いていることもよく分かります。

そこまでアタマでは理解した上で、でも、どうしても「インジェクション攻撃」などという脆弱性観点に業務上強制的に携わされている身として、このサンプルプログラムが「XMLインジェクション攻撃に耐えうるのだろうか?」などということが気になって仕方がありません。(単に私の職業病的くせなのです…) べつに この記事とは別のところでも世のサンプルの SQL文を見ていても同様なのです。SQLのサンプルと可だと、パラメータ・クエリを利用しないサンプルとかを見ていても、サニタイジングが気になってどうしても反応してしまいます。ほんとうに単純に職業病みたいなものなのでしょう。SQLもXMLも、そしてHTMLも、適切にサニタイジングされているかどうか、っていうパスばかりを見てしまいます。実際の実務・業務的な立場として各種ソースコード・レビューとかに参画している際も、そんなことばっかり見ています。というかそういう時は そういうセキュリティ上の観点を持ってレビューを行うのが業務上の役目だからにほかなりません。

話はまったく別のところに飛んでいって、XMLパーサを自作してみると良くわかるのですが、XML APIの仕事で本当に大事なことのひとつは サニタイジング関連の処理です。プログラムが XMLインジェクションという脆弱性を発生させないために、適切にサニタイジングを行ってくれているのです。同様のことは Strutsタグなどにもあらわれます。あれらAPIが Servletと根本的に異なるAPI性には サニタイジング処理があります。普段 なにげに利用しているAPIも よくよく考えたらサニタイジングを行ってくれているってことは不思議なものですね…。XML APIのありがたみをかみしめました。

Jakarta Commons 再勉強

blancoCommonsに関して思考を行っていたら、ふと Jakarta Commonsをチェックしなおすことになりました。改めて見てみて、やはり Jakarta Commons は偉大です。すばらしい共通クラスがいくつもあります。その中で やはり私が気になるのは下記の2つです。

とにかく、時間をつくって Commons VFSや Commons Netを勉強してみたいです。

業務ログのたぐいは 実行時のロケール切り替えの必要は無いのかも

Webアプリの表示部分とかは 実行時にリソースバンドルを利用するなのして ロケール切り替えに対応している必要がありますが、業務ログとかシステムログのたぐいは、実は実行時に動的なロケール切り替えの対応は必要ないのかしら、などと悩み中。

世間のニュースから


この日記について