Попробуйте следующее. Это далеко от дурака, но это быстрая проверка. он будет блокировать все, что помечено .php (как на клиентском компьютере), поэтому, если у них есть что-то вроде 'do_evil.php.txt', это будет разрешено, НО (прочитайте примечания к коду)
$file_ext = substr($_FILES['userfile']['name'], -3);
if($file_ext == 'php') {
//REJECT FILE
}
else {
// allow upload and once the file has been upload to the temp directory
// have a peice of code move the file to the final location and rename
// the file and specify a new file extension, using $file_ext as the extension
// so even if the file was 'do_evil.php.txt' when it comes to rest at the
// final location it will be 'do_evil.txt' and thus treated by the server as a
// text file and not PHP
}
Я использовал вышеупомянутое в прошлом с результатами снижения. Это ни в коем случае не пулевое доказательство, но это должно, по крайней мере, помочь. я думаю, что у меня может быть какой-то код, который делает все это, если вам это нужно, я буду искать его, но без обещаний я могу его найти