C'è qualche possibilità di superare questo confronto debole? L'utente può inserire un file con un'estensione non contenuta in $ consentita e superare il controllo di sicurezza?
$allowed = array('txt','docx');
if (isset($_REQUEST['file'])) {
$file = $_REQUEST['file'];
if (preg_match('#\.(.+)$#', $file, $matched) && isset($matched[1]) && !in_array($matched[1], $allowed))
echo 'You can not pass beacause extension is bad';
}
}
Se il codice precedente restituisce che è l'estensione corretta. C'è la prossima convalida:
if (strrpos($file, '.') !== false)
$ext = substr($file, strrpos($file, '.'));
else
$ext = '';
Mi chiedevo se potevo inserire qualcosa che aggirasse tutto il controllo e nella variabile $ ext = ''; Ho qualcosa come 'jpg' o 'bmp' che cosa è fuori dalla tabella consentita. È un esempio di strana verifica che ho trovato sul server alla penetrazione.