2016-07-11 9 views
1

以下が私のコードです。問題は、アポストロフィ( ')でユーザー名を入力すると、検索結果が返されたときに追加文字「\ backslash」が表示されていることです。下のコードからバックスラッシュを削除できませんか?

以下は、私は、バックスラッシュが追加取得されるように機能にaddslashescheckusername機能で使用されていることを見つける私のコードです。

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 からユーザーを制限することができ

+0

私は100%確信していませんが、 'addslashes'がセキュリティ上の理由で使用されていれば、それを間違っているコーディングしている人は誰でも確信しています。おそらく10年前にこの文脈でAddslashesが使用されました。それ以来、SQL Dbの挿入/読み込みにPrepared Statementsを使用していただけでなく、多くの変更がありました。 – Martin

+0

私はこれが何をすると思いますか分かりません。 '$ var2 = addslashes($ t1);'スラッシュを追加するだけで、後の行でそれらを削除できますか?また、 'preg_replace()'を実行して '$ var1'に格納します。これは後で使用されません。これは[XSS](https://en.wikipedia.org/wiki/Cross-site_scripting)を防ぐためですか? –

+0

@MagnusEriksson私の間違い$ var2 = addslashes($ t1)ここにt1の代わりにvar1があるはずです。私はもう一度更新を確認してください。 – pravakar

答えて

関連する問題