Wie können Sie SQL-Daten in CakePHP umgehen?

8

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?

    
Xeoncross 20.08.2010, 19:33
quelle

3 Antworten

8

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:

     
  1. CakePHPs ORM   Methoden (wie find() und save() ) plus:
  2.   
  3. Richtige Array-Notation (d. h.    array('field' => $value) ) anstelle von   Roh-SQL.
  4.   

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:

Verwenden Sie vorbereitete Anweisungen

%Vor%

Benutzerdefinierte Escaping mit Model->getDataSource()->value()

%Vor%

Die value() -Funktion entkommt grundsätzlich und fügt Zitate wie folgt hinzu:

%Vor%

Sanitize-Klasse

Diese verwendet ist eine Option, wurde aber ab CakePHP 2.4 nicht weiter unterstützt.

    
Galen 20.08.2010, 19:39
quelle
2
%Vor%

CakePHP kümmert sich auch darum, Ihre Eingabe zu zitieren, weil sie als String markiert ist.

%Vor%     
mstra001 17.08.2014 19:06
quelle
-1

Hier ist eine alternative Vorgehensweise, Sanitize :: paranoid zu verwenden:

Ссылка

    
mikermcneil 19.09.2011 01:51
quelle

Tags und Links