2016-05-02 15 views
1

次のコードは安全ですか?GETからDateTime()を作成するのは安全ですか?

$d = new DateTime($_GET["date"]); 

は、私の知る限り、悪意のある目的の日付形式の文字列を使用する直接的な方法はありません。しかし、異なるOSにはいくつかの特質があるかもしれないので、日付が正確にyyyy-mm-ddのように見えるように追加のチェックを追加しますか?

私は両方ともPHP5.6を使用しています。& PHP7。

+0

それはあなたが$ D ' 'でやろうとしているかに依存します(ここではあなたが常にだけでなく、セキュリティ上の理由から、日付フォーマットをチェックする必要があります – vaultboy

+2

次の多くのセキュリティ上の問題はありませんが、ログを "管理"するために...フォーマットが間違っている場合に、 "予期しない文字列が__construct()..."と表示されることがあります。 – Random

答えて

2

はい、このコードは常に安全です。最悪の場合、誰かが悪意のあるものを送信しようとしますが、有効な日付ではないため例外がスローされます。私はのtry/catchでラップします:

try { 
    $date = new \DateTime($_GET["date"]); 
} catch (\Exception $e) { 
    // Log and return a status code of 404 or similar 
} 
関連する問題