Проблемы с загрузкой изображений в PHP - PullRequest
0 голосов
/ 13 января 2009
<td valign="top">
<input type="hidden" name="MAX_FILE_SIZE" value="12485760" />
Image?</td>
<td><input type="file" name="image">

$path = "uploads/";
$path .= basename($_FILES['image']['name']);

$path = addslashes($path);
$name = $_FILES['image']['name'];

echo $path;

move_uploaded_file($_FILES['image']['tmp_name'], $path);

Приведенный выше код должен работать, так как у меня очень похожий, работающий аккуратно Тем не менее, он, похоже, ничего не берет из формы (самый верхний код). Если бы кто-нибудь мог указать, как я дурак и сломал это, я был бы очень благодарен

Ответы [ 2 ]

7 голосов
/ 13 января 2009

Убедитесь, что у вас есть атрибут enctype="multipart/form-data" в теге <form>.

0 голосов
/ 13 января 2009

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

file ['name'] не может содержать ничего пригодного для использования в качестве имени файла, и злоумышленник может легко установить для него что-то, включающее часть пути '..', чтобы перезаписывать файлы вне папки загрузки. И, загрузив файл с расширением .php, они, скорее всего, смогут выполнить произвольный код на вашем сервере.

Если вы вообще используете файл ['name'], он должен быть строго очищен (например, удалить все не алфавитно-цифровые символы и добавить соответствующее расширение файла), и вам придется иметь дело с возможностью не получить имя файла вообще (в этом случае вы должны будете составить его, например, из случайных чисел).

'echo $ path' также предоставляет HTML-инъекцию, приводящую к атакам с использованием межсайтовых сценариев.

addlashes () не защищает вас от обхода каталога или внедрения HTML. Он также не может корректно экранировать строки SQL, что и было его первоначальной целью. Хорошее практическое правило заключается в том, что любое приложение, использующее addlashes () (явно или неявно, с помощью magic_quotes), делает Doing It Wrong.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...