Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
第4回 PHP+DB
AlphabetBootCamp
アジェンダ
 環境
 今回の範囲
 PDOとは
 PDOの使い方
 セキュリティ
 実際に試してみよう
今回の範囲
PHPでDB(MySQL)につなぐ方法を学び、
実際にDBに対してデータの追加・取得を行うところまで
環境(Environment)
実行環境
 OS: Windows10
 PHP: PHP7.0.13
※ 他のOS,バージョンでも問題ないです
PDO(PHP Data Objects)とは
標準で用意されているDBに接続するための仕組み
特徴
 PHPにおけるDBにアクセスする方法の主流
 どのDB製品を使っても同じ使い方が可能
⇒とりあえずPDOを使う!
PDOの使い方
PDO使うために必要なパラメータは3つ
1. DSN:データベースに接続するための接続情報
2. DBのユーザ名:デフォルトはroot
3. DBのパスワード:デフォルトは未設定
⇒おまじない的に設定でOK!
※ 他にもオプショ...
DSNの設定
MySQLのDNS
書式
mysql:dbname=データベース名;host=ホスト;port=ポート
データベース名: 作成したデータベース名
ホスト: ローカルの場合は、localhost(もしくは127.0.0.1)
ポート...
PDOオブジェクトの生成
<?php
// DNS
$dns = 'mysql:dbname=abc;host=localhost;port=3306;charset=utf8’;
// DBのユーザ名
$dbUser = 'root’;
//...
SQLを発行してみよう
これでDBとの接続はOK!
あとはSQLを発行して、データの追加や取得を行う
SQLを発行してみよう - SELECT
<?php
// ユーザ情報を全て取得するSQL
$sql = 'SELECT * FROM users’;
$stmt = $pdo->query($sql);
foreach ($stmt as $...
SQLを発行してみよう – INSERT/UPDATE/DELETE
<?php
// ユーザーを追加
$sql = “INSERT INTO users (name) VALUES('澤田 諒')";
$stmt = $pdo->prepar...
セキュリティ
 忘れてはいけないのがセキュリティ
 Webは全世界に対して公開される!
 セキュリティが甘いと、個人情報が漏れたり…
 ユーザにとっても、販売会社にとっても、開発会社にとっても
大変なことに!!!
セキュリティを怠るとどうなるか。
あるインテリアショップの事例で、
SQLインジェクション対策が十分でないという理由から開発会社
が提訴された。
⇒開発会社が約3,232万円を支払うという判決
必ず、SQLインジェクション対策をしよう!
SQL...
SQLインジェクションとは?
SQLインジェクション(英: SQL Injection)とは、アプリケー
ションのセキュリティ上の不備を意図的に利用し、アプリケー
ションが想定しないSQL文を実行させることにより、データベー
スシステムを不正に...
SQLインジェクションの例
SQLにユーザからの入力を直接SQLに埋め込むと、
意図しないSQLが実行される可能性がある
たとえば
SELECT * FROM users WHERE name = ‘(入力値)’
というSQLだと、入力値に’t...
SQLインジェクション対策
バインド機構を利用して、ユーザの入力値を埋め込む
Example
$sql = ‘SELECT * FROM users WHERE name = :name’;
$stmt = $pdo->prepare($sql...
実際にPHPからDBに繋いでみよう!
第3回勉強会ではCSVに内容を保存する掲示板を作りました
今回は、CSVからDBに置き換えてみましょう!
おすすめ本(?)
「詳細! PHP7 + MySQL」
価格: 3,218円(Kindle版: 966円)
※ Amazonの販売価格
おすすめポイント
 PHP7対応!
おすすめ本
「体系的に学ぶ 安全なWebアプリ
ケーションの作り方 脆弱性が生まれ
る原理と対策の実践」
価格: 3,456円(Kindle版: 3024円)
※ Amazonの販売価格
おすすめポイント
 脆弱性を実際のコードで試しながら、...
Prochain SlideShare
Chargement dans…5
×

PHP+DB

508 vues

Publié le

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

Publié dans : Logiciels
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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の販売価格 おすすめポイント  脆弱性を実際のコードで試しながら、 攻撃の仕方・対策が学べる!

×