2017-09-25 1 views
0

Ist es sicher, Daten über die Methode load() in das Modell zu laden? In $ Modell gibt es nur Namen und E-Mail-Eigenschaften, die nur "String" Validator haben.

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

} 

Wenn ich etwas wie oben gezeigt mache, ist es gegen sql Injektion sicher?

Antwort

2

Ja ist es! (Entschuldigung, ich konnte dem Witz nicht widerstehen).

Eigentlich ist das Modell eine Abstraktion von der Datenbank, also ist es egal, welche DB Sie verwenden und/oder welche Probleme auftreten könnten. Normalerweise werden die meisten DB-Operationen in Yii2 über ActiveRecord ausgeführt, das PDO prepared statements verwendet, das SQL-Injection-Angriffe verhindert.

Wenn Sie Active allerdings nicht verwenden möchten, empfehle ich Ihnen this zu lesen.

+0

Was genau "String" Validator tut? Wie verhindert es sql Injektionen? –

+0

Es prüft, ob der Wert eine Zeichenfolge ist und erfüllt die zusätzlichen Einschränkungen, die Sie angegeben haben (falls vorhanden). Schutz vor SQL-Injections kommt von ActiveRecord internen PDO-Anweisungen, überprüfen Sie meine aktualisierte Antwort – gmc