Как правильно использовать Rack :: Protection :: RemoteToken - PullRequest
0 голосов
/ 28 февраля 2020

Я размещаю простое веб-приложение (Ruby Sinatra). Я включил рекомендуемое промежуточное программное обеспечение защиты, как показано ниже:

configure do
    use Rack::Session::Pool, :expire_after => 2592000 # seconds
    use Rack::Protection::RemoteToken
    use Rack::Protection::SessionHijacking
    use Rack::Protection::EscapedParams
    use BetterErrors::Middleware
    use Rack::Protection::ContentSecurityPolicy
    enable :sessions
end

Он отлично работает на локальном хосте, но когда я запускаю его на сервере и пытаюсь отправить форму, в ответе HTTP отображается «Запрещено». и из терминала входа в систему я вижу предупреждение, говорящее

[2020-02-28T05:52:49.931355 #11158]  WARN -- : attack prevented by Rack::Protection::RemoteToken

Я пытался

  • добавить скрытую метку входа с именем authenticity_token со значением, равным <%= session[:csrf]%>. То есть я не уверен, что это правильный способ использования токена.

  • применяется, давайте зашифруем, поэтому HTTP-запрос безопасен.

версии

Сервер Debian 9.10

Ruby (2.6.5)

Sinatra (2.0.8)

Более того

удалив этот модуль, веб-приложение работает отлично, но действительно ли я должен это делать?

Я использую Nginx для пересылки 80 туда, где находится порт веб-приложения (если это то, что вы назовите это, я не знаком с Nginx), будет ли проблема с Nginx?

...