0

重複の可能性:
PHP で SQL インジェクションを防止する最善の方法

以下のコードでは、フィールドtitleと変数$submissionはテキスト内の名前です。通常、クエリは問題なく機能します。ただし、title$submissionアポストロフィが含まれている場合、クエリには結果が含まれません。

アポストロフィを使用してクエリを機能させるにはどうすればよいですか?

$submission = $_GET['submission'];

$query2 = "SELECT
               title, 
               1ad1, 
               1adcit, 
               1adst, 
               zip, 
               1adph, 
               1site, 
               neighborhood
           FROM 
               submission 
           WHERE 
               title = '$submission'
           ORDER BY 
               neighborhood ASC";   
4

2 に答える 2

0

javascript の encodeURI() は、絶対的な意味であなたの味方です。 https://developer.mozilla.org/en/Referencia_de_JavaScript_1.5/Funciones_globales/encodeURI

ただし、これは完全に許可された文字であるため、アポストロフィの問題は解決しません。次のいずれかを使用して、SQL操作の前にphpでフィルタリングする必要があります。

  • mysql_real_escape_string
  • mysqli_real_escape_string
  • pdo 準備済みステートメント。

登録します。

于 2012-06-05T15:29:51.547 に答える
0

MySQL にとって特別な文字をエスケープする必要があります。そこmysql_real_escape_string()が求められるところです。アポストロフィなどの特殊文字を含む可能性のあるすべてのデータで使用してください。

于 2012-06-05T15:30:52.400 に答える