Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SQLインジェクションからみるWebアプリケーションセキュリティ入門/sqlinjection

fnya
February 21, 2020

 SQLインジェクションからみるWebアプリケーションセキュリティ入門/sqlinjection

fnya

February 21, 2020
Tweet

More Decks by fnya

Other Decks in Programming

Transcript

  1. SQLインジェクションの基礎知識 n SQLインジェクションの仕組み u SQLの標準規格では⽂字列はシングルクォートで囲みます u 以下のSQLで社員番号をパラメータで指定するとします u パラメータに 「1’;DELETE

    FROM 社員 --」を指定すると、 DELETE ⽂が実⾏されてしまいます SELECT * FROM 社員 WHERE 社員番号 =‘パラメータ’ SELECT * FROM 社員 WHERE 社員番号 =‘1’;DELETE FROM 社員 --’
  2. SQLインジェクションの基礎知識 n SQLインジェクションの対策(PHP) <?php try { $dsn = "mysql:host=localhost;dbname=DBName;charset=utf8“; $dbh

    = new PDO($dsn, “user”, ”password”); // 静的プレースホルダを指定 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // エラー発⽣時に例外を投げる $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //プリペアドステートメント $sql = “SELECT * FROM 社員 WHERE 社員番号 = ?”; $stmt = $dbh->prepare($sql); //パラメータ $id = “A003”;’ //パラメータのバインド $stmt->bindParam(1, $id, PDO::PARAM_STR); $stmt->execute(); //取得した値の出⼒ while ($row = $stmt->fetch()) { for ($col = 0; $col < 4; $col++) { echo $row[$col]; } echo “¥n”; } } catch (PDOException $e) { echo $e->getMessage(); }
  3. SQLインジェクションの注⽬すべき判例① u 概要 X社が運営するECサイトに対して、外部からの不正アクセスにより、最⼤7316件のクレジッ トカード情報が漏洩した。X社は謝罪、対応、調査等の費⽤、売上減少による損害等に関して、 システム開発をしたY社に対して、委託契約の債務不履⾏にもとづき1億円余りの損害賠償を 請求、東京地裁に起訴した。結果、原告が勝訴し、東京地裁は約2262万円の損害賠償⾦を⽀ 払うよう被告に命じた。 u ポイント

    u X社(原告)はセキュリティ対策について特に指⽰はしていなかった u SQLインジェクション対策を怠ったことは重過失であると認定 u 損害賠償について個別契約に定める契約⾦額の範囲内とする損害賠償責任制限があった u Y社(被告)は 約2262万円の損害賠償⾦を⽀払うことになった(売上は約900万円) ・SQLインジェクション対策もれの責任を開発会社に問う判決 | 徳丸浩の⽇記 https://blog.tokumaru.org/2015/01/sql.html ・クレジットカード情報の漏えい事故の責任 東京地判平26.1.23判時2221-71 https://itlaw.hatenablog.com/entry/20141026/1414327403
  4. 必須⽂献 u 以下の資料はWebアプリケーション開発者は必読です u 安全なウェブサイトの作り⽅ 第7版 u https://www.ipa.go.jp/security/vuln/websecurity.html u IPAが無料で公開しているWebアプリケーションセキュリティの⼊⾨書(PDF,

    115⾴) u 別冊「安全なSQLの呼び出し⽅」も必読です u 「徳丸本」として親しまれている以下の書籍も必読でしょう(667⾴) u 体系的に学ぶ 安全なWebアプリケーションの作り⽅ 第2版 u https://www.amazon.co.jp/dp/4797393165/ 画像はAmazonより