2017-09-25 2 views
0

Est-il possible de charger des données dans le modèle via la méthode load()? Dans $ model, il n'y a que des propriétés de nom et d'email, qui ont seulement un validateur "string".

if ($model->load(Yii::$app->request->post() && $model->save()){ 

} 

Lorsque je fais quelque chose comme montré ci-dessus, est-il sûr contre l'injection sql?

Répondre

2

Oui c'est! (désolé, je ne pouvais pas résister à la blague).

En fait, le modèle est une abstraction de la base de données, donc il ne se soucie pas de la DB que vous utilisez et/ou quels problèmes pourraient survenir. Habituellement, dans Yii2 la plupart des opérations de DB se produisent via ActiveRecord, qui utilise PDO prepared statements qui empêche les attaques SQL.

Si vous n'utilisez pas ActiveRecord, je vous recommande de lire this.

+0

Que fait exactement le validateur «chaîne»? Comment cela empêche les injections sql? –

+0

Il vérifie que la valeur est une chaîne et remplit les restrictions supplémentaires que vous avez spécifiées (le cas échéant). La protection contre les injections SQL provient des instructions PDO internes d'ActiveRecord, vérifiez ma réponse mise à jour – gmc