2014-10-05 14 views
8

Tôi đang sử dụng Laravel 4 với Eloquent. Khi tôi nhận được đầu vào người sử dụng tôi chỉ sử dụng $name=Input::get('name') và sau đó tôi làm $a->name=$name;Tôi có cần phải khử trùng đầu vào của người dùng Laravel

Tôi không biết nếu chức năng Input::get bảo vệ tôi khỏi SQL Injection và XSS. Nếu không, tôi phải làm gì để vệ sinh đầu vào?

Và, khi tôi thấy giá trị trong quan điểm của tôi, tôi sẽ sử dụng {{$a}} hoặc {{{$a}}}

Chúc mừng và cảm ơn.

+0

Ngoài các câu trả lời khác, trong trường hợp bạn quyết định sử dụng một cái gì đó như mới Cái gì đó (Đầu vào :: tất cả()) hãy đảm bảo chỉ định trường $ fillable trong mô hình Cái gì đó, để bảo vệ chống lại sự phân công đại chúng. Không nghiêm chỉnh liên quan đến câu hỏi của bạn, nhưng một cái gì đó để nhận thức được. –

Trả lời

10

Laravel sử dụng tham số PDO của ràng buộc, do đó SQL injection không phải là điều bạn nên lo lắng trong khoảng. Bạn nên đọc this.

Nhập :: get() không lọc bất kỳ thứ gì.

Dấu ngoặc nhọn ba giống như e() và HTML :: entity(). Tất cả đều gọi htmlentities có hỗ trợ UTF-8:

htmlentities($your_string, ENT_QUOTES, 'UTF-8', false); 
+0

Nếu tôi sử dụng {{{để hiển thị nó, tôi có nên sử dụng htmlentities khi lưu thông tin không? – Fylux

+2

Đầu ra thoát, không phải đầu vào. –

+0

Cảm ơn, nhưng tại sao? – Fylux

3

Bạn nên sử dụng {{{$a}}} vì ví dụ: Phương thức nhập có thể có thẻ HTML. Laravel sẽ không lọc nó.

Để tránh SQL injection bạn nên sử dụng ràng buộc thông số của bạn truy vấn chạy như:

$var = 1; 
$results = DB::select('select * from users where id = ?', array($var)); 

và không:

$results = DB::select('select * from users where id = '.$var); 
+0

Vì vậy, tôi nên sử dụng htmlentities hoặc một cái gì đó như thế? Input :: lấy bộ lọc là gì? – Fylux

+0

@Fylux Cho đến nay, tôi biết đó là giao diện để nhận POST, GET và dữ liệu. Nó trims dữ liệu nhưng không lọc nó, vì vậy khi hiển thị bạn nên sử dụng triple bracing - cách này 'htmlentities' function chạy trên giá trị biến –

+0

Nếu tôi sử dụng {{{để hiển thị nó, tôi cũng nên sử dụng htmlentities khi lưu thông tin ? – Fylux

Các vấn đề liên quan