2016-06-16 6 views
1

なぜデータベース接続なしでmysqli_escape_string機能を使用できないのですか? the documentationからmysqli_escape_stringにデータベース接続が必要なのはなぜですか?

+0

データベース接続がなければ注入できませんので、正確にあなたの質問は何ですか? – Matt

+5

引用符などをPHPでなくエスケープする方法を知っているのはデータベースだからです。 PHPはデータベースにそれをさせます –

+0

質問を更新しました –

答えて

4

:SQL文で使用する文字列で

エスケープ特殊文字、アカウントに接続これは、接続している必要があり

の現在の文字セットを取っているので、それデータベースが使用している文字セットを知っているので、データをエスケープするための適切なルールを使用できます。

2

クエンティンの解答は、それを本質に沸かせます。

クエンティンは、すでに述べたように、私も

  • ことを、追加したい、文字セットは、アクティブな接続のコンテキストで知られている - とエスケープするために不可欠です。
  • 通常、接続オブジェクトは、コードを必要とするコードのどの部分でも使用できるようにする必要があります。エスケープする必要があるときはいつでも、接続を使用する必要があります。あなたの問題が「接続オブジェクトが私のコードのこの部分で到達できない」場合は、間違いなくそれに取り組む必要があります。
  • そして、mysqli_escape_stringの動作をPHPで再現しようとしないでください!これにより、潜在的に攻撃者にとって脆弱になります。 "\"に変換するのは簡単だとは思わないでください。

#2と#3をよく見てください。この質問をすると、プロジェクトで何らかのアーキテクチャ上の問題が発生していると思われます。

関連する問題