PHP+MySQL入門

フォームとの連携2 SQLを安全に実行する

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
フォームと連携したスクリプトの場合、非常に危険な文字列を送信されてしまう可能性をはらんでいます。そこで、これを防ぐファンクションを必ず含めるようにしましょう。
講師:
06:54

字幕

続いてフォームとの連携の二つ目としましてSQL を安全に実行するという方法について紹介していきたいと思いますこのレッスンは前のレッスンからの続きとなりますので二つ続けてご覧くださいプロジェクトとしても前のレッスンの物を引き続き使っていきますがこちら素材の中にはLesson 01-09 としまして一つ前のレッスンが終わったところまでを記録していますのでここから再開してもらっても結構ですその場合はこちら phpmysql.sqlというデータベースのバックアップファイルがありますので こちら新しいデータベースを作成して こちら phpmysql というデータベースの「utf8_general_ci」のデータベースを作成し そしてこちら「インポート」からこちら「ファイルを選択」してバックアップファイルから復元をしてからこちらのスクリプトを試してくださいでは話を続けていきましょう一つ前のレッスンでフォームと連携してデータベースにデータを挿入するというところを行いましたしかし 前のレッスンで紹介した通り前のスクリプトは非常に危険な状態ですなぜならこの「POST」の値というのをそのまま SQL に投げてしまっていますがSQL は様々な文字を等を入れる事で命令を崩してしまったり複数の命令を中に入れ込ませてしまったりするような危険性をはらんでいますこれを専門用語で SQLインジェクション等といいますがパスワードの漏洩事件が起こったり会員データの削除が起こったり等様々ないたずら ハッキングといわれるような事が起こるのはこの SQL インジェクションが主な原因である事も確かですでは SQL インジェクション等を防ぐためにはどうしたら良いかというのは一つはサーバーのセキュリティー設定等でもある程度防ぐ事ができます実際 現代の PHP のバージョンやMySQL のバージョンでは極力危険性を排除するような設定になっていてちょっとした危険な文字列などを含めた場合は通らないようになっていますしかし それでもそれを過信するわけにはいきませんのでPHP の方でもより安全性を高めるためのファンクションというのを仕込むべきですでは実際にはどのようにすれば防ぐ事ができるのかといえば非常に簡単ですこの「mysql_query」のパラメータの中に記述されているこの「$_POST」というところに「mysql_real_escape_string」と記述すればオッケーですちょっと長いファンクションになるんですけども これは MySQL のstring を escape 逃がすような意味のファンクションとなりますこちらで実際に動きを確認してみましょうこちら MAMP が起動している事を確認しApache と MySQL が起動していたら ウェブブラウザからこちらLesson 01-09 にアクセスをしますそして例えばここでは「ぶどう」等と指定して登録をすると「商品を登録しました」と出ますそしてこちらスタートページからphpMyAdmin でphpmysql の item_page を見ればこのように「ぶどう」が登録されてる事が分かりますこれで かなり安全性の高いスクリプトを作る事ができましたでは実際 この「mysql_real_escape_string」というファンクションは一体どのようなことを行っているのでしょうかここでは それが分かるように ここに少しスクリプトを組み込んでいきたいと思いますまず ここでは「対処前」とし ここにこのように「POST」の「item_name」をそのまま表示するようにしますそして一行改行して「対処後」としまして「mysql_real_escape_string」 として「item_name」を差し込んでおきましょうこれで 対処前の状態と 対処後の状態を二行で見る事ができるようになりました実際に動きを確認してみます例えば「ぶどう」の状態で登録するとこれは「対処前」も「対処後」も同様ですしかし MySQL にとって危険な文字列の一つがこちら「'」になりますこの「'」という記号は SQL を不正に終了させてそしてその後危険な SQL を仕込ませたりというような事も可能になる可能性があるんですねそこでこの このようにして例えばこの先に何かこの後に危険なSQL を書いたとしましょうというようなかたちでいきたいと思います「登録する」ボタンをクリックしますすると「対処前」の場合 このように「'」はそのまま通ってしまいました実際には今は MAMP の MySQL の方でも対処策がとられているために特に危険な SQL にはならないんですけれども実際には 様々な環境によっては 非常に危険な SQL になる可能性がありますしかし「mysql_real_escape_string」というこちらのファンクションを掛けるとこの「'」の前にはいわゆる 「\」というエスケープ文字というものが追加されていますこれにより PHP の方でも安全策がとられたためぐっと安全なスクリプトになったというわけですフォームと連携してデータベースにアクセスをするというスクリプトは非常に便利な反面 非常に危険性をはらむクリプトにもなりかねませんそこで このような確実なセキュリティー対処法というものも身に付けて しっかりと安全なスクリプトを組んでいく必要があります

PHP+MySQL入門

MySQLというデータベースはPHPと連携させてウェブサイト上で利用することによってよりその威力を発揮します。このコースではPHPとMySQLを組み合わせたWebシステムを構築する手法を紹介します。コースの後半ではページングの処理の仕方などについて学びながら、具体的に挿入画面や編集画面の作成を行っていきます。

3時間08分 (21 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2014年01月20日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。