Есть ли в любом случае, чтобы сделать приложение Rails / стойку, сообщите веб-серверу, чтобы отбросить соединение

StackOverflow https://stackoverflow.com/questions/2570489

Вопрос

Есть много причин безопасности, почему можно захотеть отбросить HTTP-соединение без ответа (например,. Лучшие практики SSL Owasp). Когда они могут быть обнаружены на уровне сервера, то это не имеет большого значения. Однако, если вы можете обнаружить только это состояние на уровне приложения?

Есть ли рельсы или более цело в стойке, имеют любой стандартный способ сообщить серверу, чтобы отменить соединение без ответа? Если нет, есть ли у некоторых стандартных заголовков, которые будут выполнены, что на общих веб-серверах (я думаю, что nginx или Apache)? Даже если нет стандартного заголовка, есть ли разумный способ настроить это поведение? Это ошибка дурака?

Это было полезно?

Решение

Nginx имеет механизм для этого. Когда вы возвращаете особый код статуса 444 (он нестандартный), NGINX молча бросает соединение. Это происходит только тогда, когда вы вернете этот код из конфигурации NGINX, т.е.

location = /drop {
  return 444;
}

И вы не можете вернуть этот код статуса из вашего приложения. Обходной путь должен вернуться X-Accel-Redirect: /drop заголовок из приложения, чтобы сказать NGINX /drop Расположение для этого запроса.

Другие советы

Я мог быть неправ, но я не думаю, что стойки или рельсы предоставляют способ бросить связь. Я думаю, что ближайшая может быть что-то вроде «визуализации: ничего => правда». Но даже что по иронии судьбы чего-то посылает (одно пространство, по-видимому, чтобы избежать ошибки Safari ...), но, по крайней мере, ее завершают запрос, а не перенаправить (наличие клиента инициирует новый запрос), когда Owasp предупреждает.

class TestController < ApplicationController
  def nothing
    render :nothing => true
  end
end

>> app.get('test/nothing')
=> 200
>> app.response.body
=> " "

Надеюсь, это поможет.

Не могли бы вы разработать то, что вы подразумеваете под «брошением соединения»? Если отправлять задние заголовки с любым ответом кода, который вы хотите (переехал, неавторизован, не найден), в порядке - у вас уже есть ответ (рендеринг: отметив или: голова). Вы можете добавить: status => uvere_status.
Если вы имеете в виду падение соединения на уровне TCP / IP, как и брандмауэры, ну это другое. Я сомневаюсь, что это возможно. И я не думаю, что целесообразно (если возможно).
А на странице вы опубликовали ссылку на «Droping Connection», используются в качестве синоним, чтобы отказаться от подключения HTTPS - значит сделать некоторый ответ со статусом неавторизованным или что-то подобное.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top