0

私は現在、SQL のようなクエリを作成するために使用される OTRS 発券システムで使用されるいくつかのカスタム perl コードを書き直しています。はい、おそらく入力をエスケープするより良い方法がありますが、これには立ち入りません...

$Param{PostMasterSearch}test'test@domain.tld( に注意してください) のような電子メール アドレスが含まれています'

my $PostMasterSearch = $Param{PostMasterSearch};
$PostMasterSearch =~ s/'//gms;
$Self->{LogObject}->Log(
    Priority => 'error',
    Message => "XXXXX: $PostMasterSearch",
);
$SQLExt .= " $Field LIKE '$PostMasterSearch'";

したがって、私の期待は、次のようなログメッセージとXXXXX: testtest@domain.tldSQL クエリの一部を見つけることEmail LIKE 'testtest@domain.tld'です。

しかし実際には、ログ メッセージしか取得できません。SQL クエリ文字列は何らかの理由で発生しEmail LIKE 'test'test@domain.tld'ます。

コードの最後の行を次のようにねじ込む

$SQLExt .= " $Field LIKE '$PostMasterSearch' X";

意味はありませんが、文字列を返しますEmail LIKE 'testtest@domain.tld' X

長い間なくなっていたはずのもの$PostMasterSearchがまだ含まれている理由についてのヒントはありますか? または、 を-less バージョンのと'連結する方法についてのヒントは?$SQLExt'$PostMasterSearch

4

1 に答える 1