简体   繁体   中英

Upload Files Security in Laravel 5.1

I'm not good in Laravel 5.1. I need your help guys...

Why does it upload other files that are not on the list in my Requests File? I want to upload just the rules function on my Request File .

Here's my new update Controller

public function store(UploadFiles $filename) {

    $input = Input::all();
    $rules = array('filename' => 'mimes:pdf,doc,jpeg,png,docx');
    $validator = Validator::make($input, $rules);

    if($validator->fails()) {
        $messages = $validator->messages();
        print_r($messages);
    } else {
        $file = $filename->file('filefield');
        $extension = $file->getClientOriginalExtension();
        $entry = new Fileentry();
        $entry->mime = $file->getClientMimeType();
        $entry->original_filename = $file->getClientOriginalName();
        $entry->filename = $file->getFilename().'.'.$extension;
        $entry->description = Request::input('description');
        Storage::disk('local')->put($file->getFilename().'.'.$extension, File::get($file));
        $entry->user_id = Auth::user()->id;
        return redirect('upload');
    }    
}

My Requests: UploadFiles.php

public function authorize() {
    return true;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules() {
    return ['filename' => 'mimes:pdf,doc,jpeg,png,docx'];
}

This is my index.blade.php

<form action="{{route('addentry', [])}}" method="post" enctype="multipart/form-data">
    <input type="hidden" name="_token" value="{!! csrf_token() !!}">
    <input type="file" name="filefield" required>
    <br>

    Description <br>
    <div class="form-group">
       <input type="textarea" name="description"><br>
    </div>
    <input type="submit">
</form>

You should pass your rules arr to validator.

Your code should be something like this :

$input = Input::all();
$rules = array('filename' => 'mimes:pdf,doc,jpeg,png,docx');
$validator = Validator::make($input, $rules);

if ($validator->fails()) {
    $messages = $validator->messages();
    print_r($messages);
} else {
    //your upload code here
}

Try this:

In your controller, where you're uploading: Add use App\\Http\\Requests\\UploadFilesValidationRequest; and in your controller, implement Dependency Injection, like:

public function store(UploadFilesValidationRequest $uploadValidator, UploadFiles $filename){

}

OR

$imageValidator = new UploadFilesValidationRequest;
$imageValidation = Validator::make($fileData,$imageValidator->rules());

if ($imageValidation->fails()){
    dd($imageValidation->messages())
}

See, if that works.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM