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 🙏🙏🙏
Ủng hộ Chung Nguyễn Blog
Chung Nguyễn Blog sử dụng FlashVPS - Dịch vụ quản trị máy chủ chuyên nghiệp để quản lý VPS
#FlashVPS là dịch vụ cloud panel trên nền tảng web hỗ trợ khách hàng:
- * Quản lý máy chủ số lượng nhiều
- * Không có kinh nghiệm quản lý máy chủ
- * Thích sử dụng giao diện web đơn giản, trực quan hơn terminal
- * Quá nhàm chán với việc ghi nhớ và lặp lại việc gõ các câu lệnh
- * Muốn tự động hóa mọi thao tác
- * Muốn tiết kiệm thời gian quản trị máy chủ
- * Muốn tiết kiệm tiền bạc, nhân lực quản trị máy chủ 👉 https://flashvps.dev
Các bài viết trên website thường xuyên được đăng tải và cập nhật trên trang Facebook Chung Nguyễn Blog hãy tặng cho Chung một LIKE nhé! Mãi yêu các bạn!
813 👍
Bình luận
Simon Sai