以下が私のコードです。問題は、アポストロフィ( ')でユーザー名を入力すると、検索結果が返されたときに追加文字「\ backslash」が表示されていることです。下のコードからバックスラッシュを削除できませんか?
以下は、私は、バックスラッシュが追加取得されるように機能にaddslashesがcheckusername機能で使用されていることを見つける私のコードです。
if (0 < count($my_field_place))
{
for ($i = 0; $i < count($my_field_place); $i++)
{
if (true === isset($Fields[$i]))
{
print "gMapping[$i] = new MappingItem('" .
addslashes($Fields[$i]) .
"', '" .
checkusername($my_field_place[$i]) .
"');";
}
}
}
function checkusername($inStr)
{
$orig = array();
$new = array();
$orig[00] = "/\n/`" ; $new[00] = "\\?n";
$orig[01] = "/[^\x-*()]/"; $new[01] = "";
$var1 = preg_replace($orig, $new, $inStr);
$var2 = addslashes($var1); // i am not sure why addslashes is used but i am asked not to remove because of security reasion?
return $var2;
}
注:私はGoogleと私の場合には、我々は唯一の検索結果を表示しているので、それはセキュリティ上の理由 に使用することを見つけます。だから私はなぜこの機能がここで使われているのか分かりません。 私は、addslashes()関数で追加されたバックスラッシュを削除するために、stripslashes()関数を返す前に追加するように修正しました。
function checkusername($inStr)
{
$orig = array();
$new = array();
$orig[00] = "/\n/`" ; $new[00] = "\\?n";
$orig[01] = "/[^\x-*()]/"; $new[01] = "";
$var1 = preg_replace($orig, $new, $inStr);
$var2 = addslashes($var1);
return stripslashes($var2); // i am not sure stripslashes is correct fix or not?
}
助けてください、それが追加にstripslashesに大丈夫ですか、それを処理するための他の方法があります: コードスニペットと、以下のコード変更のためのコメントを見つけてください!あなたは彼らがこのcharacter.since tは、複数の単語が多少読みやすい形 で表現することを可能にすることができません ますGmailやヤフー、FBなどでけれどもこれらの特別なcharaceter からユーザーを制限することができ
私は100%確信していませんが、 'addslashes'がセキュリティ上の理由で使用されていれば、それを間違っているコーディングしている人は誰でも確信しています。おそらく10年前にこの文脈でAddslashesが使用されました。それ以来、SQL Dbの挿入/読み込みにPrepared Statementsを使用していただけでなく、多くの変更がありました。 – Martin
私はこれが何をすると思いますか分かりません。 '$ var2 = addslashes($ t1);'スラッシュを追加するだけで、後の行でそれらを削除できますか?また、 'preg_replace()'を実行して '$ var1'に格納します。これは後で使用されません。これは[XSS](https://en.wikipedia.org/wiki/Cross-site_scripting)を防ぐためですか? –
@MagnusEriksson私の間違い$ var2 = addslashes($ t1)ここにt1の代わりにvar1があるはずです。私はもう一度更新を確認してください。 – pravakar