Thực hiện kiểm tra giới hạn đối với dữ liệu đầu vào và tránh các hàm nguy hiểm như gets; thay bằng các hàm tương đương an toàn hơn có kiểm tra lỗi vượt giới hạn. Có thể dùng thư viện trừu tượng hóa để che giấu các API rủi ro, nhưng đây không phải giải pháp hoàn chỉnh.
Phòng thủ nhiều lớp: Bật các cơ chế bảo vệ do trình biên dịch hoặc phần mở rộng trình biên dịch cung cấp, chẳng hạn Microsoft Visual Studio /GS, Fedora/Red Hat FORTIFY_SOURCE, StackGuard hoặc ProPolice. Các cơ chế này có thể dùng canary cùng kiểm tra phạm vi hoặc chỉ mục để phát hiện một số dạng tràn, nhưng không bao phủ mọi loại tràn và phản ứng thông thường vẫn có thể là kết thúc ứng dụng, dẫn đến từ chối dịch vụ.
Ngoài ra, sử dụng Address Space Layout Randomization (ASLR), Position-Independent Executables (PIE), và khi phù hợp thì thực hiện rebasing hoặc prelinking mô-đun để làm cho địa chỉ của mã thực thi và thư viện khó dự đoán hơn. Đây chỉ là biện pháp phòng thủ bổ sung: việc làm lộ địa chỉ bộ nhớ hoặc tấn công kênh bên có thể vượt qua ASLR; hơn nữa, không thể dùng ASLR cho thư viện đồng thời với prelinking.