algolia search

Tìm thấy x bài viết trong xms.

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 🙏🙏🙏

Đánh giá bài viết

Thích thì like
Lỗ hổng bảo mật SQL Injection trong Laravel Unique Validation Rule
5/5 1 votes

Bình luận

Simon Sai avatar
Simon Sai
AE làm Server và Client nên thống nhất là chỉ gửi lên server những trường nào có sự thay đổi, lúc đó thì ko cần dùng phần loại trừ
'email' => 'unique:users,email',
Hiển thị bình luận Facebook