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

Перебирая код 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')

}

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

Автор публикации

не в сети 6 лет

Scrin

Комментарии: 1Публикации: 9Регистрация: 01-06-2012

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

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

Отправить комментарий

Сортировать:   новые | старые | популярные
ZKolyaNZ
Участник

можно сократить код:
1. запрос на формат .php удалит
2. проверку миме типа тоже массивом перебор
и кода меньше и красивее…

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