Можно ли осуществить SQL-инъекцию через переменные $ _FILES? - PullRequest
2 голосов
/ 28 июня 2011

Я просто прохожу текущий проект, добавляя необходимый код для предотвращения внедрения SQL, XSS и т. Д. Однако мне было интересно, насколько легко было бы выполнить внедрение SQL через загрузку файла?

У кого-нибудь есть знания в этой области?

Ответы [ 5 ]

4 голосов
/ 28 июня 2011

Вы должны дезинфицировать любой пользовательский ввод. Это включает в себя $ _FILES. Например, если вы сохраняете загруженное имя файла в базе данных, это может быть использовано злоумышленником.

1 голос
/ 05 августа 2011

qbert220 ответил правильно, но я хотел добавить дополнительную заметку.

Вы должны убедиться, что файл имеет правильный тип MIME, в противном случае, если вы ожидаете, что изображение будет загружено и затем отображено, если «злой пользователь» загрузит скрипт php, он может быть запущен на вашем сервере и делать все, что вы могли сделать со сценарием.

0 голосов
/ 28 июня 2011

Никогда не думайте, что данный ввод можно использовать для внедрения SQL, избегайте любой переменной, отправляемой в базу данных.То же самое относится к XSS, когда вы выводите переменную.Не доверяйте $ _SERVER или любому другому суперглобальному.Не доверяйте и вашим переменным (инициализированным в коде).

0 голосов
/ 28 июня 2011

это можно сделать, если вы, например, вставляете имя файла в БД.

mysql_query("INSERT INTO images VALUES ('".$_FILES['upload']['name']."');"); //this is injectable
0 голосов
/ 28 июня 2011

Это зависит от потребностей вашего приложения.Если вы делаете галерею изображений и хотите пометить загруженные изображения, вы можете добавить данные для изображений в базу данных.Для этого вам может понадобиться поместить в базу данных содержимое $_FILES['image']['name'], тогда возможно внедрение SQL, если вы не укажете его значение.

...