- vừa được xem lúc

15 Best practice bảo mật cho Laravel mà bạn nên thực hiện trong 2025

0 0 2

Người đăng: Vinh Phạm

Theo Viblo Asia

Laravel là một trong những framework PHP phổ biến nhất – và điều đó là có lý do. Nó thanh lịch, biểu cảm và đi kèm với nhiều tính năng bảo mật được tích hợp sẵn. Tuy nhiên, chỉ vì Laravel cung cấp sẵn công cụ không có nghĩa là bạn sẽ tự động an toàn.

Dù bạn đang xây dựng MVP hay duy trì một ứng dụng quy mô lớn, bảo mật luôn phải là ưu tiên hàng đầu.

Dưới đây là 15 Best practice về bảo mật Laravel tốt nhất mà mọi lập trình viên nên tuân theo trong năm 2025:

1. Cập nhật Laravel và các thư viện phụ thuộc

Luôn cập nhật phiên bản Laravel, các thư viện liên quan và PHP.

Các bản phát hành Laravel thường bao gồm các bản vá bảo mật và cải tiến mới.

2. Ngăn chặn SQL Injection

Eloquent ORM và query builder của Laravel sử dụng câu lệnh đã được chuẩn bị sẵn theo mặc định.

✅ An toàn:

$users = DB::table('users')->where('email', $email)->get();

❌ Tránh:

DB::select("SELECT * FROM users WHERE email = '$email'");

3. Tránh Cross-Site Scripting (XSS)

Escape toàn bộ dữ liệu đầu ra bằng cú pháp Blade:

{{ $user->name }} // Escapes HTML output

Chỉ nên dùng {!! !!} nếu bạn hoàn toàn tin tưởng nội dung đó.

4. Bảo vệ CSRF

Laravel mặc định đã có middleware bảo vệ CSRF.

Chỉ cần đừng quên thêm @csrf trong các form.

<form method="POST" action="/submit"> @csrf <!-- form inputs -->
</form>

5. Sử dụng hệ thống Xác thực và Phân quyền có sẵn

Tận dụng Laravel Breeze, Fortify hoặc Jetstream.

Dùng Gates và Policies để kiểm soát quyền truy cập.

$this->authorize('update', $post);

6. Lưu trữ mật khẩu một cách an toàn

Tuyệt đối không lưu mật khẩu ở dạng văn bản thuần.

Laravel mặc định sử dụng Bcrypt hoặc Argon2.

Hash::make('supersecret');

7. Bảo vệ tệp .env và cấu hình

  • Không commit tệp .env vào Git.
  • Đặt APP_DEBUG=false trên môi trường production.
  • Sử dụng biến môi trường để lưu thông tin nhạy cảm (credentials).

8. Ép buộc sử dụng HTTPS

Ép buộc SSL trong môi trường production:

// AppServiceProvider.php
use Illuminate\Support\Facades\URL; public function boot()
{ if (app()->environment('production')) { URL::forceScheme('https'); }
}

9. Xác thực và làm sạch dữ liệu Upload

  • Kiểm tra kích thước và loại file upload.
  • Tránh lưu file trong thư mục /public nếu không cần truy cập công khai.
  • Làm sạch tên file.
$request->validate([ 'avatar' => 'required|file|mimes:jpg,jpeg,png|max:2048',
]);

10. Bảo mật Cookie và Phiên làm việc (Session)

Cấu hình các thiết lập an toàn trong config/session.php:

'secure' => env('SESSION_SECURE_COOKIE', true),
'http_only' => true,
'same_site' => 'lax',

11. Giới hạn tốc độ (Rate Limiting)

Ngăn chặn các cuộc tấn công brute force bằng rate limiter của Laravel:

Route::middleware(['throttle:60,1'])->group(function () { // Protected routes
});

12. Tránh lỗi gán giá trị hàng loạt (Mass Assignment)

Dùng $fillable hoặc $guarded trong model Eloquent của bạn:

protected $fillable = ['name', 'email'];

13. Giám sát và Ghi log hoạt động đáng ngờ

Kết hợp hệ thống log của Laravel với các dịch vụ như Sentry, Bugsnag hoặc LogRocket:

Log::warning('Suspicious login attempt', ['email' => $request->email]);

14. Kiểm tra gói thư viện bên thứ ba

Chỉ cài đặt những package bạn thực sự tin tưởng. Kiểm tra:

  • Có người bảo trì thường xuyên
  • Có cập nhật định kỳ
  • Được cộng đồng sử dụng rộng rãi

15. Thực hiện Kiểm tra Bảo mật định kỳ

Sử dụng các công cụ như:

  • 🔍 Larastan
  • 🔐 Laravel Security Checker
  • 🧪 PHPStan

Kết luận

Bảo mật không phải là một công việc làm một lần – đó là một thói quen.

Laravel đã cung cấp cho bạn một nền tảng vững chắc – hãy chắc chắn rằng bạn sử dụng nó đúng cách.

Bạn còn mẹo bảo mật Laravel nào khác? Hãy chia sẻ trong phần bình luận nhé!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 457

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 542

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1.1k

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 169

- vừa được xem lúc

Một số tips khi dùng laravel (Part 1)

1. Show database query in raw SQL format. DB::enableQueryLog(); // Bật tính năng query logging. DB::table('users')->get(); // Chạy truy vấn bạn muốn ghi log.

0 0 103

- vừa được xem lúc

Inertiajs - Xây dựng Single Page App không cần API

Tiêu đề là mình lấy từ trang chủ của https://inertiajs.com/ chứ không phải mình tự nghĩ ra đâu nhé :v. Lâu lâu rồi chưa động tới Laravel (dự án cuối cùng mình code là ở ver 5.8), thế nên một ngày đẹp trời lượn vào đọc docs ver 8.

0 0 250