Khi
chúng ta truy cập CSDL và chấp nhận dữ liệu đầu vào bằng cách tạo ra
các câu lệnh truy vấn, nó dễ dàng bị các kẻ gian lợi dụng tấn công SQl
injection.

SQL injection xuất hiện khi các kẻ tấn công muốn làm các “thử nghiệm” trên form để lấy các thông tin về CSDL. Nó thu thập các thông tin từ các thông báo lỗi SQL . Kẻ tấn công đính vào form một trường injecting SQL, phổ biến nó thường đính vào form đăng nhập
Mã:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<form method="login.php" action="POST">Username: <input type="text" name="username" /><br />Password: <input type="password" name="password" /><br /><input type="submit" value="Log In" /></form>đoạn mã sử lý đăng nhập dễ bị lợi dụng:$username = $_POST[’username’];$password = md5($_POST[’password’]);$sql = "SELECT *FROM usersWHERE username = ’{$username}’ AND password = ’{$password}’";/* database connection and query code */if (count($results) > 0) {// Successful login attempt} |
Khi kẻ tấn công nhập user là :
username’ OR 1 = 1 -
và mật khẩu để trống thì cấu trúc câu lệnh SQl là:
SELECT *
FROM users
WHERE username = ’username’ OR 1 = 1 –’ AND
password = ’d41d8cd98f00b204e9800998ecf8427e’
điều kiện 1=1 thì luôn đúng câu lệnh SQL bỏ qua tất cả những gì sau ‘–’ vì vậy câu lệnh SQl trên sẽ trả lại tất cả các bản ghi. Bằng cách này hacker dễ dàng đăng nhập vào hệ thống với tài khoản bất kỳ khi đã biết tên tài khoản
Chúng ta tránh được lỗi này bằng cách lọc các kí tự escaping. Bằng cách lọc dữ liệu đầu vào và lọc escaping khi xuất ra chúng ta sẽ tránh được lỗi SQL injection chúng ta lọc escaping bằng nhóm hàm *_escape_string()
username’ OR 1 = 1 -
và mật khẩu để trống thì cấu trúc câu lệnh SQl là:
SELECT *
FROM users
WHERE username = ’username’ OR 1 = 1 –’ AND
password = ’d41d8cd98f00b204e9800998ecf8427e’
điều kiện 1=1 thì luôn đúng câu lệnh SQL bỏ qua tất cả những gì sau ‘–’ vì vậy câu lệnh SQl trên sẽ trả lại tất cả các bản ghi. Bằng cách này hacker dễ dàng đăng nhập vào hệ thống với tài khoản bất kỳ khi đã biết tên tài khoản
Chúng ta tránh được lỗi này bằng cách lọc các kí tự escaping. Bằng cách lọc dữ liệu đầu vào và lọc escaping khi xuất ra chúng ta sẽ tránh được lỗi SQL injection chúng ta lọc escaping bằng nhóm hàm *_escape_string()
Theo đào tạo lập trình việt
Hẹn gặp bạn ở Việt Tâm Đức – Hẹn gặp bạn ở đỉnh cao thành công – Hẹn gặp bạn ở TOP 1 Google

Bản quyền: CÔNG TY CỔ PHẦN THƯƠNG MẠI VÀ GIÁO DỤC VIỆT TÂM ĐỨC
Trụ sở: 31 Phú Đô, Mễ Trì, Từ Liêm, Hà Nội.
VPGD: Phòng 1114, Tòa nhà CT.A 789 Bộ Quốc Phòng, Mỹ đình, Hà Nội (gần bến xe mỹ đình, gần sân vận động quốc gia.)
Điện thoại: 04 62 966 151 Hotline: 0975252437 - 0942459521 -0966444646 Email: daotaolaptrinh.edu@gmail.com
website: antamduc.com | daotaolaptrinh.edu.vn | atdtravel.net | dulichantamduc.com.vn | viettamduc.com
Giấy phép xuất bản của Bộ thông tin truyền thông. Giấy phép doanh nghiệp số: 0106308309 của Sở kế hoạch đầu tư TP. Hà nội.
Trụ sở: 31 Phú Đô, Mễ Trì, Từ Liêm, Hà Nội.
VPGD: Phòng 1114, Tòa nhà CT.A 789 Bộ Quốc Phòng, Mỹ đình, Hà Nội (gần bến xe mỹ đình, gần sân vận động quốc gia.)
Điện thoại: 04 62 966 151 Hotline: 0975252437 - 0942459521 -0966444646 Email: daotaolaptrinh.edu@gmail.com
website: antamduc.com | daotaolaptrinh.edu.vn | atdtravel.net | dulichantamduc.com.vn | viettamduc.com
Giấy phép xuất bản của Bộ thông tin truyền thông. Giấy phép doanh nghiệp số: 0106308309 của Sở kế hoạch đầu tư TP. Hà nội.