1
下面的代码是否安全?从GET构造DateTime()是否安全?
$d = new DateTime($_GET["date"]);
AFAIK有没有直接的方式来使用日期格式字符串用于恶意目的。但是,在不同的操作系统中可能存在一些特殊情况,因此 - 您是否会添加额外的检查以确保日期看起来完全像yyyy-mm-dd
?
我使用PHP5.6 & PHP7。
下面的代码是否安全?从GET构造DateTime()是否安全?
$d = new DateTime($_GET["date"]);
AFAIK有没有直接的方式来使用日期格式字符串用于恶意目的。但是,在不同的操作系统中可能存在一些特殊情况,因此 - 您是否会添加额外的检查以确保日期看起来完全像yyyy-mm-dd
?
我使用PHP5.6 & PHP7。
是的,这段代码总是安全的。在最糟糕的情况下,有人会尝试发送恶意内容,并抛出异常,因为它不是有效的日期。我将包装在一个try/catch:
try {
$date = new \DateTime($_GET["date"]);
} catch (\Exception $e) {
// Log and return a status code of 404 or similar
}
这取决于你要与'$ D'下一步要做什么 – vaultboy
您应经常检查的日期格式,但不只是出于安全原因(这里没有太多的安全问题),但为了“管理”你的日志...你可能会提供一个更好的消息,“在__construct()中出现意外的字符串...”,以防格式错误... – Random