2014-10-05 14 views
8

Używam Laravel 4 z Eloquent. Kiedy uzyskać dane wejściowe użytkownika po prostu użyć $name=Input::get('name') a następnie zrobić $a->name=$name;Czy muszę odkażać dane wprowadzone przez użytkownika Laravel

Nie wiem, czy funkcja Input::get chronić mnie przed SQL Injection i XSS. Jeśli nie, co muszę zrobić, aby odkazić dane wejściowe?

I kiedy pokazują wartość w moim przekonaniu, będę używać {{$a}} lub {{{$a}}}

Pozdrowienia i podziękowania.

+0

W uzupełnieniu do innych odpowiedzi, w przypadku, gdy zdecydujesz się używać coś nowego Coś (wejście :: wszystkie()) upewnij się, aby określić pola możliwością wypełniania $ w modelu Coś, w celu ochrony przed przypisaniem masy. Nie jest to ściśle związane z Twoimi pytaniami, ale czymś, o czym należy pamiętać. –

Odpowiedz

10

laravel używa parametru PDO za wiążącą, wtrysk więc SQL nie jest czymś trzeba się martwić o. Powinieneś przeczytać: this.

Input :: get() nie filtruje niczego.

Potrójne nawiasy klamrowe robią to samo, co e() i HTML :: entity(). Wszystkie z nich nazywają htmlentities z UTF-8 wsparcia:

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

Jeśli używam {{{do pokazania tego, czy powinienem używać także htmlentities przy zapisywaniu informacji? – Fylux

+2

Wyjście awaryjne, nie wejście. –

+0

Dzięki, ale dlaczego? – Fylux

3

Powinieneś użyć {{{$a}}}, ponieważ na przykład Input can ma tag HTML. Laravel nie będzie go filtrował.

Aby uniknąć wstrzyknięcia SQL należy użyć powiązać parametry zapytań działa jak:

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

a nie:

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

Więc powinienem użyć htmlentities czy coś w tym stylu? Co robi Input :: get filter? – Fylux

+0

@Fylux O ile wiem, jest to interfejs do pobierania POST, GET i innych danych. Przycina dane, ale ich nie filtruje, więc podczas wyświetlania należy zastosować potrójne usztywnienie - w ten sposób funkcja 'htmlentities' działa na wartości zmiennej –

+0

Jeśli używam {{{do pokazania, czy powinienem używać także htmlentities przy zapisywaniu informacji ? – Fylux