•
SQL Injection là gì?
Mình không hiểu chính xác SQL injection là gì, và SQL injection liên quan tới bảo mật của trang như thế nào. Ai biết giải thích giùm mình thông qua ví dụ cụ thể (sử dụng PHP và MySQL) với?
Mình không hiểu chính xác SQL injection là gì, và SQL injection liên quan tới bảo mật của trang như thế nào. Ai biết giải thích giùm mình thông qua ví dụ cụ thể (sử dụng PHP và MySQL) với?
select*from information where masv='2017604075';drop table aa '
khi chèn drop thì vẫn còn một dấu nháy đơn phía cuối nên bị lỗi ad giải quyết đc cái này k chỉ mk với
SQL Injection Là Gì
SQL Injection là một kỹ thuật tấn công vào hệ thống cơ sở dữ liệu của ứng dụng (bao gồm các ứng dụng web, mobile hoặc desktop...) thông qua việc khai thác các lỗ hổng bảo mật với mục đich lấy về, thay đổi hoặc thậm chí là phá huỷ hệ thống cơ sở dữ liệu của ứng dụng.
SQL Injection Hoạt Động Như Thế Nào
SQL Injection được thực hiện bằng thông qua các trường nhập dữ liệu của ứng dụng để thêm vào các đoạn mã SQL nguy hại.
Ví dụ trên một trang web có một trường nhập dữ liệu cho phép tìm kiếm người dùng dựa trên tên đăng nhập
Sau đó trên ứng dụng đoạn mã SQL được sử dụng để thực hiện việc tìm kiếm như sau:
Trong đó
{input_value}
là giá trị được người dùng nhập vào trường input và gửi lên server.Khi đó nếu người dùng nhập giá trị như sau:
Thì câu SQL lúc này sẽ như sau:
Khi đó kết quả trả về sẽ không chính xác.
Nguy hiểm hơn nữa nếu người dùng nhập vào trường input với giá trị như sau:
Khi đó câu lệnh SQL từ ứng dụng gửi lên database server sẽ như sau:
Và toàn bộ các bản ghi trên bảng
users
sẽ bị xoá bỏ!Ví Dụ Sử Dụng PHP và MySQL
Ví dụ trong một ứng dụng web PHP sử dụng bảng
users
để lưu danh sách người dùng đăng ký tài khoản trên trang trong đó bảngusers
có trường như sau:username
là tên đăng nhập của người dùng.firstname
là họ của người dùng.fastname
là tên người dùng.SQL để tạo bảng
users
:Đồng thời chúng ta cũng thêm hai bảng ghi có giá trị như sau:
Tiếp theo ứng dụng web này cung cấp một trang giao diện để giúp tìm kiếm người dùng theo trường
username
. Trong trang này có một form biểu mẫu với trường input để nhập tên người dùng mà bạn muốn tìm kiếm. Mã HTML sẽ như sau:Trong đó tập tin
header.php
có nội dung như sau:Và
footer.php
:Tiếp theo trên máy chủ tập tin PHP
search.php
được dùng để xử lý thao tác tìm kiếm người dùng theo tên đăng nhập có nội dung như sau:Tập tin
db_connect.php
Khi đó nếu người dùng nhập vào ô tìm kiếm giá trị
cr7' or username='leomessi
và bấm Enter thì kết quả sẽ hiển thị cả Ronaldo và Messi trong kết quả tìm kiếm.