** Предупреждение: подход, описанный в этом ответе, применим только к очень конкретным сценариям и не является безопасным, поскольку атаки SQL-инъекции не только полагаются на возможность вставлять X=Y
. **
Если злоумышленники пытаются взломать форму с помощью переменной PHP $_GET
или с помощью строки запроса URL, вы сможете поймать их, если они не защищены.
RewriteCond %{QUERY_STRING} ([0-9]+)=([0-9]+)
RewriteRule ^(.*) ^/track.php
Поскольку 1=1
, 2=2
, 1=2
, 2=1
, 1+1=2
и т. д. ... являются распространенными вопросами к базе данных SQL злоумышленника. Возможно, он также используется многими хакерскими приложениями.
Но вы должны быть осторожны, чтобы не переписывать безопасный запрос с вашего сайта. Вышеупомянутый код дает вам возможность переписать или перенаправить (зависит от вас) эту динамическую строку запроса, зависящую от хакерства, на страницу, в которой будет храниться IP-адрес злоумышленника или EVEN THEIR COOKIES, история , браузера или любой другой конфиденциальной информации, поэтому вы можете иметь дело с ними позже, запретив их учетную запись или контактные органы.
Смотрите на mime_content_type или Fileinfo. Это встроенные команды PHP для определения типа файла путем рассмотрения содержания файла. Также проверьте комментарии к вышеупомянутым двум страницам, существуют некоторые другие хорошие предложения.
Лично мне везло с помощью чего-то, что это по существу system("file -bi $uploadedfile")
, но я не уверен, является ли это лучшим методом.
По моему скромному мнению, все методы проверки типа MIME бесполезны.
Говорят, что Вы имеете, который должен иметь тип MIME application/pdf
. Стандартные методы пытаются найти что-то, что похоже на заголовок PDF (%PDF-
или что-то как этот), и они возвратятся 'Хорошо, кажется, что это - файл PDF' на успехе. Но на самом деле это не делает означает что-либо. Можно загрузить файл, содержащий [только 112], и он передаст проверку MIME.
я имею в виду, имеет ли файл ожидаемый тип MIME - он будет всегда передавать проверку типа MIME иначе, результат не определен.
Я предполагаю, что Вы собираетесь иметь фиксированный белый список типов файлов, которые Вы примете.
Для каждого из этих типов, Вы оказываетесь перед необходимостью использовать различные методы, чтобы проверить, что они - допустимые примеры того формата.
существует два связанных вопроса:
это примерно походит на него, мог бы быть правильный тип? (Для JPEG Вы могли проверить заголовки, как Вы упомянули. Для многих Основанных на Unix форматов Вы могли проверить "волшебный cookie".)
он на самом деле допустимый пример того типа (например, Для любого подобного XML формата, Вы могли проверить против DTD.)
я думаю, что для каждого формата необходимо задать отдельные вопросы для каждого, потому что ответ будет очень отличаться для PDFs по сравнению с zip-файлами.