2017-08-25 83 views
2

我一直在網上搜索這個,但我找不到確切的解決方案。如何在laravel中保護輸入5.4

我以爲laravel已經處理數據保存到數據庫時的驗證。但是,當我檢查數據庫中的數據時,我可以看到接受諸如<body>等html標記的記錄,當然,我無法在瀏覽器上顯示這些記錄,因爲它會毀掉我的網站。

下面是我如何使用Controller帖子上的請求保存數據。

public function submitTask(Request $request) 
{ 
    Task::create([ 
    'task_title' => $request->title 
    ]); 
} 

我的模型的名稱是Task。

我想保護我的數據從XXS和其他sql注入

我該怎麼做?非常感謝。

回答

1

這是它的設計方式。在將數據保存到數據庫之前,您不應該逃避數據。在那裏,這是無害的。一旦輸出數據,你應該逃避你的數據。作爲表示邏輯,這是視圖的責任,因此,在Laravel中,您可以在Blade中執行此操作。在5.0之前,你必須使用三重花括號{{{ }}},但現在它默認在{{ }}上。

你可以閱讀更多關於這個here

+0

這意味着,所有的數據都應該三個裏面放{{{? – smzapp

+0

對,您從控制器注入到視圖中的所有數據。雖然從5.0開始只能使用兩個花括號,但它默認會轉義數據。 – ishegg

+0

一切工作正常,但當我將數據添加到標題部分,它會返回一個錯誤'解析錯誤:語法錯誤,意外的'<'(在此代碼上@section('title',{{$ data-> title} })' – smzapp