• ベストアンサー

pg_escape_stringをする意味

がわかりません $msg=$_POST['msg']; $msg=pg_escape_string(htmlspecialchars($msg)); としてフォームから送られてきたデータをpg_escape_stringして データをデータベースに入れたりしますが どうしてそうしなければならないのでしょうか? 具体的にmsgがどんなデータのときにそうしないと困るのでしょうか? 単に echo $msg; するときには必要ないのでしょうか?

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

DBにsqlを流すときに、生のデータを投げると 巧妙に細工されたデータにより、DBのデータが 消されてしまったり、情報が漏洩してしまったり する場合が考えられます。 また、そんなに深刻ではなくても、エラーになって しまったりするとかっこわるいので、エスケープして 明示的な文字列としてしようすることが多いです。 一言でいうと、 「クライアントから送られてくるPOSTやGETデータは、 まったく信用してはいけない」ということで、 基本的にはすべての引数に対して、どのような データが入っていてもエラーにならないような 工夫が必要です。

guuman
質問者

お礼

ありがとうございます 投稿データにデータベースをアクセスされるということですね

その他の回答 (2)

  • tomy06
  • ベストアンサー率25% (58/224)
回答No.3

POSTするデータにSQLを埋め込まれる可能性があるからです 詳しくは参考URLを見てください

参考URL:
http://www.hotfix.jp/archives/word/2004/word04-15.html
guuman
質問者

お礼

ありがとうございます エスケープされた文字列を見るにはどうしたいいのでしょうか?

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 データベースに入れる際に問題の起きる文字列を加工してくれてます。 例えば\マークや'(シングルクォーテーション)等 単純に表示するだけなら行わなくてもよいと思います。

guuman
質問者

お礼

ありがとうございます 表示するだけならば何もすることはないのですね

関連するQ&A