0

以下をエスケープ/サニタイズする必要がありますか?

  1. $_SERVER['HTTP_USER_AGENT']PHP スクリプト内 (データベースに挿入されず、ユーザーに表示されません)。例:

    if ($_SERVER['HTTP_USER_AGENT']==$xyz) {
            echo "Congrats, you are using XYZ browser";
    } else {
            echo "You are not using XYZ browser.";
    }
    
  2. $_SERVER['HTTP_USER_AGENT']たとえば、次のようにセッション変数として配置した場合:

    $_SESSION['userAgent']=$_SERVER['HTTP_USER_AGENT']
    
  3. ハッシュされるものすべて。たとえば:

    hash('sha512',$randomDataPostedByUser)
    
  4. メール本文用のユーザー入力 (つまり、メール ヘッダー インジェクションは既に処理済みです)。

上記のいずれかを除外/サニタイズする必要がある場合、それぞれの場合に最適な方法は何ですか?

4

1 に答える 1

4

いいえ、あなたが示す例のいずれにおいても衛生管理は必要ありませんが、メール本文の例では次の非常にまれな例外があります。

(Windows のみ) PHP が SMTP サーバーと直接通信しているときに、行頭にピリオドが見つかった場合、それは削除されます。これに対抗するには、これらの出現箇所を二重ドットに置き換えます。

ただし、何をするかによっては、後でセッション変数をサニタイズする必要がある場合があります。

その他の注意事項:

  • ユーザー エージェント文字列が大きく異なるため、最初の例は意味がないようです。strstr()ユーザー エージェントと一致させるには、 または正規表現を使用する必要があります。

  • ユーザー エージェントをセッション変数に保存することは、比較を行う場合にはお勧めできません。必要なときに $_SERVER 配列から取得するだけです。

于 2011-06-04T17:15:48.920 に答える