<< PATHINFOとmod_rewriteではどちらがSE... 質問一覧 set_error_handler使用時の、@エラー... >>

  • 100P
addslashesは使っていい?使っちゃダメ?

はじめまして。yoshikoと申します。
自分はSQLに入れる文字列をエスケープする際はaddslashes関数を使用し
ています。しかし、addslashes関数はSQLインジェクション対策には万全
ではないので使ってはいけないという話を聞いたことがあります。
ネット上で調べてみたのですが、使ってもいいと言っている所と使っては
いけないといっている所があり混乱しています。

そこで、みなさんにお聞きしたいのですが、結局addslashesは使っても
いいのでしょうか?よくないのでしょうか?
使用するデータベースによっても違ってくるのかもしれませんが、mysql、
postgres,oracleあたりではどうなのでしょうか?
理由も一緒に教えていただければと思います。宜しくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

Qaddslashesは使っていい?使っちゃダメ? yoshiko  [07月06日 22時09分] 
┣満開Re:addslashesは使っていい?使っちゃダメ? turifromvip  [07月06日 23時54分] 
┃┗Re[2]: yoshiko  [07月08日 19時26分] 
┗満開Re:addslashesは使っていい?使っちゃダメ? ito_yu  [07月07日 17時03分] 
  ┗Re[2]: yoshiko  [07月08日 19時32分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:addslashesは使っていい?使っちゃダメ?

&gt;はじめまして。yoshikoと申します。
&gt;自分はSQLに入れる文字列をエスケープする際はaddslashes関数を使用し
&gt;ています。しかし、addslashes関数はSQLインジェクション対策には万全
&gt;ではないので使ってはいけないという話を聞いたことがあります。
&gt;ネット上で調べてみたのですが、使ってもいいと言っている所と使っては
&gt;いけないといっている所があり混乱しています。
&gt;
&gt;そこで、みなさんにお聞きしたいのですが、結局addslashesは使っても
&gt;いいのでしょうか?よくないのでしょうか?
確かにその通りだと思います。
http://ns1.php.gr.jp/pipermail/php-users/2001-August/001641.html
の話だとおもいますが。
間違っていたらすみません。

&gt;使用するデータベースによっても違ってくるのかもしれませんが、mysql、
&gt;postgres,oracleあたりではどうなのでしょうか?
&gt;理由も一緒に教えていただければと思います。宜しくお願いします。
自分はプリペアードステートメントを使ったりして、できるだけ自前で処理する
事は避けています。
mysql_real_escape_stringとかpg_escape_stringとかそんな関数もあるので
そちらも検討してみてはいかがでしょうか。

Re[2]:

ご返答ありがとうございます。
上記のURLを読むと独自関数を作成してまでaddslashesを使い続ける意味はないかな、
という気がしてきました。特にaddslashesに思い入れがあるわけでもないのですが、
理由がわからないまま別のやり方に変えるのはいやだったので質問してみました。
今後はプリペアドステートメントを使用したコーディングに切り替えてみようかと思います。
ありがとうございました。

Re:addslashesは使っていい?使っちゃダメ?

初めまして。ito_yuと申します。

http://blog.ohgaki.net/index.php/yohgaki/2006/02/13/addslashesa_la_a_a_ua_sa_pa_fa_a_bc_a_ma

結論は「使ってはいけない」だと思います

たとえばPEAR::DBであればDB::quote()という関数があり、内部では各DBMSに合わせたエスケープ処理をしています。

Re[2]:

ご返答ありがとうございます。
どうやらaddslahesは使ってはいけないもののようですね。
文字コードが絡む話になると複雑でついていけなくなってしまいがちですがもう少し
勉強してみようとおもいます。
>たとえばPEAR::DBであればDB::quote()という関数があり、内部では各DBMSに合わせた
>エスケープ処理をしています。
ありがとうございます。こちらも検討してみます。
PATHINFOとmod_rewriteではどちらがSE... 質問一覧 set_error_handler使用時の、@エラー...