Security 如何在laravel 5.1中安全地将数据保存在数据库中?

Security 如何在laravel 5.1中安全地将数据保存在数据库中?,security,laravel-5.1,sanitization,Security,Laravel 5.1,Sanitization,我是Laravel的新手,我希望有一个评论表单,任何人都可以填写,输入数据将在验证后插入数据库: <?php namespace App\Http\Controllers; use App\comments; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; class CommentController extends Controller {

我是Laravel的新手,我希望有一个评论表单,任何人都可以填写,输入数据将在验证后插入数据库:

<?php

namespace App\Http\Controllers;

use App\comments;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class CommentController  extends Controller
{
    public function postCommentNew( Request $request)
    {
        $this->validate($request, [
            'commenter' => 'required|max:255',
            'email' => 'required|max:255',
            'comment' => 'required',
            'post_id' => 'required'
        ]);
        comments::create( $request->all() );

        return redirect()->back()->with('success' , 'Comment Submited') ;
    }


}
关于文件:

默认情况下,Blade
{{}
语句会自动通过 PHP的
htmlentities
功能可防止XSS攻击

因此,答案是不需要构建额外的东西来清理表单输入

关于SQL注入,Laravel使用PDO prepared语句(),可以防止可能的SQL注入

您问题中的示例是打算从URL保护注入,这很好

最后,我之前已经向你们提到过这一点

仅仅依靠文档和我的答案是不够的。因此,我想再次从上述链接中强调这一点:

当您的项目完成时,您需要自己进行渗透测试 确保每件事情都按计划进行并得到保障


我想问一个仅用于数据库插入的消毒过滤器
public function sanitize()
    {
        $input = $this->all();

        if (preg_match("#https?://#", $input['url']) === 0) {
            $input['url'] = 'http://'.$input['url'];
        }

        $input['name'] = filter_var($input['name'], FILTER_SANITIZE_STRING);
        $input['description'] = filter_var($input['description'], 
        FILTER_SANITIZE_STRING);

        $this->replace($input);     
    }