0

私は複雑なフォームを持っており、最初にいくつかの$_GETパラメーターを取得する必要があります。データベースでパラメーターを検索するので、明らかにmysql_real_escape_string()それらに対して実行する必要があります。

私にとってのそれらの問題は、最初のデータベースルックアップの後です。ユーザーがフォームを送信すると、リクエストとして送信します。偽のフォーム送信で誰かが私のサイトをハッキングしようとした場合$_POSTに備えて、明らかにこの呼び出しを再度実行する必要があります。mysql_real_escape_string

次に、私が抱えている問題は、引数が2回エスケープされ、クエリが次のように奇妙に見え始めることです。

select field1 , field2 , from my_table where some_id = \'.$lookup_id.\' ...

したがって、システムは\'を追加しているようで、私を台無しにしています:)また、他の形式では、そのような動作は見られません。これを引き起こしている可能性があるものについてのアイデアはありますか?

奇妙なことの1つは、エスケープされていないパラメーターを投稿に送信しようとしたところ、同じ問題が発生することです。それは手がかりですが、私にとっては十分ではありません。:(

4

3 に答える 3

3

http://php.net/manual/en/function.stripslashes.php関数が役に立つかもしれません - エスケープを行う前にそれを実行しますか?

于 2011-03-05T15:29:52.397 に答える
3

あなたのphpでこの設定を見てください:

http://www.tizag.com/phpT/php-magic-quotes.php

于 2011-03-05T15:32:56.253 に答える
0

ユーザーが送信した文字列が SQL ステートメントとして解析されることはなく、SQL インジェクションのリスクが軽減されるため、より安全と見なされる準備済みステートメントを使用する必要があります。ユーザー文字列は解析されないため、特殊文字をエスケープする必要はありません。

于 2011-03-05T15:42:12.807 に答える