Отслеживать обратные косые черты, одинарные и двойные кавычки в запросах GET

Отслеживать обратные косые черты, одинарные и двойные кавычки в запросах GET

Согласно этомуОсновы SQL-инъекцийстатья:

<…> Для взлома\фаззинга SQL-запросов в основном используются следующие операции.

  • 'Одинарная кавычка
  • "Двойная кавычка
  • \Обратная косая черта (символ экранирования MySQL)

Иногда встречаются также шестнадцатеричные символы (например 0x3a3a, ).

Я хочу регистрировать и удалять все запросы, содержащие их. Вот где я сейчас:

set $susp 0;
if ($request_uri ~ "%27") {
  set $susp 1;
}
location ~ \.php {
    if ($susp = 1) {
        access_log /var/log/nginx/for-review.log;
        return 500;
    }
    # further fastcgi configuration
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
}

(Я это понимаюесли это зло, но этоказалось необходимым)

Это не срабатывает на /foo/ba'r, но, по крайней мере, отлично работает на /?foo=b'ar. Но это все: другие символы, которые я пробую, тоже не срабатывают.

Вот что я попробовал:

  • $request_uri ~ "%27|%22": одинарный работает, двойной нет
  • $request_uri ~ "%27|\"": одинарный работает, двойной нет
  • $request_uri ~ "%27|0x": оба работают, но 0xдают ложные срабатываниябольшой палец=230x240

И я даже не уверен, как мне подойти к обратному слешу.

Ребята, вы знаете, как это сделать?

P.S. Думал об использованииАмазонка БЫЛА, но для этого требуется другой сервис (Cloudflare или балансировщик нагрузки), к которому я пока не готов.

PS Я понимаю, что нужно принять другие меры; это должно убрать эти раздражающие GET-сканирования. Также я сомневаюсь, что у законных посетителей они будут появляться во время просмотра. Моя логика была такой: любой барьер, усложняющий взлом, помогает

решение1

Основное nginx.conf, под http {}:

# set the variable
map "$request_uri" $susp {
    default 0;
    "~*(?<suspm>(\\x|%)(3c|3e|5c|22|27)+)" 1;
}
# match logging
log_format suspl '$remote_addr /$suspm/ - $remote_user $host [$time_local] '
    '"$request" $status $body_bytes_sent '
    '"$http_referer" "$http_user_agent" "$http_cookie"';

Индивидуальная конфигурация виртуального хоста:

location / {
    if (\$susp = 1) {
        access_log /var/log/suspl.log suspl;
        return 403;
    }
    # etc…
}

Также,

Я сомневаюсь, что у законных посетителей они появятся во время просмотра.

Внимание: оказывается, что-то подобное есть %7B%22в файлах cookie, устанавливаемых некоторым (не всем) программным обеспечением для отслеживания/аналитики.

Связанный контент