tailieunhanh - NetWork LanX part 6

Ví dụ sau minh họa một trang ASP nhận dữ liệu cho biến ID thông qua querystring và phát sinh nội dung của trang đó dựa trên ID: Code: | nhập vào theo dạng querystring bằng cách gõ cặp tham số và giá trị trực tiếp trên thanh địa chỉ hoặc dùng form với thuộc tính ACTION là GET . Ví dụ sau minh họa một trang ASP nhận dữ liệu cho biến ID thông qua querystring và phát sinh nội dung của trang đó dựa trên ID Code Dim p_lngID objRS strSQL p_lngID Request ID strSQL SELECT FROM tblArticles WHERE ID p_lngID Set objRS strSQL DSN . If Not Then objRS ArticleContent Set objRS Nothing Trong các tình huống thông thường đoạn mã này hiển thị nội dung của article có ID trùng với ID được chuyển đến cho nó dưới dạng querystring. Ví dụ trang này có thể được gọi như sau http ID 1055 để hiển thị nội dung của article có ID là 1055. Giống như ví dụ đăng nhập ở trước đoạn mã này để lộ sơ hở cho một SQL injection attack. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác để thực hiện một lệnh SQL bất hợp pháp ví dụ như 0 or 1 1 nghĩa là http ID 0 or 1 1 . Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dữ liệu vì nó sẽ thực hiện câu lệnh Code SELECT FROM tblArticles WHERE ID 0 or 1 1 Tất nhiên ví dụ này dường như không có gì nguy hiểm nhưng hãy thử tưởng tượng kẻ tấn công có thể xóa toàn bộ CSDL bằng cách chèn vào các đoạn lệnh nguy hiểm như lệnh DELETE. Tất cả chỉ là đơn giản thay đổi chuỗi gán dữ liệu cho ID ví dụ như Tất nhiên ví dụ này dường như không có gì nguy hiểm nhưng hãy thử tưởng tượng kẻ tấn công có thể xóa toàn bộ CSDL bằng cách chèn vào các đoạn lệnh nguy hiểm như lệnh DELETE. Tất cả chỉ là đơn giản thay đổi chuỗi gán dữ liệu cho ID ví dụ như Code http ID 1055 DELETE FROM tblArticles 2. Các tác hại và cách phòng tránh Tác hại từ SQL Injection attack tùy thuộc vào môi trường và cách cấu hình hệ thống. Nếu ứng dụng sử dụng quyền dbo quyền của người sở hữu CSDL - owner khi thao tác dữ liệu nó có thể xóa toàn bộ các bảng

TỪ KHÓA LIÊN QUAN