Security 如何在laravel 5.1中安全地将数据保存在数据库中?
我是Laravel的新手,我希望有一个评论表单,任何人都可以填写,输入数据将在验证后插入数据库: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 {
<?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);
}