Tôi có một ứng dụng nhận dữ liệu qua yêu cầu POST. Tôi đang sử dụng dữ liệu này để chèn một hàng mới vào cơ sở dữ liệu. Tôi biết rằng bằng cách sử dụng mysql_real_escape_string()
(cộng với loại bỏ% và _) là cách để đi cho chuỗi, nhưng những gì về giá trị số nguyên? Ngay bây giờ, tôi đang sử dụng hàm PHP intval()
trên chúng.Vệ sinh đầu vào cơ sở dữ liệu số nguyên
Tuy nhiên, tôi muốn đảm bảo rằng intval()
hoàn toàn an toàn. Tôi không thể nhìn thấy một cách của kẻ tấn công tạo ra một cuộc tấn công SQL injection khi các biến được chạy qua intval()
đầu tiên (vì nó luôn trả về một số nguyên), nhưng tôi muốn đảm bảo đây là trường hợp từ những người có nhiều kinh nghiệm hơn tôi .
Cảm ơn.
Cảnh báo: Nếu bạn đang xử lý các số lớn hơn 32 hoặc 64 bit (tùy thuộc vào nền tảng của bạn) 'intval()' sẽ trả về 0. Điều này rõ ràng là không mong muốn nếu bạn đang cố gắng để lưu trữ số lượng rất lớn trong cơ sở dữ liệu của bạn. Ví dụ: id của facebook không phù hợp với 32 bit trong nhiều năm http://developers.facebook.com/blog/post/45 –
@Frank Nông dân: Hm .. điều đó thật thú vị. Cảm ơn cho những người đứng đầu lên. Tôi sẽ xem xét những gì chúng ta có thể làm để giải quyết vấn đề đó, nếu cần thiết. –