Стойка атаки настроить текст на странице черного списка
Я использую стойку, чтобы заблокировать IP.
# Block requests from 1.2.3.4
Rack::Attack.blocklist('block 1.2.3.4') do |req|
# Requests are blocked if the return value is truthy
'1.2.3.4' == req.ip
end
IP успешно заблокирован. Человек может просмотреть белую страницу со словом "запрещено" в верхнем левом углу. Есть ли способ изменить строку "запрещено"?
РЕДАКТИРОВАТЬ:
Пробовал с помощью этого. Все мои другие страницы ошибок также настроены аналогично. https://mattbrictson.com/dynamic-rails-error-pages Но он не работает на странице запрещенных атак стойкой 403.
3 ответа
Чтобы настроить ответ блочных и дросселированных запросов, используйте объект, который привязан к интерфейсу приложения Rack.
Rack::Attack.blocklisted_response = lambda do |env|
# Using 503 because it may make attacker think that they have successfully
# DOSed the site. Rack::Attack returns 403 for blocklists by default
[ 503, {}, ['Your custom string here']]
end
см. соответствующую документацию
затирать blocklisted_response
,
@ Тони Винсент прав. Я думал, что я просто уточню немного дальше.
Вам просто нужно перезаписать значение по умолчанию для blocklisted_response
,
Вы можете увидеть значение по умолчанию здесь:
@blocklisted_response = lambda { |_env| [403, { 'Content-Type' => 'text/plain' }, ["Forbidden\n"]] }
Так в вашем rack_attack.rb
инициализатор, вы можете сделать следующее:
Rack::Attack.blocklisted_response = lambda{ |_env| [ 403, { "Content-Type" => "text/plain" }, [ "You have been blocked from the system. If you think this has been done in error, please contact Support at support@system.com. Thank you." ] ] }
Перезаписать blocklisted_response
Вы также можете отображать HTML-страницы
Итак, в вашем инициализатореack_attack.rb вы можете сделать следующее:
Rack::Attack.blocklisted_response = lambda{ |_env| [ 403, { "Content-Type" => "text/html" }, [ "<!DOCTYPE html>
<html>
<head>
<title>The page you were looking for doesn't exist (404)</title>
<meta name='viewport' content='width=device-width,initial-scale=1'>
</head>
<body class='rails-default-error-page'>
<!-- This file lives in public/404.html -->
<div class='dialog'>
<div>
<h1>The page you were looking for doesn't exist.</h1>
<p>You may have mistyped the address or the page may have moved.</p>
</div>
<p>If you are the application owner check the logs for more information.</p>
</div>
</body>
</html>
" ] ] }