CMP2-4PDO2b.pptx

Similar documents
CMP演習

学 習 目 標 SQLインジェクションについて 理 解 する SQLインジェクションの 実 験 をする SQLインジェクション 対 策 について 理 解 する インターネットに 公 開 する 際 の 対 策 について 理 解 する

Microsoft Word - サンプル _データベースアクセス_.doc

<4D F736F F F696E74202D E A B D682CC91E3955C93498D558C822E707074>

データベースS 演習資料

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

(Microsoft Word - Excel\211\236\227p2\217\315.docx)

情報システム設計論II ユーザインタフェース(1)

<8FEE95F AD D2E786C73>

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安

目 次 1. ログイン ユーザー 登 録 TOP 職 員...8 (1) 職 員 の 名 刺 表 示...8 (2) 職 員 の 名 刺 一 括 ダウンロード...8 (3) 職 員 の 名 刺 帳 から 検 索 検 索...9 (1) 氏 名

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

WebMail ユーザーズガイド

<4D F736F F D20819C B78AFA95DB91538C7689E68DEC90AC289

研究者情報データベース

2

技術報告会原稿フォーマット

Meet-Me Number/Pattern の 設定

目 次. WEB メールへのログイン.... メール 送 信 手 順.... メール 受 信 手 順 アドレス 帳 の 操 作 手 順 フォルダーの 操 作 手 順 メール 発 信 者 登 録 署 名 登 録 手 順 基 本 的 な 設 定

Microsoft PowerPoint - c3_op-manual.pdf

CMP2-3SQL2b.pptx

Microsoft Word - 第3章.doc

スライド 1

WEBメールシステム 操作手順書

サーバサイドスクリプトPHPを実感しよう

5-2 一 般 ユーザー 用 :メール 2 送 信 者 のリンクをクリックすると 受 信 メールの 内 容 を 見 ることができます 受 信 メール 内 容 画 面 項 目 送 信 者 宛 先 CC 本 文 (テキスト) 本 文 (HTML) メールアドレスのリンクをクリックするとアドレス 帳 へ

目 次 1. ログイン/ログアウト 1.1 ログインする p ログアウトする p.3 2. 受 講 一 覧 画 面 p.4 3. 授 業 ページの 閲 覧 3.1 授 業 ページへの 遷 移 p 授 業 資 料 を IT s class.からダウンロードする p

~ 目 次 ~ 1. 履 修 登 録 のながれ 1 2. 利 用 可 能 な 機 能 について 2 3.Web 履 修 登 録 画 面 へのログイン ログアウト 方 法 3 4. 予 備 登 録 ( 定 員 設 定 科 目 の 履 修 ) (1) 予 備 登 録 5 (2) 予 備 登 録 状 況

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編

PowerPoint プレゼンテーション

前 書 き 広 域 機 関 システム System for Organization for Cross-regional Coordination of Transmission Operators(OCCTO) rev: 商 標 類 Windows Office Excel

PowerPoint プレゼンテーション

4.5. < 参 加 表 明 書 を 提 出 する> 調 達 案 件 一 覧 の 表 示 対 象 となる 案 件 を 検 索 し 調 達 案 件 一 覧 に 表 示 させます 参 加 したい 案 件 の 調 達 案 件 名 称 行 - 入 札 参 加 資 格 確 認 申 請 / 技 術 資 料 /

Microsoft PowerPoint - KeySQL50_10g_vlo3.ppt

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

通 知 カード と 個 人 番 号 カード の 違 い 2 通 知 カード ( 紙 )/H27.10 個 人 番 号 カード (ICカード)/H28.1 様 式 (おもて) (うら) 作 成 交 付 主 な 記 載 事 項 全 国 ( 外 国 人 含 む)に 郵 送 で 配 布 希 望 者 に 交

■新聞記事

SPARQL Finder設置方法

