[RUBY] Que sont les vulnérabilités d'attribution de masse?

Présentation

Quand j'étudiais les rails, je ne comprenais pas vraiment ce qu'était le mot «vulnérabilité d'affectation de masse», alors j'ai cherché et résumé dans mes propres mots.

Qu'est-ce que l'affectation en masse?

Plusieurs colonnes peuvent être spécifiées à la fois lors de la mise à jour de la base de données Rails.
Il est très pratique de pouvoir mettre à jour plusieurs colonnes en même temps.

Remarques

Bien que pratique, il y a des parties dangereuses à l'affectation en masse. Autrement dit, les demandes non autorisées peuvent altérer les privilèges d'administrateur.

Pourquoi l'autorité administrateur est-elle falsifiée?

En effet, vous pouvez modifier le contenu publié sur le formulaire à l'aide des outils de développement de Chorme.
Par exemple, supposons que le modèle User possède un attribut admin qui indique si vous êtes un administrateur de site Web.
Si vous ajoutez l'attribut admin en utilisant Edit as HTML de l'outil de développement, entrez la valeur et envoyez-la, la base de données sera mise à jour telle quelle.
Dans ce cas, même si vous n'êtes pas administrateur, vous pouvez vous faufiler dans le site Web et faire des bêtises, ce qui est une situation très dangereuse.
* À partir de Rails4, il n'est pas possible d'enregistrer ou de mettre à jour dans DB à moins qu'il ne soit défini sur un paramètre fort.

Qu'est-ce qu'un paramètre fort?

Il existe un paramètre puissant pour éviter les vulnérabilités d'attribution de masse. En utilisant le paramètre fort

, vous pouvez empêcher les demandes non autorisées à l'aide des outils de développement.

Comment utiliser des paramètres forts

params.require(:user).permit(:name, :email, :password, :password_confirmation)

Obtenez la valeur de la clé définie dans l'argument avec la méthode

require et filtrez uniquement les paramètres que vous souhaitez autoriser avec la méthode permit.

Recommended Posts

Que sont les vulnérabilités d'attribution de masse?
[rails] Que sont les paramètres forts?
Qu'est-ce qu'un argument de ligne de commande?
[Variables environnementales] rails Quelles sont les variables environnementales?
Quelles sont les variables pratiquement finales?
Que sont les méthodes de classe Ruby?
config.ru Que faites-vous?
Que sont les métriques Java? _Memo_20200818
Quelles sont les règles de JUnit?
[Java] Que sont les remplacements et les surcharges?