06-09-2012, 09:47 AM
(Modification du message : 06-09-2012, 09:51 AM par Sephi-Chan.)
Tu es dans la section Graphisme. iffle:
Cette faille de GitHub est issu d'une négligence de la part des développeurs, ce n'est pas une faille de Rails.
Dans les modèles ActiveRecord de Rails, tu peux créer un objet à partir d'un hash d'attributs.
Tout est défini dans cette page de l'API : ActiveModel::MassAssignmentSecurity::ClassMethods.
Avec un modèle tel que :
Tu peux écrire :
Le problème, c'est que le tableau d'attribut peut venir d'un formulaire, et donc être corrompu.
Pour te protéger, il faut interdir l'injection de certains attributs sensibles par ce moyen. Comme ceci :
Ainsi, si on execute le même code que précédemment, une exception sera lancée : il est interdit d'injecter l'attribut
Depuis, les développeurs de Rails ont interdit l'injection des attributs par défaut : il faut faire une liste blanche. C'est plus prudent et ça évitera ce genre d'accidents à l'avenir.
J'ignorais que tu t'intéressais à Rails.
Cette faille de GitHub est issu d'une négligence de la part des développeurs, ce n'est pas une faille de Rails.
Dans les modèles ActiveRecord de Rails, tu peux créer un objet à partir d'un hash d'attributs.
Tout est défini dans cette page de l'API : ActiveModel::MassAssignmentSecurity::ClassMethods.
Avec un modèle tel que :
class User < ActiveRecord::Base
end
Tu peux écrire :
attributes = { name: 'Jon Snow', admin: true }
User.create(attributes)
Le problème, c'est que le tableau d'attribut peut venir d'un formulaire, et donc être corrompu.
Pour te protéger, il faut interdir l'injection de certains attributs sensibles par ce moyen. Comme ceci :
class User < ActiveRecord::Base
attr_accessible :name
end
Ainsi, si on execute le même code que précédemment, une exception sera lancée : il est interdit d'injecter l'attribut
admin
. Les développeurs de GitHub avaient oublié ça.Depuis, les développeurs de Rails ont interdit l'injection des attributs par défaut : il faut faire une liste blanche. C'est plus prudent et ça évitera ce genre d'accidents à l'avenir.
J'ignorais que tu t'intéressais à Rails.