プログラミング PHP

prepareステートメントの挙動について調べてみた

投稿日:2019年3月2日 更新日:

調べるきっかけ

PHPでSQLをセキュアに記述する方法としてprepareステートメントが推奨されているが、なぜなのかがわからず、挙動を調べれば自分なりに納得のいく答えがでるのではないかと思ったため。

調べたコード

$nameの文字列の途中に;(セミコロン)を付与して処理を終了させて、そのあとにDELETE文を実行させようとした。

「’名無しさん; Delete from boards.boards’」となり、
‘(シングルクウォート)で括られて、;(セミコロン)は無効化されていた。

;の手前で’を付与して、;を有効化しようとしてエスケープした場合。

「’名無しさん\\\’」となって、エスケープできませんでした。

結果

prepareステートメントを利用すると適切にエスケープされるため、SQLインジェクション対策となる。

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, PHP
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

【Java】モジュールシステムの概要と実装例

概要 Javaのモジュールシステムについて、概念的なイメージと実際のコード例で理解を深めるための記事です。 読者はJava Silverの資格勉強中の方やJava入門者を想定しています。 内容は以下の …

プログラミングスキルを向上させる3ステップ

プログラミングスキルを向上させるための3ステップです。 私自身が実践していることであり、向上を実感している方法です。 写経 本をベースに写経します。 写し書きをして動いたらOKではなく、以下のような問 …

【Java】MySQLから取得した日付をフォーマット変換して表示する方法

MySQLからSELECTしてきた日付データ(DateTime型)を、 「yyyy年MM月dd日 hh時mm分ss秒」のフォーマットで表示する方法です。 コード [crayon-6170cea7014 …

no image

【PHP】まずこれは押さえよう!4つの基本

記事対象者:PHP初学者 記事の目的:PHPにおける、基本的かつ根底となる知識を学んでもらう。 ※初学者を対象としているため、ここではごく基本的なことのみを記載いたします(クラスの概念等はまだここでは …

【SpringSecurity】#1~ ログイン画面の実装(認証)

概要 SpringSecurityを導入してユーザ認証機能を実現します。 まずはログイン認証機能が使えるようになることを目標にしていますので、 本記事で解説する構成は最小限にとどめています。   準備 …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。