Tôi đã làm việc với PHP một thời gian và tôi bắt đầu tự hỏi liệu tôi có đang phát triển những thói quen tốt hay không.Sanitizing Biến PHP, tôi có lạm dụng nó không?
Một trong số đó là những gì tôi luôn tin bao gồm lạm dụng phương pháp khử trùng PHP, ví dụ, một người dùng đăng ký thông qua một hình thức, và tôi nhận được bài biến sau:
$_POST['name']
, $_POST['email']
và $_POST['captcha']
. Bây giờ, những gì tôi thường làm rõ ràng là khử trùng các dữ liệu tôi sẽ đặt vào MySQL, nhưng khi so sánh captcha, tôi cũng khử trùng nó.
Vì vậy, tôi tin rằng tôi đã hiểu lầm về việc vệ sinh PHP, tôi tò mò, có trường hợp nào khác không khi bạn cần vệ sinh dữ liệu trừ khi sử dụng nó để đặt một thứ gì đó trong MySQL (lưu ý rằng tôi biết vệ sinh cũng cần thiết để ngăn chặn các cuộc tấn công XSS) . Và hơn thế nữa, thói quen của tôi là khử trùng hầu như mọi biến đến từ đầu vào của người dùng, một biến xấu?
Không bao giờ tin tưởng đầu vào của người dùng là một trong những thói quen tốt nhất để có. Cơ sở dữ liệu tiêm là lý do rõ ràng, nhưng có một vài người khác. Câu lệnh eval(), tạo lớp động $ x = new $ classnamehere(), v.v. – STLMikey
Tất cả đầu vào của người dùng/đầu vào bên ngoài đều nguy hiểm, vì vậy nếu - ví dụ - bạn so sánh giá trị captcha với chuỗi nội bộ, có một số (mặc dù trừ đi) rủi ro mà giá trị truyền vào có thể "gian lận" và bằng cách nào đó vượt qua logic so sánh. Với điều đó, có, một số đầu vào cần vệ sinh nhiều hơn các đầu vào khác, vì một số dữ liệu được sử dụng trong các kịch bản có nguy cơ cao hơn. Tôi sẽ khuyên vệ sinh tất cả đầu vào của người dùng thông qua một số chức năng chung nếu có thể và sử dụng MySQLi hoặc PDO để tự động thoát khỏi bất kỳ dữ liệu nào để chống lại rủi ro tiêm. – Anthony
Tôi tin rằng đó là một thói quen tốt, không hoạt động - Tôi tin rằng ứng dụng của bạn không được chạm vào bất kỳ dữ liệu nào được nhập vào mà không được vệ sinh trước - tôi có một lớp học thông qua các yêu cầu đăng/nhận và tạo ra các phiên bản được khử trùng trước khi tôi có thể truy cập chúng –