Y at-il de toute façon de faire un Rails / application Rack dire le serveur Web pour abandonner la connexion

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

Question

Il y a plusieurs raisons de sécurité pour lesquelles on voudrait laisser tomber une connexion HTTP sans réponse (par exemple. les meilleures pratiques SSL OWASP ). Lorsque ceux-ci peuvent être détectés au niveau du serveur, alors il n'y a pas grand-chose. Cependant, si vous ne pouvez détecter cette condition au niveau de l'application?

Est-ce que Rails, ou plus généralement en rack, ont une manière standard de dire au serveur d'abandonner la connexion sans réponse? Sinon, y at-il des en-têtes standard pour passer dans ce accompliront que dans les serveurs web communs (je pense Nginx ou Apache)? Même s'il n'y a pas un en-tête standard est-il un moyen raisonnable de configurer ce comportement? Est-ce confié une mission d'un fou?

Était-ce utile?

La solution

Nginx a un mécanisme pour cela. Lorsque vous retournez un code d'état spécial 444 (il est non-standard), Nginx tombe silencieusement la connexion. Cela se produit uniquement lorsque vous retournez ce code de la configuration Nginx, à savoir comme

location = /drop {
  return 444;
}

et vous ne pouvez pas retourner ce code d'état de votre application. La solution consiste à revenir en-tête X-Accel-Redirect: /drop de l'application pour indiquer l'endroit Nginx utilisation de /drop pour cette demande.

Autres conseils

Je peux me tromper mais je ne pense pas que rack ou Rails fournir un moyen de déposer une connexion. Je pense que le plus proche pourrait être quelque chose comme « rendre: rien => true ». Mais même cela ironiquement envoie quelque chose (un seul espace, apparemment pour éviter un bug Safari ...) mais au moins sa fin à la demande plutôt que de rediriger (le client ayant initié une nouvelle demande) comme OWASP met en garde contre.

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

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

J'espère que cela aide.

Pourriez-vous s'il vous plaît préciser ce que vous entendez par « la suppression d'une connexion »? Si le renvoi des en-têtes avec ce code de réponse que vous voulez (Motion proposée, non autorisée, Introuvable) est correct - vous avez déjà obtenu la réponse (render: en notant, ou: tête). Vous pouvez ajouter: status => some_status
. Si vous voulez dire la connexion chute au niveau TCP / IP, tout comme les pare-feu, bien que est une autre chose. Je doute que ce soit possible. Et je ne pense pas souhaitable (si possible).
Et sur la page que vous avez publié lien « Connexion laissant tomber » est utilisé comme synonyme de refuser la connexion HTTPS -. Moyens rendent une réponse avec le statut non autorisé ou quelque chose comme ça

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top