ネタもと:「プログラミング解説書籍の脆弱性をどうするか」への反論のようなもの2(GIJOE氏)
ここで言いたいことは、「パケット盗聴よりも、XSSなどの方がはるかに現実的な攻撃方法であり、緊急性がある」ということだけなのですが、文章が良くなかったかもしれません。
えっと、そうなんでしょうか?まぁ、「盗聴」は直接的な攻撃とは、ちょっと違うかもしれません。しかし、XSS だと、そのサイト(環境)用に書き直す必要がありますが、パケット盗聴はツールさえ用意すれば(そしてそれは簡単に手に入る)、手を加える必要はありません。もっとも、 ADSL などで、パケット盗聴が出来るのかどうか、それはやったことがないのでわかりませんが。
本題
ただ、これがどこで書かれているか、お判りでしょうか。 P.28 まさに導入部分です。
(中略)
ここはPart3-2のつなぎにもなっていますし、そこの対策3にも書いているように「必要のないものは最初から受け取らない」方がむしろベターです。<>'"& を受け取る型の方が例外であると考えるのがよいでしょう。
(中略)
書籍後半のP.143になって、それまでのサンプルコードをすべて否定する、というとんでもない反則技をやっているわけですが、最初から順を追って読んできていただけた方なら、ある程度納得していただけると思います。テーマをぼやけさせないことは、他者に情報を伝えるためにもっとも重要なことの一つです。
テーマをぼやけさせない
というのは、確かに大事です。該当の Part2 がどの様な内容なのかわかりませんが、最初から順を追って
書かれているなら、基礎について書かれているのでしょう。例えば、小学生にいきなりかけ算は教えません。数の概念を教え、1の次が2、その次が3ということを教え、その順番が理解できている前提で、足し算、引き算を教えます。そして、足し算の応用であるかけ算、かけ算から発展して割り算を教えます。このような教え方は大事だと思います。
ただ、今回相手にするのは、そういう概念から教えなければならない相手なのでしょうか?そうであったとして、それならばそれで、Web アプリケーションが「常に攻撃に曝されている」ということを教えることは、基礎だと思います。こんにち、Web アプリケーションの開発現場においては、ライティング セキュア プログラムは、基礎のひとつだと思います。私は、高木さんの「貧民的プログラミング」というのは、そういう「基礎をおろそかにする」ということも含まれると思います。
そして、私が一番心配に思うのは、自分の本を読むスタイルを考えてのことですが、最後まで読んでからコーディングにかかるか、ということです。私が本屋で本を探すとき、目的があります。パラパラとめくって、その目的が書いてあるかどうかを確認します。書いてあれば購入します。そして、その書いてあったところだけを参照します。また、読みたい本であっても、それこそ最初から順を追って読んで
いきますし、その途中で有用な書き方があったら、その場から取り入れます。出来るなら、以前のぶんも書き直します。ところで、この本は、仕事の片手間に一日で読み終われるほどの分量なのでしょうか?
さて、私はGIJOE氏の該当する本を読みながら、場当たり的なコーディングは勧めていません
ということに気が付くでしょうか?おそらく、気が付くでしょう。納品して、簡単には修正できないようになってから、ですが。よしんば納品前に気が付いたとしても、修正箇所を洗い出したり、修正をして、修正を確認するために相当な工数をかけなければなりません。おそらく思うでしょう。「だったら最初に書いておいてよ」。場当たり的なコーディングは勧めていません
ということならなおさら、最初から書いておいて欲しいと思います(人のことは言えませんが。「やるべきことをやろうよ」へのコメント参照)。あとになってそれまでのサンプルコードをすべて否定する
のは、ご自身でおっしゃるようにとんでもない反則技
ではないでしょうか。
このエントリのタイトルを、「コミュニティに見る脆弱なコード」としています。これは、内省を含んでいます。
コミュニティでされる質問の多くに対して、私はほとんどの場合脆弱なコードを提示しています。ここの記事や、サイトに載せているコードも、脆弱性を含んだコードです。サイトに載せているのは、「ノート」つまり、自分の「防備録」的な意味を含んでいます。質問に対する回答は、「とりあえず質問事項に応えられればいいや」と、軽い気持ちがあります。と、言い訳しておきます。
書籍のようにあとからページ(時間)を割いて、「先に提示したコードには脆弱性がある。本当はこう書かなければいけない」と書いたとして、それは有効でしょうか。あるいは、有効かもしれません。あとから検索してきた人はそれを見て、よりセキュアなコードをコピーしていくかもしれません。しかし、質問した本人に、それが伝わるかどうかは、あやふやです。自分の問題が解決したと思った瞬間、その後に付いたレスポンスを見に来ない人もいます。このブログも同じです。1/5の「やるべきことをやろうよ」と、1/12の「じゃぁ、どうすりゃいいのさ」は修正を入れているのですが、RSS には修正が上がっていないんですね。なので、RSS リーダで読んでいる方は、修正されていることに気が付かない、と。
このように、あとから情報を出しても、有益であるはずの情報が参照されない可能性があると思います。高木さんの指摘は、そういうことも含まれているのではないでしょうか。
出来るだけ、「貧民的プログラミング」なコードを提示することがないように、気をつけたいと思います。
投稿日時 : 2006年1月24日 6:32