ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

「徳丸先生に怒られない動的SQLの安全な組み立て方」を聞いてきた!

2015-10-06 00:33:51 | ネットワーク
10月3日に、PHPカンファレンス2015に行ってきた!話の続き


「脆弱性があったとき、その責任は発注者?開発者-判決では開発者」という話を聞いてきた!
http://blog.goo.ne.jp/xmldtp/e/3a0b8abaacb7feab2a9d1646735d8f44

の中に、「どうすればよいかは、午後へ」とあるけど、その午後の話

「徳丸先生に怒られない動的SQLの安全な組み立て方」

をメモメモ



・発表の背景:裁判と損害賠償
  SQLインジェクションの裁判
 甚大な被害額
  4800万~1億円

・目的
 SQLインジェクションが起こる新の原因と起こさない方法
 →プレースホルダを使えより

・なぜSQLインジェクションが発生するか
  エスケープしろ!
  プレースホルダーを使え!
 プレースホルダーを使ってもSQLインジェクション
 →文字列連結でSQLを組み立てるから
  これこそが真の原因
  変数の埋め込みも同じ


・なぜ文字列連結でSQLをつくるのか?
 プレースホルダーではできないことがあるから
   要素数が同的に変わる
 SQLを文字列で指定できてしまうから


・SQLインジェクションを防ぐには
 ・文字列連結を使わない方法で動的SQLを組み立てる
 ・SQLもじれるではない方法でSQLを指定できるようにする

・SQLインジェクションが発生する本当の原因は
 ライブラリやSPIのインターフェースに
 欠陥があるからである
 間違いを誘発するものを使い続ける限りなくならない

・SQLテンプレート
 SQLを生成するためのテンプレート
 SQLインジェクションが発生しない(原理上は)

・SQLTempl8
 コンセプト実装

・なぜSQLテンプレートだと発生しない
 文字列連結が書けない

・is not distinct from <=>

・やっぱり埋め込み使いたい
 テーブル名かカラム名

・SQL構文木
 木構造で表現したデータ
   通常は専用の専用のライブラリ
   O/Rマッパーを使う
 値に応じて自動的に変換できる
  →悪意ある文字列をうけとっても。
   意図しない変更はできない

まとめ
・動的SQLを作るのに文字列結合を避ける
・本質的にはAPIやインターフェースの欠陥
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 国産ロボットプログラミング... | トップ | マイナンバーがシスログやDB... »
最新の画像もっと見る

ネットワーク」カテゴリの最新記事