Согласно этому Основы внедрения 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
. Но это все: другие персонажи, которых я пробую, тоже не срабатывают.
Вот что я пробовал:
$request_uri ~ "%27|%22"
: одиночный работает, двойной - нет$request_uri ~ "%27|\""
: одиночный работает, двойной - нет$request_uri ~ "%27|0x"
: оба работают, но 0x
получает ложные срабатывания большой палец = 230x240И я даже не уверен, как мне подойти к обратной косой черте.
Вы, ребята, знаете, как заставить его работать?
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, установленных некоторыми (не всеми) программами отслеживания / аналитики.