<4D F736F F D203193FA8AD45F95CA8E86325F89898F4B315F94F093EF8AA98D AD97DF914F82CC8FEE95F182CC8EFB8F C28E8B89BB2E646F63>

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図

文科省様式3-2集計オプションマニュアル

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

ルーティング 補足資料

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt)

目 次 機 能 概 要 配 信 管 理 1. メールの 配 信 履 歴 と 予 約 を 確 認 する

Microsoft Word - 03accessデータベース演習レジメ.doc

<IE の 設 定 について> 従 来 版 をすでにご 利 用 の 方 の 場 合 互 換 表 示 設 定 がある 状 態 になっていると 思 わ れますので 必 ず 解 除 の 設 定 を 行 ってください 従 来 版 では IE の 10 以 上 では 互 換 表 示 設 定 が 必 要 でした

った 場 合 など 監 事 の 任 務 懈 怠 の 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 減 算 する (8) 役 員 の 法 人 に 対 する 特 段 の 貢 献 が 認 められる 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 加 算 することができる

SchITコモンズ【活用編】

検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

Microsoft Word - class_specification_guide_v60.doc

複合検索機能マニュアル

入札方式別操作

(表紙)

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

内 容 1. はじめに メールのログイン 初 めてのログイン メールの 受 信 / 送 信 メールの 受 信 メールの 作 成 と 送 信 メールの 新 規 作 成 メー

目 次 目 次 1 ログイン ログアウト ログインする...1 ログイン 画 面 が 表 示 されないときは?... 1 初 めてログインするときのパスワードは?... 2 初 期 パスワードを 忘 れてしまったときは?... 2 変 更 したパスワードを 忘 れてしまったときは?.

Oracle Text 概要

intra-mart Accel Platform — ViewCreator ユーザ操作ガイド   第6版  

施 設 維 持 管 理 機 能 一 覧 1. 中 長 期 保 全 計 画 作 成 2. 中 長 期 保 全 計 画 集 計 3. 点 検 記 録 情 報 管 理 4. 修 繕 履 歴 情 報 管 理 2

Microsoft Word - ML_ListManager_10j.doc

目 次 遺 失 物 管 理 プログラム 利 用 者 マニュアル 1. 動 作 条 件 遺 失 物 管 理 プログラムのインストール 運 用 の 流 れ 起 動 方 法 操 作 方 法 について 基 本 的 な 操

スライド 1

Microsoft PowerPoint - A07回目②.pptx

e-class

PowerPoint Presentation

Excel 応 用 Ⅱ Excelの 知 識 をより 深 め 今 以 上 に 活 用 し 業 務 を 効 率 化 させたい 人 にお 勧 めします また 豊 富 な 問 題 演 習 で 実 務 に 活 かせるスキルを 身 につけます 容 : 複 合 グラフの 操 作 データベースの 活 用 ピボット

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

アンリツ 研 修 センター IT 教 室 開 講 のご 案 内 社 内 や 職 場 のデータベース 管 理 に 欠 かせない Access のテクニック! 使 いこなせる 様 になれば 業 務 の 効 率 化 間 違 いなし 人 と 差 がつく 技 術 です Excel ユーザの 皆 さんへ Exc

あいち電子調達共同システム

~モバイルを知る~ 日常生活とモバイルコンピューティング

01_07_01 データのインポート_エクスポート_1

屋外広告物管理システム システムフロー

賞 状 を 作 ってみよう 1- 賞 状 フォルダを 使 用 賞 状 のテンプレートから ワードで 賞 状 の 文 章 を 作 成 します あらかじめ EXCEL で 作 成 した 受 賞 者 の 名 簿 から 学 年 クラス 名 前 を 入 れて 印 刷 します 1Excel の 賞 状 名 簿.

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

施 工 P お 気 に 入 り データを 活 用 するための 準 備 施 工 パッケージデータをお 気 に 入 りに 登 録 し 単 価 を 閲 覧 するための 方 法 を 説 明 します 1. 施 工 パッケージデータをダウンロードする 施 工 パッケージデータのダウンロードは 下 記 から 行

