Назад | Перейти на главную страницу

Поймать обратную косую черту, одинарные и двойные кавычки в запросах GET

Согласно этому Основы внедрения SQL статья:

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

  • ' Одиночная цитата
  • " Двойная кавычка
  • \ Обратная косая черта (escape-символ 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. Но это все: другие персонажи, которых я пробую, тоже не срабатывают.

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

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

Вы, ребята, знаете, как заставить его работать?

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

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

Главный 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, установленных некоторыми (не всеми) программами отслеживания / аналитики.