Trong ví dụ này, ta có hai form của ứng dụng web là form Login, là form đăng nhập của người dùng, và form User Manager, là form quản lý người dùng. Trong form Login có câu lệnh thực thi câu truy vấn sau:
Ký tự “?” trong câu truy vấn sẽ là chuỗi nhập liệu của người dùng vào form Login, có hai trường nhập liệu là trường “id” và trường “pass”. Trong form User Manager có câu lệnh thực thi câu truy vấn sau:
“Select * From User Where id=’?‘”
Câu truy vấn này sẽ thực thi tìm kiếm user có “id” được nhập vào trong trường iduser của form. Ta thấy điểm khác biệt duy nhất giữa hai câu truy vấn này là điều kiện “AND pass=’?‘”.
Với kỹ thuật chống tấn công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ không có stack trace thì chỉ có bản thân câu truy vấn được lưu trữ trong CSDL SSQL, CSDL lưu trữ khuôn mẫu hợp lệ. Nếu kẻ tấn công nhập vào trường “id” trong form Login là “id’--” thì câu lệnh sẽ trở thành “Select * From User Where id=’?‘”, như đã trình bày ở chương một các chuỗi đằng sau dấu chú thích “--” sẽ bị bỏ qua. Khi đó câu truy vấn trở thành truy vấn hợp lệ, kẻ tấn công có thể đăng nhập thành công mà không cần có mật khẩu.
Trong khi đó với kỹ thuật chống tấn công tiêm nhiễm SQL sử dụng stack trace, khuôn mẫu hợp lệ của từng câu truy vấn sẽ bao hàm cả thông tin stack trace của riêng chúng. Vậy nên dù kẻ tấn công có thể biến đổi câu truy vấn trong form Login giống với câu truy vấn trong form User Manager thì cũng không thể vượt qua được SDriver.
2.4. Mô phỏng hoạt động của SDriver. 2.4.1 Môi trường mô phỏng. 2.4.1 Môi trường mô phỏng.
SDriver được triển khải trên nền tảng ngôn ngữ Java, tuy vậy SDriver có thể triển khai trên các môi trường khác. Hình 2.5 dưới đây mô tả kiến trúc thực tế của SDriver khi triển khai [1, pp.8].