Tách biệt dữ liệu khỏi mã. Ưu tiên các thư viện hoặc framework bền vững đã được kiểm chứng, cung cấp cấu trúc truy cập cơ sở dữ liệu an toàn, chẳng hạn Hibernate hoặc Enterprise Java Beans khi được sử dụng đúng cách. Xử lý SQL bằng prepared statement, truy vấn tham số hóa hoặc stored procedure có kiểu dữ liệu chặt chẽ; không tạo và thực thi động chuỗi truy vấn bên trong các cơ chế này bằng exec hoặc chức năng tương tự.
Giới hạn đầu vào và ánh xạ giá trị. Coi mọi dữ liệu bên ngoài là độc hại và dùng allowlist nghiêm ngặt cho kiểu, độ dài, cú pháp, miền giá trị, tính nhất quán giữa các trường và quy tắc nghiệp vụ. Kiểm tra đầu vào chỉ là lớp phòng vệ bổ sung, không thay thế cho việc mã hóa, escape và quoting đúng cách, đặc biệt với trường văn bản tự do. Khi tập đối tượng hợp lệ đã biết, ánh xạ các giá trị đầu vào cố định như ID số tới đối tượng tương ứng và từ chối các giá trị khác. Lặp lại mọi kiểm tra bảo mật phía máy khách ở phía máy chủ.
Bảo vệ trường hợp buộc phải tạo động. Nếu không thể tránh tạo truy vấn động, hãy quote đúng các đối số và escape ký tự đặc biệt. Dùng allowlist chặt nhất có thể, cùng các cơ chế của cơ sở dữ liệu hoặc ngôn ngữ như DBMS_ASSERT của Oracle hoặc API mysql_real_escape_string của MySQL khi phù hợp. Cách này vẫn có rủi ro và phải tính đến cả việc chèn đối số.
Giảm tác động và rò rỉ thông tin. Chạy tài khoản cơ sở dữ liệu theo nguyên tắc đặc quyền tối thiểu, tốt nhất là các tài khoản cô lập chỉ phục vụ một nhiệm vụ, và chỉ cấp quyền tối thiểu trên các đối tượng cơ sở dữ liệu. Không chạy ứng dụng cơ sở dữ liệu thông thường bằng tài khoản quản trị; giới hạn truy cập vào dữ liệu mà bên gọi được phép sử dụng và áp dụng quyền nghiêm ngặt nhất cho stored procedure. Thông báo lỗi phải tối thiểu, không tiết lộ cấu trúc truy vấn SQL hoặc trạng thái nội bộ; chi tiết cần thiết nên được ghi vào log được bảo vệ phù hợp và tuyệt đối không ghi mật khẩu. Với PHP, không sử dụng register_globals và không mô phỏng tính năng này theo cách tạo ra các điểm yếu liên quan.
Bổ sung phòng vệ vận hành. Application firewall có thể phát hiện và chặn cuộc tấn công khi chưa thể sửa mã ngay, hoặc cung cấp bảo vệ khẩn cấp trong lúc áp dụng các biện pháp bảo đảm phần mềm toàn diện hơn. Tuy nhiên, phạm vi bao phủ của nó có giới hạn, có thể bị vượt qua, làm ảnh hưởng yêu cầu hợp lệ hoặc cần tùy chỉnh.