Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
第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の販売価格
おすすめポイント
 脆弱性を実際のコードで試しながら、...
Nächste SlideShare
Wird geladen in …5
×

PHP+DB

509 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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

×