php - фильтрует / дезинфицирует QUERY_STRING с помощью REGEX для предотвращения атаки RFI - PullRequest
2 голосов
/ 13 июля 2011

Я хотел бы, чтобы фильтр REGEX - / соответствовал QUERY_STRING всякий раз, когда содержит такие параметры, как theese php|data|ftp|http|..|/|:// и любой другой символ, который можно использовать для включения удаленного файла.

Спасибо всем за время:

PS: я знаю, что это лучше сделать с помощью htaccess, но мне нужно регулярное выражение сейчас.

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

Не, если это ваша безопасность, она может сломаться. Белый список и / или проверка на наличие локальных файлов, прежде чем включать / требовать что-либо. А еще лучше: не позволяйте никому напрямую влиять на то, какие файлы вы включаете во внешние переменные.

2 голосов
/ 13 июля 2011

Если вы хотите предотвратить удаленное включение файла, вы можете просто отключить обертки потока , например

  • allow_url_include - эта опция позволяет использовать fopen с поддержкой URLобертки со следующими функциями: include (), include_once (), require (), require_once ().

и для любых других функций, поддерживающих URL

  • disable allow_url_fopen - эта опция включает блокировщики fopen с поддержкой URL, которые обеспечивают доступ к объекту URL, например, к файлам

Если вы хотите проверить, является ли параметр запроса URL-адресом, вы можете использовать parse_url

if (parse_url($url) === FALSE) {

или использовать filter_* функции

if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
...