2017-01-12 20 views
0

私はLaravel5 *を学び始めました。現在、私はいくつかの基本的な管理パネルに取り組んでいます。私は、クエリユーザーの詳細を更新して保護するコントローラ

$hasuser = User::where('email','=',$request['email'])->where('id','!=',$request['id'])->first(); 

は、セキュリティから、それは良いですわからないんだけど、この更新プログラムはどのようにユーザーの詳細

public function update(UserRequest $request){ 

    $user = User::find($request['id']); 

    $hasuser = User::where('email','=',$request['email'])->where('id','!=',$request['id'])->first(); 
    if($hasuser){ 
     $request->session()->flash('alert-error','User with given email address already exist. Plese try with another email address!!.'); 
     return redirect()->route('admin.users'); 
    } 

    $user->name = $request['name']; 
    $user->email = $request['email']; 
    $user->phone = $request['phone']; 
    $user->role = $request['role']; 

    if(!empty($request['password'])){ 
     $password = bcrypt($request['password']); 
     $user->password = $password;  
    } 

    if($user->save()) 
     $request->session()->flash('alert-success','User updated successfully.'); 
    else 
     $request->session()->flash('alert-error','Can not update User now. Please try again!!.'); 

    return redirect()->route('admin.users'); 
} 

のためにこれを持って

になど、ユーザー/ delte /編集を作成し、この変数を表示するSQLの注入ポイントは、$request['email']$request['id']

ここで良いアプローチは何ですか?

答えて

1

LaravelのEloquent ORMは、SQLインジェクションを避けるためにPDOバインディングを使用していますが、それは何かをする前にユーザー入力を検証するのは良い方法ではないと言っているわけではありません。

+0

答えをいただきありがとうございます。 Laravelの検証ユーザー入力に特別なことがあると教えてください。私はいくつかの特別な機能を意味する...あなたは私に例を示すことができますか? – VLS

+0

たとえば、次のようなものです: '!filter_var($ request ['email']、FILTER_VALIDATE_EMAIL)'? – VLS

+0

新しいパスワードで更新する古いパスワードを尋ねて、更新時に確認することもできます – Learner

関連する問題