2014-10-05 7 views
8

Ich benutze Laravel 4 mit Eloquent. Wenn ich die Benutzereingabe erhalten benutze ich nur $name=Input::get('name') und dann mache ich $a->name=$name;Muss ich die Benutzereingabe sterilisieren Laravel

Ich weiß nicht, ob die Funktion Input::get mich von SQL-Injection und XSS schützen. Wenn dies nicht der Fall ist, was muss ich tun, um die Eingabe zu bereinigen?

Und wenn ich den Wert meines Erachtens zeigen, werde ich verwenden {{$a}} oder {{{$a}}}

Gruß und Dank.

+0

Zusätzlich zu den anderen Antworten, falls Sie so etwas wie etwas Neues verwenden entscheiden (Input :: alle()) stellen Sie sicher, die $ ausfüllbare Felder angeben im Something-Modell, um sich vor Massenzuweisungen zu schützen. Nicht unbedingt in Bezug auf Ihre Fragen, aber etwas, auf das Sie achten sollten. –

Antwort

10

Laravel nutzt PDO die Parameterbindung, so SQL-Injection ist nicht etwas, das man sich sorgen sollten Über. Sie sollten jedoch this lesen.

Input :: get() filtert nichts.

Dreifach geschweifte Klammern machen dasselbe wie e() und HTML :: entities(). Alle von ihnen nennen htmlentities mit UTF-8-Unterstützung:

htmlentities($your_string, ENT_QUOTES, 'UTF-8', false); 
+0

Wenn ich {{{um es anzuzeigen, sollte ich auch htmlentities beim Speichern der Informationen verwenden? – Fylux

+2

Escape-Ausgang, nicht eingegeben. –

+0

Danke, aber warum? – Fylux

3

Sie sollten {{{$a}}} verwenden, weil zum Beispiel Eingabe kann HTML-Tag hat. Laravel wird es nicht filtern.

Um SQL-Injection zu vermeiden Sie Ihre Parameter Ausführen von Abfragen binden wie verwenden sollten:

$var = 1; 
$results = DB::select('select * from users where id = ?', array($var)); 

und nicht:

$results = DB::select('select * from users where id = '.$var); 
+0

Also sollte ich htmlentities oder so etwas verwenden? Was macht Input :: Filter? – Fylux

+0

@Fylux Soweit ich weiß, ist es die Schnittstelle zu bekommen POST, GET und so weiter Daten. Es trimmt Daten, aber filtert sie nicht, so dass bei der Anzeige triple Bracing verwendet werden soll - auf diese Weise wird 'htmlentities' Funktion auf Variablenwert ausgeführt –

+0

Wenn ich {{{um es anzuzeigen, sollte ich auch htmlentities beim Speichern der Informationen verwenden ? – Fylux

Verwandte Themen