2016-05-26 4 views
1

Я создал простую инструкцию insert в Laravel 5.2, подобную этим.Как использовать подготовленный отчет в Laravel 5.2

User::create([ 
     'email' => $request->input('email'), 
     'username' => $request->input('username'), 
     'password' => bcrypt($request->input('password')), 
    ]); 

Но я хочу, чтобы моя база данных была более безопасной, поэтому я предпочитаю использовать Подготовленное заявление. Я прошу правильно написать синтаксис? Как я могу правильно хэш-код моего password?

User::insert('insert into users (email, username, password) values (?,?,?)'); 
+0

Eloquent ORM заботится о этих вопросах безопасности. Чтобы использовать хэш, используйте 'Hash :: make()' – Daan

+0

@Daan в моем первом заявлении, это уже защищено? – Francisunoxx

+1

Да @Francisunoxx только изменить этот '' пароль '=> bcrypt ($ request-> input (' password ')) 'to'' password '=> Hash :: make ($ request-> input (' password ')) ' – Daan

ответ

0

Eloquent делает это для вас за кулисами, после того, как делать все это модные вещи, в конце концов, Красноречивым называет PDO::prepare(), PDO::bindValue() и, наконец, PDO::execute();. Вам необходимо войти в систему или зарегистрироваться.

Чтобы узнать подробности, нужно пройти код Illuminate\Database\Connection.

Единственное, что вам нужно быть осторожными не использовать DB::raw() с непосредственно при условии ввода данных пользователя, например:

// This is bad 
DB::raw('SELECT * FROM table_name WHERE col = '.$request->query('col')); 

// This is good 
DB::raw('SELECT * FROM table_name WHERE col = ?', [$request->query('col')]); 
//or 
DB::raw('SELECT * FROM table_name WHERE col = :col', ['col' => $request->query('col')]); 
Смежные вопросы