3

PHPでは、$ _ POSTは引用符の前にスラッシュを自動的に追加します。それでは、なぜmysql_real_escape_string()をわざわざ適用するのでしょうか。たとえば'rrr、入力フィールドに入力すると、\'rrrそれをエコーすると取得します。

4

3 に答える 3

11

これは、php 構成で MacigQuotes が有効になっている場合にのみ発生するためです。これは、私の知る限り、最近ではかなり珍しいことです。また、mysql_real_escape_string は他の MySQL 関連の文字もエスケープします。

マジック クォートの詳細については、http://php.net/manual/en/security.magicquotes.phpをご覧ください。

ご覧のとおり、このディレクティブには既に非推奨の警告があるため、とにかくサーバー構成を確認する必要があります^^

編集: マジック クォートを無効にするには、xampp フォルダーで php.ini を検索し、次のディレクティブを追加するか、存在する場合は変更します。

; 魔法の引用
;

; 受信 GET/POST/Cookie データのマジック クォート。
magic_quotes_gpc=オフ

; SQL からのデータ、exec() からのデータなど、実行時に生成されたデータのマジック クォート。
magic_quotes_runtime = オフ

; Sybase スタイルのマジック クォートを使用します (\' ではなく '' で ' をエスケープします)。
magic_quotes_sybase=オフ
于 2009-11-17T09:48:15.407 に答える
6
  1. インジェクションの問題を引き起こす可能性のある他の文字があるため、mysql_real_escape_string は単なる一重引用符以上のものをエスケープします。
  2. PHP は、magic_quotes が有効になっている場合にのみ POST された入力にスラッシュを追加します。これは悪い習慣と見なされます (これは怠惰につながり、real_escape_string などを使用しないためです!)
于 2009-11-17T09:47:54.907 に答える
3

マジッククォートはPHP5.3.0で非推奨になり、PHP6.0で廃止されました。

編集:したがって、自動スラッシュはほとんどのPHPインストールで非推奨になっているため、信頼できず、まもなくまったく機能しなくなります。

于 2009-11-17T09:50:04.790 に答える