ログログ

雑学プログラマが学んだことの記録

プログラミング PHP

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

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

調べるきっかけ

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

調べたコード

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

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

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

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

結果

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

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

執筆者:


comment

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

CAPTCHA


関連記事

【Laravel】SQLの確認はenableQueryLogを使う

SQLのデバッグのために、SQLとバインドされた値を確認したいことがあります。 その時に使える方法として、よく提示されるのは以下の2つです。 1.enableQueryLogメソッドとgetQuery …

no image

【PHP】配列と連想配列と多次元配列の説明と使用例

目次 配列とは?定義例まとめ 配列とは? 1つの変数に複数の値を持つものです。 整数型や文字列型は1つの変数に1つの値を持ちますが、配列は同じようなデータの集まりを1つの変数に持つことができるようにな …

Laravelのヘルパー関数とは?

Laravel includes a variety of global “helper” PHP functions. Many of these functions are …

正規表現で複数の箇所を入れ替える方法

複数の特定の箇所を入れ替えるテクニックです。 目次 確認環境置換方法置換前データ正規表現置換結果解説 確認環境 Sakuraエディタ 置換方法 ここでは例として、:区切りの前後の文字列を入れ替えてみま …

no image

画面にonclickを書かずにイベントを発生させる方法

画面にonclickを記述すると、JavaScript側で関数名が変更になった際の修正が面倒になる。 なのでonclickを記述せずにイベントを発生させるように記述することが望ましいと子ドレビューで指 …