Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP+DB

504 views

Published on

第4回 ABC用資料
PHPでDB(MySQL)につなぐ方法、実行する方法について学びます。

Published in: Software
  • Be the first to comment

  • Be the first to like this

PHP+DB

  1. 1. 第4回 PHP+DB AlphabetBootCamp
  2. 2. アジェンダ  環境  今回の範囲  PDOとは  PDOの使い方  セキュリティ  実際に試してみよう
  3. 3. 今回の範囲 PHPでDB(MySQL)につなぐ方法を学び、 実際にDBに対してデータの追加・取得を行うところまで
  4. 4. 環境(Environment) 実行環境  OS: Windows10  PHP: PHP7.0.13 ※ 他のOS,バージョンでも問題ないです
  5. 5. PDO(PHP Data Objects)とは 標準で用意されているDBに接続するための仕組み 特徴  PHPにおけるDBにアクセスする方法の主流  どのDB製品を使っても同じ使い方が可能 ⇒とりあえずPDOを使う!
  6. 6. PDOの使い方 PDO使うために必要なパラメータは3つ 1. DSN:データベースに接続するための接続情報 2. DBのユーザ名:デフォルトはroot 3. DBのパスワード:デフォルトは未設定 ⇒おまじない的に設定でOK! ※ 他にもオプションを渡せますが、割愛…
  7. 7. DSNの設定 MySQLのDNS 書式 mysql:dbname=データベース名;host=ホスト;port=ポート データベース名: 作成したデータベース名 ホスト: ローカルの場合は、localhost(もしくは127.0.0.1) ポート: 初期値は「3306」(ただし、省略可能) example. mysql:dbname=abc;host=localhost;port=3306
  8. 8. PDOオブジェクトの生成 <?php // DNS $dns = 'mysql:dbname=abc;host=localhost;port=3306;charset=utf8’; // DBのユーザ名 $dbUser = 'root’; // DBのパスワード $dbPassword = '’; // PDOオブジェクトの生成 $pdo = new PDO($dns, $dbUser, $dbPassword);
  9. 9. SQLを発行してみよう これでDBとの接続はOK! あとはSQLを発行して、データの追加や取得を行う
  10. 10. SQLを発行してみよう - SELECT <?php // ユーザ情報を全て取得するSQL $sql = 'SELECT * FROM users’; $stmt = $pdo->query($sql); foreach ($stmt as $row) { echo $row['name’] . '<br>’; } データの取得はqueryメソッド
  11. 11. SQLを発行してみよう – INSERT/UPDATE/DELETE <?php // ユーザーを追加 $sql = “INSERT INTO users (name) VALUES('澤田 諒')"; $stmt = $pdo->prepare($sql); $stmt->execute(); データの追加・更新・削除はexecuteメソッド
  12. 12. セキュリティ  忘れてはいけないのがセキュリティ  Webは全世界に対して公開される!  セキュリティが甘いと、個人情報が漏れたり…  ユーザにとっても、販売会社にとっても、開発会社にとっても 大変なことに!!!
  13. 13. セキュリティを怠るとどうなるか。 あるインテリアショップの事例で、 SQLインジェクション対策が十分でないという理由から開発会社 が提訴された。 ⇒開発会社が約3,232万円を支払うという判決 必ず、SQLインジェクション対策をしよう! SQLインジェクション対策もれの責任を開発会社に問う判決 -徳丸浩の日記 http://blog.tokumaru.org/2015/01/sql.html
  14. 14. SQLインジェクションとは? SQLインジェクション(英: SQL Injection)とは、アプリケー ションのセキュリティ上の不備を意図的に利用し、アプリケー ションが想定しないSQL文を実行させることにより、データベー スシステムを不正に操作する攻撃方法のこと。また、その攻撃を 可能とする脆弱性のことである。[1] SQLインジェクション – Wikipedia https://ja.wikipedia.org/wiki/SQL%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
  15. 15. SQLインジェクションの例 SQLにユーザからの入力を直接SQLに埋め込むと、 意図しないSQLが実行される可能性がある たとえば SELECT * FROM users WHERE name = ‘(入力値)’ というSQLだと、入力値に’t’ or ‘t’ = ‘t’を入力されると SELECT * FROM users WHERE name = ‘t’ OR ‘t’ = ‘t’; というSQLが発行され、他のユーザ情報が表示されてしまうことになる
  16. 16. SQLインジェクション対策 バインド機構を利用して、ユーザの入力値を埋め込む Example $sql = ‘SELECT * FROM users WHERE name = :name’; $stmt = $pdo->prepare($sql); // 値の設定 $stmt->bindValue(‘:name’, $name, PDO::PARAM_STR); $stmt->execute(); :nameに$nameを 埋め込む
  17. 17. 実際にPHPからDBに繋いでみよう! 第3回勉強会ではCSVに内容を保存する掲示板を作りました 今回は、CSVからDBに置き換えてみましょう!
  18. 18. おすすめ本(?) 「詳細! PHP7 + MySQL」 価格: 3,218円(Kindle版: 966円) ※ Amazonの販売価格 おすすめポイント  PHP7対応!
  19. 19. おすすめ本 「体系的に学ぶ 安全なWebアプリ ケーションの作り方 脆弱性が生まれ る原理と対策の実践」 価格: 3,456円(Kindle版: 3024円) ※ Amazonの販売価格 おすすめポイント  脆弱性を実際のコードで試しながら、 攻撃の仕方・対策が学べる!

×