今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた − @IT(情報元のブックマーク数)

また上野宣か!が、その言葉の発信元高木浩光先生にSQLインジェクション対策でインタビューしています!

「安全なSQLの呼び出し方」というSQLのセキュリティに焦点を当てたドキュメントが、2010年3月にIPA独立行政法人情報処理推進機構)から公開された。
これは2006年1月から提供されている、Webサイト開発者や運営者向けのセキュアWebサイト構築のための資料「安全なウェブサイトの作り方」の別冊として書かれたものである。「安全なウェブサイトの作り方」が92ページなのに対して、SQLインジェクションについてだけで40ページもの分量がある。なぜこんなに分厚いのだろうか。

今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた:Security&Trust ウォッチ(60) - @IT

プリペアドステートメントを使用。

SQLの実行は、SQL文を構文解析する作業と、それを解釈する作業に分かれる。プリペアド・ステートメントというのは、この構文解析DBMS側で先に済ませておき、そこにパラメータを当てはめて繰り返し使うことで、処理効率を高めるために活用されるものだ。
プリペアド・ステートメントを使用していれば、どんなパラメータが与えられても構文解析は変わらないので、結果的にSQLインジェクションによってSQL文の構文が破壊されることは起きない。

今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた:Security&Trust ウォッチ(60) - @IT

筆者は、数値パラメータもシングルクオートでくくるという対策を書いていたが、この対策も正しくないそうだ。
エスケープ処理の説明は、SQLインジェクションの原理を説明するのには必要だが、解決策の説明には別の視点が必要。攻撃のパターンからそれを回避する方法を考えるのではなくて、そもそも本来あるべき正しい実装はどういうものかを考えてもらいたい」と高木氏は言う。

今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた:Security&Trust ウォッチ(60) - @IT

サニタイズ言うなキャンペーンw

サニタイズ」という言葉は人によってとらえ方が違っていたりして、なかなか正しい考え方が普及しなかった。そこで高木氏が始めたのが「サニタイズ言うなキャンペーン」だった。対策方法を「サニタイズ」という言葉を使わずに説明しようとすれば、間違った対策と正しい対策の違いに気付かされるはずと考えたという。それから5年近くたったいまでは、少なくとも日本では「サニタイズ」的発想はかなり排除することができたと感じていると氏は言う。

今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた:Security&Trust ウォッチ(60) - @IT

握手する写真撮れなかったwwwwwwwwwwwwww

今回の取材では仲良く握手する写真は撮らせてもらえなかったが、「間違った対策を普及させるな」という高木氏の思いには触れることができた。筆者はこれからも高木氏の舌鋒(ぜっぽう)を恐れつつも、正しいセキュリティ対策を世に広めていきたい。

今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた:Security&Trust ウォッチ(60) - @IT

screenshot