Защищаем свой сайт от взлома через картинку (аватарку)

Перебирая код MFS увидел, что там до сих пор не исправлена дыра. Не так. Дырищааааааа, которая позволяет загружать shell скрипты. Если коротко, то благодаря shell можно получить полный доступ к сайту

Дыра в модулях, где есть загрузка картинок (баннер 468*60, баннер 100*10, баннер 88*31, аватар и т.д.)

Править я всё буду на примере загрузки баннера 468*60. С изначальным кодом можно ознакомиться здесь

Т.к. в MFS никто не над чем на заморачивался, то я просто устраняю проблему, без какого-либо красивого оформления

Способ решения был взять здесь

Сразу после
if (isset($_POST["url"]))
{

Мы вставляем “защитный” код

$filename=$_FILES['banfile']['name'];
$filetype=$_FILES['banfile']['type'];
$filename = strtolower($filename);
$filetype = strtolower($filetype);

//check if contain php and kill it
$pos = strpos($filename,'php');
if(!($pos === false)) {
die('error');
}
$file_ext = strrchr($filename, '.');

//check if its allowed or not
$whitelist = array(".jpg",".jpeg",".gif",".png");
if (!(in_array($file_ext, $whitelist))) {
die('not allowed extension,please upload images only');
}

$pos = strpos($filetype,'image');
if($pos === false) {
die('error 1');
}
$imageinfo = getimagesize($_FILES['banfile']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime'] != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
die('error 2');
}
//check double file type (image with comment)
if(substr_count($filetype, '/')>1){
die('error 3')
}

Всё, поздравляю. Ваш сайт теперь защищён. Должно у Вас получиться вот так

1

Понравилась статья? Поделись в соц. сетях:

Похожие новости

Комментарии

Добавить комментарий

Авторизация
*
*
Регистрация
*
*
*
Генерация пароля