[RUBY] Rails mesures CSRF et fichiers html sous public

Environnement et message d'erreur

J'essaye de poster des données à partir d'un fichier html (fichier statique) sous public sans utiliser ERb of Rails.

Terminal.


Can't verify CSRF token authenticity.

Le fait est que "j'ai joué la demande car elle est différente du jeton de sécurité auquel je m'attendais."

Qu'est-ce que CSRF?

Abréviation de Cross Site Request Forgery, l'une des tricheries.

Le fait qu'un attaquant envoie une requête au site cible en faisant cliquer la victime sur un lien ou visiter une page. En d'autres termes, l'attaquant peut s'authentifier en tant que requête valide et falsifier les informations de compte de la victime.

Par conséquent, Rails prend automatiquement des mesures pour éviter que des éléments malveillants ne soient confondus avec des requêtes normales.

Rails mesure

Rails a déjà le code de contre-mesure CSRF automatiquement intégré dans application_controller.

application.controller.rb


protect_from_forgery with: :exception

Il introduit un jeton de sécurité requis qui est automatiquement inclus dans tous les formulaires générés par Rails et les demandes Ajax.

Si le jeton de sécurité ne correspond pas à la valeur attendue, une erreur peut se produire.

Désactiver les mesures CSRF elles-mêmes

application_controller.rb


protect_from_forgery with: :null_session

Les mesures CSRF sont désactivées pour toutes les actions. Cependant, cela pose le problème d'être extrêmement vulnérable à l'agression.

Exclure partiellement les jetons de sécurité

En excluant uniquement les actions spécifiques qui reçoivent des API de l'extérieur, il est possible de recevoir des données de clients tout en assurant la sécurité.

feeds_controller.rb


protect_from_forgery :except => [:create, :index]

def create
end

def index
end

En spécifiant le nom de l'action du contrôleur, il est désormais possible de recevoir des données du fichier html sous public.

J'ai été autorisé à faire référence à

https://qiita.com/chobi9999/items/2b59fdaf3dd8f2ed9268

https://www.transnet.ne.jp/2016/10/26/%E3%80%8Cruby-on-rails%E3%81%AEcsrf%E5%AF%BE%E7%AD%96colnd/

https://railsguides.jp/security.html#%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%AA-csrf

Recommended Posts

Rails mesures CSRF et fichiers html sous public
[Rails] Ajout d'attributs SameSite et Secure ~ Mesures de sécurité des rails ~
mémo html & rails
[Rails] Lorsque vous utilisez ajax, faites attention aux "mesures CSRF".