2016-05-02 2 views
1

Ist der folgende Code sicher?Ist es sicher, DateTime() von GET zu erstellen?

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

AFAIK gibt es keine direkten Möglichkeiten, Datumsformat-String für bösartige Zwecke zu verwenden. Es kann jedoch einige Besonderheiten in verschiedenen Betriebssystemen geben, also - würden Sie eine zusätzliche Überprüfung hinzufügen, um sicherzustellen, dass das Datum genau wie yyyy-mm-dd aussieht?

Ich benutze beide PHP5.6 & PHP7.

+0

Es hängt davon ab, was Sie vorhaben, mit '$ d' zu tun nächsten – vaultboy

+2

Sie sollten immer für das Datumsformat überprüfen, aber nicht nur aus Sicherheitsgründen (hier es gibt nicht viel Sicherheitsproblem), aber um Ihre Logs "zu managen" ... können Sie eine bessere Nachricht geben, dass "unerwarteter String in __construct() ...", falls das Format falsch ist ... – Random

Antwort

2

Ja, dieser Code ist immer sicher. Im schlimmsten Fall versucht jemand, etwas Schädliches zu senden, und es wird eine Ausnahme ausgelöst, weil es kein gültiges Datum ist. Ich würde es in einer try/catch wickeln:

try { 
    $date = new \DateTime($_GET["date"]); 
} catch (\Exception $e) { 
    // Log and return a status code of 404 or similar 
} 
Verwandte Themen