(Microsoft Word - \215u\213`\203m\201[\203g doc)

1

操 作 の 手 順 : 個 人 住 民 税 一 括 納 付 / 新 規 依 頼 修 正 複 写 個 人 住 民 税 一 括 納 付 メニュー 個 人 住 民 税 一 括 納 付 新 規 依 頼 修 正 複 写 依 頼 / 委 託 者 情 報 入 力 (P100) 依 頼 修 正 / 委 託 者 情

Ver.30 改 版 履 歴 版 数 日 付 内 容 担 当 V /09/5 初 版 発 行 STS V /0/8 証 明 書 バックアップ 作 成 とインストール 手 順 追 加 STS V /0/7 文 言 と 画 面 修 正 STS V..30 0//6

目 次 機 能 運 用 上 の 注 意 処 理 手 順 画 面 説 明 ログイン 直 送 先 選 択

PowerPoint プレゼンテーション

付 録 B コンテンツへのアクセスを 制 限 する B.1 アクセス 制 限 の 概 要 アクセスを 制 限 したいコンテンツが 格 納 されているフォルダに.htaccess およ び.htpasswd ファイルをアップロードすることで IP アドレス(ドメイン 名 ) やユーザー 認 証 による

エ シラバスの 公 開 サイトはレスポンシブ 対 応 ( 様 々な 種 類 の 機 器 や 画 面 サイズに 単 一 のファイルで 対 応 )しているこ オ 教 員, 職 員 の 利 用 グループを 作 成 し,グループ 毎 に 予 め 設 定 した 権 限 ( 利 用 メニューやマスタメンテナンス

目 次 1.はじめに 1-1. はじめに 2. 操 作 2-1. 概 要 2-2. 操 作 方 法 ( 調 査 依 頼 の 確 認 ) 2-3. 操 作 方 法 ( 回 答 登 録 ) 2-4. 操 作 方 法 (ワークシート 出 力 ) 2-5. 操 作 方 法 (ワークシート 取 込 ) 3.

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

確定給付企業年金 DBパッケージプランのご提案

VersionUP4.3.1

スライド 1

Microsoft Word - 20ガイドラインリーフレット案4ページ

SNSとLMSの強みと弱み 統合環境を目指して (教育学部紀要投稿用)

目 次 1. 大 学 情 報 データベースシステムの 使 用 方 法 について EXCEL 一 括 登 録 EXCEL ダウンロード 検 索 条 件 の 指 定 プレビュー EXCEL ダウンロード(データ 抽 出 あ

2 課 題 管 理 ( 科 学 研 究 費 補 助 金 ) 画 面 が 表 示 されます 補 助 事 業 期 間 終 了 後 欄 の[ 入 力 ] をクリックします [ 入 力 ]ボタンが 表 示 されていない 場 合 には 所 属 する 研 究 機 関 の 事 務 局 等 へお 問 い 合 わせく

1級 ワンポイント

の 購 入 費 又 は 賃 借 料 (2) 専 用 ポール 等 機 器 の 設 置 工 事 費 (3) ケーブル 設 置 工 事 費 (4) 防 犯 カメラの 設 置 を 示 す 看 板 等 の 設 置 費 (5) その 他 設 置 に 必 要 な 経 費 ( 補 助 金 の 額 ) 第 6 条 補

(2) 業 務 処 理 過 程 における 意 思 決 定 の 迅 速 化 を 図 るためには 電 子 決 裁 機 能 を 活 用 することが 有 効 と 考 えられるが 未 だ 総 合 的 な 文 書 管 理 システムに おいて 電 子 決 裁 機 能 を 整 備 していない 府 省 がみられる ま

目 次 1.はじめに 書 式 の 説 明 表 紙 スケジュール 組 入 れ 基 準 併 用 禁 止 薬 併 用 注 意 薬 同 種 同 効 薬 医 師 モニタリング..

Office 10 パッケージ版「リンク集」

Transcription:

サーバサイドプログラミング 4. PDO (PHPからSQLアクセス) コンテンツメディアプログラミング 演 習 Ⅱ 2014 年 菊 池, 斉 藤

1. PDO 概 要 n PDO (PHP Data Object) q PHP5.1から 採 用 された 汎 用 SQLの 標 準 クラ ス. q オブジェクト 指 向 を 採 用 し,オブジェクトからメ ソッドやクラス 変 数 を 操 作 する. q MySQL, SQLiteなどのサーバソフトに 依 存 せ ず,ほぼ 共 通 のコードでプログラミングできる.

PHPからSQL 文 の 実 行 n PDOオブジェクト 作 成 ( 準 備 ) $ 変 数 = new PDO("ドライバ: host=ホスト; dbname=データベース 名 );» ドライバ = mysql,sqlite など» hostはローカルの 場 合 は 省 略 可 能» "dbname=" を 指 定 しない(MySQLとの 違 い)» $ 変 数 がメソッドなどを 含 むオブジェクト. q 例 ) Mtsデータベースにアクセスする» $db = new PDO("sqlite:mts.sqlite");» $db = new PDO("mysql:host=localhost;dbname=mts", "root", "パスワード"); (MySQLの 場 合 )

SQLのエラーについて n 注 意 q PDOのエラーは 直 接 観 測 できない. 事 前 に sqlite3コマンドで 動 作 を 確 認 しておくこと. q エラーを 表 示 する 設 定 (やらなくても 動 く) $db = new PDO("sqlite:mts.sqlite"); $db- >setattribute(pdo::attr_errmode, PDO::ERRMODE_WARNING);

SQLコマンドの 実 行 n query (クエリ) q 例 ) $ 変 数 ->query(sql 文 );» 任 意 のSQL 文 を 実 行 する.$ 変 数 はPDOオブジェクト.» $db- >query( "INSERT INTO mts(name) VALUES(' 高 尾 山 ')" );» この 場 合 は 返 り 値 はなし(VOID)

検 索 結 果 の 抽 出 (1/3) n fetch ( 物 を 取 に 行 く) $ 検 索 結 果 = $ 変 数 ->query(select 文 ); $ 行 = $ 検 索 結 果 ->fetch();» SELECT 文 は 複 数 の 行 と 列 を 含 むテーブルを 返 す» fetch()はテーブルから1 行 づつ 取 り 出 す.» 返 し 値 = False (もう 行 がない 時 ) 列 から 成 る( 通 常 の) 配 列 列 名 をメンバとする 連 想 配 列 q 例 )» $rows = $db- >query("select * from mts"); テーブルmtsから 全 レコードを $rowsに 取 出 す.» $cols = $rows->fetch(); 1 行 づつ 取 り 出 す.

検 索 結 果 の 抽 出 (2/3) q 例 1) 配 列 で 列 を 取 出 す $cols = $rows- >fetch() print $cols[0]. $cols[1]. $cols[2]. $cols[3]. "\n"; 1 谷 川 岳 05 2 丹 沢 06 q 例 2) 配 列 を "-"で 繋 いで 出 力. print join($cols,"- "). "\n"; 1-1- 谷 川 岳 - 谷 川 岳 - 0-0- 5-5- 1227-1227 q 例 3) 連 想 配 列 で 名 前 と 標 高 のみ 出 力. print $cols['name']."\t". $cols['height']. "\n"; 1 谷 川 岳 05 2 丹 沢 06 q 例 4) 全 ての 行 を 出 力. while($cols = $rows- >fetch()){ print $cols['name']. ","; } 谷 川 岳, 丹 沢, 天 城 山, 八 ヶ 岳, 那 須 岳, 駒 ヶ 岳, 燕 岳, 奥 穂 岳,

検 索 結 果 の 抽 出 (3/3) n fetchall ( 全 ての 行 を 抽 出 ) $ 検 索 結 果 = $ 変 数 ->query(select 文 ); $ 表 = $ 検 索 結 果 ->fetchall();» fetchall()は1 行 づつではなく, 全 行 を 一 度 に 表 から 取 出 す.» 返 し 値 = 列 名 をメンバとする 連 想 配 列 の 配 列 q 例 ) $rows = $db- >query( "SELECT * from mts"); $all = $rows- >fetchall(); print_r($all); 全 行 をまとめて 表 示 Array ( [0] => Array ( [ID] => 1 [0] => 1 [name] => 谷 川 岳 [1] => 谷 川 岳 [day] => 0 [2] => 0 [hour] => 5 [3] => 5

演 習 1 n Mts.sqlite データベースを 用 いて, 標 高 順 に 山 名 を 次 の 様 に 出 力 するmts-top.php を 書 き,ブラウザから 閲 覧 せよ. q ヒント: select でソートを 行 う. 必 要 な 項 目 の み 選 択.Tableタグ 利 用. q UTF-8のデータベース mts-u.sqlite (Webから ダウンロード)

2. データベースの 更 新 n マイ 電 話 帳 q 姓 (lastname), 名 (firstname), TEL(phone)の 列 から 成 る 表 phonebook.sqlite CREATE TABLE users (id integer primary key autoincrement, firstname text, lastname text, phone text)

(1) 全 ての 行 を 表 示 list n phonebook-list.php <html><head> <title> phonebook</title> <meta charset="utf- 8"></head> <body> <h1> マイ 電 話 帳 </h1> <table border=0 cellpadding=0 cellspacing=0> <tr bgcolor=#f87820> <td width=50><br>no</td> <td width=80><br><b> 姓 </b></td> <td width=80><br><b> 名 </b></td> <td width=150><br><b>tel</b></td> <?php $db = new PDO("sqlite:phonebook.sqlite"); $result=$db- >query("select * FROM users"); for($i = 0; $row=$result- >fetch(); ++$i ){ echo "<tr valign=center>"; echo "<td >". $row['id']. "</td>"; echo "<td >". $row['lastname']. "</td>"; echo "<td >". $row['firstname']. "</td>"; echo "<td >". $row['phone']. "</td></tr>";?> } </table> </body></html>

(2) 行 の 追 加 n queryメソッドでinsert 文 実 行 $db->query( "INSERT INTO テーブル VALUES( 値 )");» $dbはデータベースを 含 むPDOオブジェクト (new PDO)» 返 し 値 はない.エラーのない 様 に 値 を 用 意. q 例 )» $firstname=$_get['firstname'];» $db = new PDO("sqlite:phonebook.sqlite");» $db- >query("insert INTO users VALUES(null, '$firstname',null,null)");

FORMからのデータ 受 け 取 り phonebook-add.html n <html> <head><title> phonebook</title> <meta charset="utf- 8"> </head> <body> <h2>エントリー 追 加 </h2> <form action=phonebook- add.php method=get> <table border=0 cellpadding=0 cellspacing=0> <tr><td> 姓 :</td><td><input type=text size=20 name=lastname></td></tr> <tr><td> 名 :</td><td> <input type=text size=20 name=firstname></td></tr> <tr><td>tel:</td><td> <input type=text size=20 name=phone></td></tr> <tr><td> </td><td><input type=submit border=0 value=" 追 加 "></td></tr> </table> </form> </body> </html> n phonebook- add.php <?php $firstname=$_get['firstname']; $lastname=$_get['lastname']; $phone=$_get['phone']; $db = new PDO("sqlite:phonebook.sqlite"); $firstname PHPの 変 数 'firstname' Formのラベル 常 に 同 じでなくてもよい $db- >query("insert INTO users VALUES(null, '$firstname','$lastname','$phone')");?> Added.

(3) 行 の 削 除 n queryメソッドでdelete 文 実 行 $db->query( "DELETE FROM テーブル WHERE 条 件 ");» 条 件 は,id=2 などの 行 を 一 意 に 決 める 式» 返 し 値 はない. q 例 )» $id=$_get['id'];» $db = new PDO("sqlite:phonebook.sqlite");» $db- >query("delete FROM users WHERE id='$id' ");

行 の 削 除 n phonebook-del.html <html> <head><title> phonebook </title> <meta charset="utf- 8"> </ head> <body> <h2>エントリー 削 除 </h2> <form action=phonebook- del.php method=get> ID: <input type=text size=10 name=id> <input type=submit value=" 削 除 "> </form> </body> </html> n phonebook-del.php <?php $id=$_get['id']; $db = new PDO("sqlite:phonebook.sqlite"); $db->query("delete from users where id='$id'");?> deleted.

HtmlとPhpの 統 合 n phonebook- del2.php <?php if(isset($_get['id'])) $id=$_get['id']; $db = new PDO("sqlite:phonebook.sqlite"); if(isset($id)) { $db- >query("delete FROM users WHERE id='$id'"); }?> <html> <head> <title> phonebook </title> <meta charset="utf- 8"> </head> <body> <h2>エントリー 削 除 </h2> <form action=phonebook- del2.php method=get> ID: <input type=text size=10 name=id> <input type=submit value=" 削 除 "> </form> <?php $result=$db- >query("select * FROM users"); print_r($result- >fetchall());?> </body> </html> isset - 最 初 のアクセスの 時 にGET[id]が 未 定 義 で 出 る エラーを 防 止 全 エントリーを 表 示 して 削 除 を 確 認 する

演 習 2 n phonebook.phpを 参 考 にして,ポケモン 図 鑑 pokemon.php を 作 れ. q pokemon.sqlite CREATE TABLE monsters ( id integer primary key autoincrement, name text, hp integer, offense integer, defense integer, speed integer, type text); q 好 きなポケモンを5 匹 追 加 せよ. q http://www.pokemon.co.jp/zukan/

3. セキュリティの 考 慮 n 演 習 2のモンスターの 名 前 に 次 を 入 力 して 何 が 起 きるか 観 察 せよ. 1. <h1> ピカチュー </h1> 2. <script> alert('hello') </script> 3. <body bgcolor=black>

クロスサイトスクリプティング n Cross Site Scripting (XSS) B (おとりサーバ) cookie の 読 出 し 自 動 実 行 A (クライアント) name= <Script> alert('hello') </script> <Script> alert('hello') </script> C ( 脆 弱 なサーバ) 実 行 させたい 攻 撃 コード

SQLインジェクション n データベースへの 攻 撃 q 意 図 しないSQL 文 の 注 入 (injection) q 例 ) 演 習 2のエントリーの 削 除 ( 注 意 ) DELETE FROM monsters WHERE id = $id q $id= 3 OR 1=1 DELETE FROM monsters WHERE id = 3 OR 1=1 ; q 1=1は 恒 等 式 なので, 常 に 成 立 し, 全 ての 行 を 削 除 してしまう.( 全 データを 抽 出 すると 情 報 漏 えい)

対 策 n サニタイジング( 衛 生 化 ) $ 変 換 後 変 数 = htmlspecialchars($ 入 力 変 数 );» 入 力 変 数 に 含 まれるタグをHTMLの 実 体 参 照 に 置 き 換 える. q 例 ) 入 力 : 実 体 参 照 &lt &amp &quot &#9832 表 記 < > <h1>ピカチュー</h1> サニタイズ: <h1> ピカチュー </h1> (ブラウザでの 見 た 目 は 同 じ)

サニタイジングの 準 備 n htmlspecialchars は 長 ったらしい! q そこで 自 前 で 関 数 h を 定 義 してしまおう q 各 PHPプログラムの 冒 頭 に 以 下 の 関 数 定 義 をして 使 う function h($str) { return htmlspecialchars($str, ENT_QUOTES, "UTF- 8"); } q ユーザから 入 力 された 情 報 はそのまま print/ echo 文 で 表 示 するのではなく 必 ず print h($ 変 数 名 ); のように 関 数 h を 介 して 表 示 する

その 他 の 対 策 ( 参 考 ) n n n n サニタイジングだけでは 完 全 にSQLインジェクションを 防 止 で きない. q タグや 特 殊 記 号 を 含 まない 命 令 整 数 化 q $intid = round($id); 文 字 列 を 整 数 のみに( 切 り 捨 て) 正 規 表 現 q preg_match("/[0-9]+/", $ 入 力 変 数 ) 入 力 が 数 字 のみかどうかを 判 定 する Prepared Statement q $ps = $db- >prepare("select * from tb where id=:a"); q $ps- >bindparam(":a", $a); q $ps- >execute(); :Aの 位 置 に$aの 整 数 のみが 代 入.

データベースの 漏 えい n ファイルとアクセスの 関 係 q phpファイル ( 外 部 に 公 開 する 必 要 ) q sqliteファイル ( 内 部 からのみアクセス) n 攻 撃 q http://localhost/pokemon.sqlite でDBを 丸 ご とダウンロードする.( 情 報 漏 えい)

対 策 n 1. SQL DBを 外 部 の フォルダーに. n 2. SQL DBを 直 下 の 別 フォルダーに. webserver htdoc phonebook.php SQL phonebook.mysql n 欠 点 : ファイルの 管 理 htdoc phonebook.php SQL phonebook.mysql.htaccess

アクセス 制 御 ファイル n.htaccess (ドットに 注 意 ) Order deny,allow Deny from all q deny ( 禁 止 ),allow ( 許 可 ) q order は, 優 先 順 序 を 指 定. q このフォルダでは 全 てのウェブからのアクセス を 禁 じる(sqliteコマンドは 別 )

演 習 3 n 演 習 2で 作 成 したpokemon.php を, 次 の2 点 を 考 慮 した 安 全 な pokemon-secure.php に せよ. q 検 査 方 法 (1) エントリー 追 加 で 名 前 <h1> ピカチュー </h1> を 持 つ 行 を 追 加 し,H1の 大 きさで 表 示 されないこと. (2) データベース 本 体 をhttp://localhost/ pokemon.sqlite でブラウザからダウンロードできな いことを 確 認.

演 習 4 n SQLの 課 題 5 (オープンデータ) mydata.sqlite を 用 いて,それにレコード ( 行 )を 追 加 と 削 除 する mydata.php を 書 け. q 追 加 する 行 のデータは 任 意 に 決 めてよい. q 任 意 の 機 能 を 工 夫 した 内 容 を,mydataphp.doc にて 報 告 せよ.

提 出 物 n 提 出 用 ドライブ (Y:) q コンテンツ..II (FMS)\ 第 _ 回 \_ 組 \2- 組 - 番 q 課 題 2. pokemon.php q 課 題 3. pokemon-secure.php, SQL \pokemon.sqlite, SQL\.htaccess q 課 題 4. mydata.sqlite, mydata.php, mydataphp.doc ( 報 告 書 )

まとめ n PDOはオブジェクト 指 向 を 用 いた( )の SQLアクセスライブラリ.( )により 任 意 のSQL 文 を 実 行 する. n PDOから 行 を 追 加 するには,queryメソッドに より,SQLの( )を 実 行 する. n データベースを 操 作 するコマンドにタグが 入 っ ていると( )の 攻 撃 を 受 ける. 防 止 するには,タグをHTMLの 特 殊 文 字 に 置 き 換 える( )がある.