私は現在、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.tld
SQL クエリの一部を見つけること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