То есть не безопасный. По крайней мере, вам нужно убедиться, что файл действительно был загруженным файлом, а не файлом, уже существующим на сервере, например / etc / passwd. Для этого вам нужно использовать is_uploaded_file()
.
Пример:
<?php
if (is_uploaded_file($_FILES['file1']['tmp_name'])) {
$tmp_name1 = $_FILES['file1']['tmp_name'];
if (($handle = fopen($tmp_name1, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
// SQL insert statement
}
fclose($handle);
}
}
?>
Вам также следует переименовать любой файл, загруженный на ваш сервер, поскольку оставление имени файла без изменений может привести к удаленной файловой атаке, когда кто-то исполняет файл на вашем сервере.
Наконец, если для загрузки файла предполагается, что он принимает только определенный тип файла, например изображения, то вам обязательно следует убедиться, что файл действительно является изображением. По крайней мере, проверьте расширение файла, чтобы убедиться, что это .png, .gif, .jpg и т. Д. Если это файл .exe, то сразу же отклоните его, так как он явно не является изображением и, следовательно, бесполезен .
<?php
if (is_uploaded_file($_FILES['file1']['tmp_name'])) {
$allowedExtensions = array("txt","csv","htm","html","xml","css","doc","xls","rtf","ppt","pdf","swf","flv","avi","wmv","mov","jpg","jpeg","gif","png");
if (!in_array(end(explode(".", strtolower($_FILES['file1']['name']))), $allowedExtensions)) {
// Bad file type. Error!
}
else {
$tmp_name1 = $_FILES['file1']['tmp_name'];
if (($handle = fopen($tmp_name1, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
// SQL insert statement
}
fclose($handle);
}
}
}
?>