• ベストアンサー

SQLインジェクションが発生する理由

初めての質問です。よろしくお願いします。 今現在、SQLインジェクションというものが問題になっていますよね いろいろなサイトを回って調べて見たのですが、具体的な対策として、「'(シングルクォーテーション)」などの特殊文字を確実にエスケープすること、くらいしか対策が書かれておりません。 特殊文字のエスケープさえしっかりしておけばSQLインジェクションは発生しない、という印象を受けたのですが、SQLインジェクションがおきてしまったサイトではエスケープ処理をしていなかったということなのでしょうか? それとも、エスケープ処理をしていても何らかの方法で不正なSQLの命令を実行されてしまうのでしょうか? どうにもわからなくて困っているので、どうかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がると申します。 > 特殊文字のエスケープさえしっかりしておけばSQLインジェクションは発生しない、という印象を受けたのですが、SQLインジェクションがおきてしまったサイトではエスケープ処理をしていなかったということなのでしょうか? Yesです。 或いはもうちょっとよくある現場状況としては「エスケープ処理に抜け落ちがあった(ある1項目だけちゃんと出来てなかった、とか)」なんてのもあります。 んと…気にされているのは「エスケープしてなお危ないケースがあるか」というあたりでしょうか? だとすると、少なくとも私が知っている範囲内では「No」です。 ただ、「すべての項目を」常にちゃんとエスケープする、という部分が案外に破られやすいのですが。 個人的には「SQL文を作成するところはすべて一箇所に集約して漏れないようにする」のが一番よろしかろうと思います。 以上で回答になりますでしょうか?

rubysql
質問者

お礼

非常に参考になりました! どうもありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

ケース・バイ・ケースとしか答えようがないのでは?

rubysql
質問者

お礼

答えていただいてありがとうございます! ケース・バイ・ケースということはエスケープしていてもどこかに穴があるかもしれないということなのでしょうか・・・

すると、全ての回答が全文表示されます。

関連するQ&A