SQL Injection

Lỗ hổng bảo mật SQL Injection trong Laravel Unique Validation Rule

Nguyên nhân

Đây là một lỗ hổng bảo mật trong Unique Validation Rule của Laravel.

Các bạn làm phần kiểm tra dữ liệu đầu vào thì unique được dùng khá nhiều, cú pháp như sau:

unique: tên bảng, tên cột, ngoại trừ, cột ngoại trừ

như vậy trong 4 tham số unique thì tham số thứ 3: NGOẠI TRỪ là tham số có khả năng bị tấn công injection.

Ví dụ code của bạn như sau

'email' => 'unique:users,email,' . $request->input('id')

Rule ở trên bạn muốn kiểm tra email nhập vào không được trùng, ngoại trừ email ở record có id là $request->input('id'). $request->input('id') là dữ liệu từ người dùng cho nên cực kỳ nguy hiểm.

Nói về SQL Inject là một lỗi bảo mật từ ngàn đời nay và cực kỳ dễ lợi dụng (https://vi.wikipedia.org/wiki/SQL_injection)

PHÒNG TRÁNH?

① Phía Laravel sẽ khắc phục trong bản cập nhật sắp tới

⓶ Như đã lý giải nguyên nhân ở trên, thì ở tham số thứ 3 hãy tránh sử dụng dữ liệu từ phía client, thay vào đó sử dụng dữ liệu sinh ra ở phía server. Ví dụ:

'email' => 'unique:users,email,' . $user->id

Nguồn: Laravel Blog Unique Rule SQL Injection Warning

Mấy bạn đọc rồi khắc phục ở web nhà mình nha, đừng đánh sập web của Chung, tội lắm 🙏🙏🙏

Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration