apollographql - изменения записей в объектах в локальном состоянии повторно рендеринга?

Это бот-тестирование уязвимостей SQL-инъекций, закрывая запрос с апострофом, а затем устанавливая переменную. Существуют также аналогичные инъекции, которые имеют дело с командами оболочки и / или проходами по пути файла. Является ли это «хорошим ботом» или плохим ботом, неизвестно, но если инъекция работает, у вас больше проблем. Вероятность 99% вашего сайта не генерирует эти ссылки стиля, и вы ничего не можете сделать, чтобы остановить их от обработки этих URL-адресов, если вы не заблокируете запрос (-и) с помощью простой строки регулярного выражения или более сложного WAF, такого как ModSecurity.

Блокировка на основе пользовательского агента не является эффективным углом. Вам нужно искать эвристику запроса и блокировать на основе этого. Некоторые примеры вещей, которые нужно искать в url / request / POST / referrer, как и utf-8, так и шестнадцатеричные символы:

  • двойные апострофы
  • двойные периоды, особенно после с помощью косой черты в разных кодировках
  • слова, такие как «script», «etc» или «passwd»
  • пути, такие как dev/null, используемые с выходом pipe / echoing shell
  • % 00 символов в стиле байт, используемых для инициализации новой команды
  • http в URL-адресе более одного раза (если только ваш сайт не использует его)
  • что-либо относительно cgi (если только ваш сайт использует его)
  • случайные «корпоративные» пути для таких вещей, как coldfusion, tomcat и т. д.

Если вы не используете WAF, вот регулярное выражение, которое должен захватить многие из них в пределах URL-адреса. Мы используем его в PHP-приложениях, поэтому вам может понадобиться / нужно будет настроить некоторые экраны / взгляды в зависимости от того, где вы используете это. Обратите внимание, что это имеет .cgi, wordpress и wp-admin вместе с кучей других вещей в регулярном выражении, удалите их, если вам нужно.

$invalid = "(\(\))"; // lets not look for quotes. [good]bots use them constantly. looking for () since technically parenthesis arent valid
$period = "(\\002e|%2e|%252e|%c0%2e|\.)";
$slash = "(\\2215|%2f|%252f|%5c|%255c|%c0%2f|%c0%af|\/|\\\)"; // http://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work
$routes = "(etc|dev|irj)" . $slash . "(passwds?|group|null|portal)|allow_url_include|auto_prepend_file|route_*=http";
$filetypes = $period . "+(sql|db|sqlite|log|ini|cgi|bak|rc|apk|pkg|deb|rpm|exe|msi|bak|old|cache|lock|autoload|gitignore|ht(access|passwds?)|cpanel_config|history|zip|bz2|tar|(t)?gz)";
$cgis = "cgi(-|_){0,1}(bin(-sdb)?|mod|sys)?";
$phps = "(changelog|version|license|command|xmlrpc|admin-ajax|wsdl|tmp|shell|stats|echo|(my)?sql|sample|modx|load-config|cron|wp-(up|tmp|sitemaps|sitemap(s)?|signup|settings|" . $period . "?config(uration|-sample|bak)?))" . $period . "php";
$doors = "(" . $cgis . $slash . "(common" . $period . "(cgi|php))|manager" . $slash . "html|stssys" . $period . "htm|((mysql|phpmy|db|my)admin|pma|sqlitemanager|sqlite|websql)" . $slash . "|(jmx|web)-console|bitrix|invoker|muieblackcat|w00tw00t|websql|xampp|cfide|wordpress|wp-admin|hnap1|tmunblock|soapcaller|zabbix|elfinder)";
$sqls = "((un)?hex\(|name_const\(|char\(|a=0)";
$nulls = "(%00|%2500)";
$truth = "(.{1,4})=\1"; // catch OR always-true (1=1) clauses via sql inject - not used atm, its too broad and may capture search=chowder (ch=ch) for example
$regex = "/$invalid|$period{1,2}$slash|$routes|$filetypes|$phps|$doors|$sqls|$nulls/i";

Используя его, по крайней мере с PHP, довольно прямолинейно с preg_match_all(). Вот пример того, как вы можете его использовать: https://gist.github.com/dhaupin/605b35ca64ca0d061f05c4cf423521ab

ВНИМАНИЕ: Будьте осторожны, если вы установите для этого автобан (т.е. , фильтр fail2ban). MS / Bing DumbBots (и другие) часто запускают URL-адреса, введя такие вещи, как странные тройные точки из следующих усеченных URL-адресов, или пытающиеся попасть в tel: ссылку как URi. Я не знаю почему. Вот что я имею в виду: ссылка с текстом www.example.com/link-too-long...truncated.html может указывать на правильный URL-адрес, но Bing может попытаться получить к нему доступ «как он выглядит» вместо того, чтобы следовать за href, в результате чего WAF-хит из-за двойных точек.

0
задан U4EA 31 March 2019 в 15:48
поделиться