Aus irgendeinem Grund gibt die AppModel->updateAll()
-Methode die an sie übergebenen Daten nicht frei. Wenn ich jedoch die Dokumentation durchführe, kann ich nichts darüber herausfinden, wie man Daten mit CakePHP entkommt.
Down in datasources/dbo/dbo_mysql.php
Ich habe die value()
-Methode gefunden, die anscheinend nur mysql_real_escape_string()
verwendet - aber wie greifen Sie auf diese Methode in den Modellen von oben zu?
Für meisten von CakePHPs Modellfunktionen müssen Sie sich keine Gedanken darüber machen, wie Sie die Eingabe umgehen können.
CakePHP schützt dich bereits davor SQL-Injektion, wenn Sie Folgendes verwenden:
- CakePHPs ORM Methoden (wie
find()
undsave()
) plus:- Richtige Array-Notation (d. h.
array('field' => $value)
) anstelle von Roh-SQL.Zur Bereinigung gegen XSS Es ist generell besser, rohes HTML zu speichern in der Datenbank ohne Änderung und zur Zeit von Ausgabe / Anzeige.
Siehe Ссылка Es gibt jedoch andere Fälle, in denen Sie eine benutzerdefinierte SQL-Abfrage oder Unterabfrage ausführen müssen. In diesen Fällen können Sie entweder:
Model->getDataSource()->value()
Die value()
-Funktion entkommt grundsätzlich und fügt Zitate wie folgt hinzu:
Diese verwendet ist eine Option, wurde aber ab CakePHP 2.4 nicht weiter unterstützt.
Hier ist eine alternative Vorgehensweise, Sanitize :: paranoid zu verwenden: