0

私はmysqliにかなり慣れていません(mysqlではありません!)、基本的なサニテーションのために文字列(または文字列を含む(再帰的)配列)を保護する現在のmysql関数を更新しています。

php.net mysqli::real_escape_string() マニュアルには、その文字セットに関する非常に明確な警告があります。これを実装しました。

これをテストするにはどうすればよいですか?探している情報が見つかりません。入力する特定の文字列を探していると思いますが、結果は安全ではなく、結果は保存と見なされます。

「' <- それらの一重引用符にスラッシュを追加する」という意味ではありません。より高度なトリックや脆弱性を探しています。

また、準備されたステートメントも探していません。それらは素晴らしく、私はそれらを使いたいと思っていますが、私は古いシステムをできるだけ早く更新するため、現時点ではオプションではありません。準備されたステートメントは、現時点ではオプションではありません。私は将来それらを追加します。

4

1 に答える 1

2

ここにあなたが探しているコードがあると思います。mysql を mysqli に変更するだけです。

また、ご注意ください

  • この関数は、文字列を「保護」するのではなく、文字列をフォーマットするためのものです。「危険」かどうかに関係なく、クエリに入るすべての文字列を処理する必要があることを意味します。
  • この関数は、SQL文字列リテラルのみをフォーマットするために使用する必要があります。そして、他のすべてのクエリ部分にはまったく役に立ちません。
  • この関数は、アプリケーション コードでは使用しないでください。ただし、エミュレートされた準備済みステートメントのみをサポートする必要があります。

いずれにせよ、データベースのエンコーディングが従来型の場合、utf-8エンコーディングを気にする必要はまったくありません。「明確な警告」は、実際には、いくつかの限界的でめったに使用されないエンコーディングのみに関連していました。

于 2013-08-02T13:45:15.613 に答える