Was ist der beste Weg, mysql_real_escape_string und htmlspecialchars zu verwenden, während die Daten in CakePHP zu speichern?

StackOverflow https://stackoverflow.com/questions/956761

Frage

Ich bin mit FCKEditor mit CakePHP und wenn ich Daten aus dem Editor gesendet speichern möchte ich die htmlspecialchars () und mysql_real_escape_string () Funktionen auf die Daten laufen um es zu reinigen, bevor ich es in meiner Datenbank speichern. Das Problem ist, ich bin nicht wirklich sicher, wo dieser Rahmen in der CakePHP zu tun. Ich habe versucht, in der Steuerung wie folgt aus:

function add() 
{
   if (!empty($this->data)) 
   {
      if ($this->Article->save(mysql_real_escape_string(htmlspecialchars($this->data)))) 
      {
         $this->Session->setFlash('Your article has been saved.');
     $this->redirect(array('action' => 'index'));
      }

   }
}

Allerdings $ this-> Daten ist ein Array und die Funktionen Strings erwarten, so dass wird nicht funktionieren. Tue ich es in der validate Array des Modells? Ich habe keine Ahnung. Auch lassen Sie mich wissen, ob Laufen htmlspecialchars () innerhalb von mysql_real_escape_string () ist keine gute Praxis.

War es hilfreich?

Lösung

Sie nicht htmlspecialchars() verwenden, wenn Sie Speichern Daten, verwenden Sie es, wenn Sie Ausgang Daten in HTML. Was passiert, wenn Sie brauchen, in einem bestimmten Kontext anders als HTML an den Daten suchen?

Auch bin ich kein Kuchen Benutzer, aber ich würde überrascht, wenn Sie mysql_real_escape_string() anwenden müssen, wie Sie Daten entweder speichern. Die Datenbank-Zugriffsschicht sollten Sie vor SQL-Injection schützen, und indem sie es manuell tun Sie gehen doppelt entkommen Strings, um am Ende zu speichern.

Andere Tipps

Die kurze und einfache Antwort ist - wenn der Zugriff auf die Datenbank ist weg abstrahiert worden ist, gibt es keine Notwendigkeit für Sie diese Funktionen überhaupt zu nennen.

Der einzige Ort, wo sie benötigt werden, wenn Sie tatsächlich SQL aus Bits von Strings aufzubauen. Welche sollte man sowieso nicht tun, aber das ist eine andere Geschichte.

Unterm Strich ist - der Rahmen wird das Richtige tun, nicht stören

.

EDIT:. Wie Bill Karwin weist darauf hin - htmlspecialchars() aus der völlig falschen Abteilung ist hier

Wenn Sie eine eigene SQL-Strings mit CakePHP bauen, dann CakePHP bietet die Escape-Funktion:

escape(string $string, string $connection)

http://book.cakephp.org/view/1186/escape

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top