2014-11-22 4 views
0

На моем сайте часто нападают хакеры. Они загружают php и sql-коды в поле изображения. Поэтому мне нужно ограничить это. Как я могу сделать это возможным, т. Е. Нумерация кода должна быть разрешена через поля ввода. Просьба представить некоторые рекомендации по повышению безопасности, также как введение capcha.Ограничение загрузки изображения в PHP

+0

проверить тип файла, если какой-либо один файл для загрузки, чтобы узнать больше, как проверить тип, пожалуйста, обратитесь к этому URL-адресу http://stackoverflow.com/questions/6755192/uploaded-file-type-check- by-php –

+0

Убедитесь, что вы не храните файлы с расширением файла, которое веб-сервер обрабатывает как PHP. Вам следует лучше принимать только белые версии файлов или изменять расширение файла в соответствии с типом обнаруженного изображения. – Gumbo

+1

@LalitSharma Это абсолютно бесполезно. Сервер не заботится о представленном типе носителя при принятии решения о том, как обрабатывать файл, кроме того, что это может быть подделано. – Gumbo

ответ

1

Ну вы действительно должны проверить все, что приходит в, вот набор руководств:

Предположим, что ваш входной файл с именем «образ»:

$file = $_FILES["image"]; 
$allowedSize = 5000; 
$extensions = array("jpg", "png"); // allowed extensions 


if(getimagesize($file['tmp_name']) == false) 
{ 
    // this is not an image 
} 
else 
{ 
    // check the size 
    if($file['size'] < $allowedSize) 
    { 
    $pathinfo = pathinfo($file); // now check extension 
    if(in_array($pathinfo['extension'], $extensions)) 
    { 
     // do the upload 
    } 
    } 

} 
0

Хороший подход для лечения любого пользователя ввод в качестве потенциальной атаки.

Выполнить расширение файла и файл сравнение типа на любом и все пользователя закачал файлы. Используйте белый список для достижения этого на практике.

Если $_FILES['file_upload'] является загруженным файлом, убедитесь, что он соответствует любому из белых списка расширений:

PHP код

$whitelist = array(
    'jpg', 
    'png', 
    'jpeg', 
    'gif' 
); 

$pathinfo = pathinfo($_FILES['file_upload']); 

if (!in_array($pathinfo['extensions'], $whitelist)) 
{ 
    echo 'This extension is not allowed.'; 
    exit; 
} 

Кроме того, вы также можете проверить загруженный файл MIME content type:

Код PHP

$whitelist = array(
    'image/jpg', 
    'image/jpeg', 
    'image/pjpeg', 
    'image/gif', 
    'image/png', 
    'image/x-png' 
); 

$mime_type = $_FILES['file']['type']; 

if (!in_array($mime_type, $whitelist)) 
{ 
    echo 'This file format is not allowed.'; 
    exit; 
} 

Приведенный выше код будет гарантировать, что ваши пользователи могут только загрузки GIF, JPG, PNG и изображения - без соблюдения использование только их наиболее распространенных форматов, оставляя меньше места для ошибок.

Кроме того, если у вас есть другие уязвимые входы (текст/текстовая область), убедитесь, что вы правильно дезинфицируете все, что получено. Я рекомендую читать следующее: http://php.net/manual/en/security.database.sql-injection.php

Смежные вопросы