我是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') ;
}
}
现在我想确保没有人不会损坏我的网站!我想保存数据完全安全!我不知道有必要消毒表格输入吗?如果您的回答是肯定的,我应该怎么做?
我见过这个here:
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);
}
关于Laravel 5.1文件:
默认情况下,Blade
{{ }}
语句通过PHP的htmlentities
函数自动发送,以防止XSS攻击。
所以答案是你不需要构建额外的东西来清理表单输入。
关于SQL注入,Laravel使用PDO预处理语句(Reference),并且它可以防止可能的SQL注入。
您的问题中的示例是打算保护注入URL,这很好。
最后我先前提到了这个link。
仅依靠文档和我的答案是不够的。因此,我想再次从上面的链接中突出显示:
在项目完成后,您需要进行自己的渗透测试,以确保每件事物都按计划运行和保护