Tôi rất bối rối về điều gì đó và đang tự hỏi liệu có ai đó có thể giải thích hay không.Xác thực tính năng nhập của người dùng?
Trong PHP tôi xác thực người dùng nhập vào htmlentitiies, mysql_real_escape_string được sử dụng trước khi chèn vào cơ sở dữ liệu, không phải trên mọi thứ như tôi thích sử dụng cụm từ thông dụng khi tôi có thể mặc dù tôi thấy chúng khó làm việc. Bây giờ rõ ràng là tôi sẽ sử dụng mysql_real_escape_string khi dữ liệu đang đi vào cơ sở dữ liệu nhưng không chắc tôi nên sử dụng htmlentities() chỉ khi nhận dữ liệu từ cơ sở dữ liệu và hiển thị nó trên một trang web như trước khi bàn tay đang thay đổi dữ liệu được nhập bởi một người không giữ nguyên hình thức ban đầu có thể gây ra vấn đề nếu tôi muốn sử dụng dữ liệu đó sau này để sử dụng cho một thứ khác.
Ví dụ: tôi có một lưu bút với 3 tên trường, chủ đề và thông điệp. Bây giờ rõ ràng các trường có thể chứa bất kỳ thứ gì giống như mã độc trong thẻ js về cơ bản, bây giờ điều gì khiến tôi nhầm lẫn là tôi là một người độc hại và tôi đã quyết định sử dụng thẻ js và một số mã js độc hại và gửi biểu mẫu, bây giờ về cơ bản tôi có độc hại dữ liệu vô ích trong cơ sở dữ liệu của tôi. Bây giờ bằng cách sử dụng htmlentities khi xuất mã độc vào trang web (lưu bút) không phải là vấn đề vì htmlentities đã chuyển đổi nó thành an toàn tương đương nhưng sau đó cùng lúc tôi có mã độc vô dụng trong cơ sở dữ liệu mà tôi không muốn có. Vì vậy, sau khi nói tất cả điều này câu hỏi của tôi là tôi nên chấp nhận thực tế rằng một số dữ liệu trong cơ sở dữ liệu có thể độc hại, dữ liệu vô dụng và miễn là tôi sử dụng htmlentities trên đầu ra mọi thứ sẽ được ok hoặc tôi nên làm cái gì khác? .
Tôi đọc rất nhiều sách nói về lọc dữ liệu khi nhận nó và thoát nó khi xuất ra để biểu mẫu ban đầu được giữ nhưng chúng chỉ đưa ra các ví dụ như đảm bảo trường chỉ là một hàm đang sử dụng. Tôi chưa bao giờ tìm thấy bất cứ điều gì liên quan đến việc đảm bảo một thứ gì đó giống như một lưu bút mà bạn muốn người dùng gõ bất cứ thứ gì họ muốn mà còn cách bạn lọc dữ liệu đó ngoài mysql_real_escape_string() để đảm bảo nó không phá vỡ truy vấn DB?
Ai đó có thể vui lòng cuối cùng đóng sự nhầm lẫn này cho tôi và cho tôi biết tôi nên làm gì và thực hành tốt nhất là gì?
Nhờ bất kỳ ai có thể giải thích.
Chúc mừng!
Wow, cảm ơn bạn Marc B, không bao giờ biết tôi sẽ nhận được trả lời nhanh như vậy. Cảm ơn cho đầu vào của bạn tôi sẽ kiểm tra liên kết ra nhưng cũng điều này đã xóa tất cả mọi thứ lên. Rất may là trang web của tôi rất nhỏ nên không phải lo lắng nhưng ít nhất tôi có thể thay đổi mã của mình khi cần và làm những gì tôi nghĩ tôi cần làm như xác nhận của bạn. Tôi cảm thấy tự tin rằng tôi đang theo dõi lịch sử :) Rõ ràng nếu có ai khác muốn thêm bất kỳ đề xuất nào khác, vui lòng thực hiện. PS. Mong muốn trang web tuyệt vời tôi tìm thấy nó từ lâu, chỉ cần đăng ký :) – PHPLOVER
Nó không bao giờ là quá sớm để bắt đầu làm việc trên bảo mật dữ liệu và tính toàn vẹn. Có thực sự không phải là nhiều đến nó, nhưng sớm hơn bạn nhận được vào thói quen điều trị bất cứ điều gì đến từ bên ngoài như chất thải độc hại, thì tốt hơn. Là một lớp bảo mật bổ sung, bạn có thể muốn điều tra bằng cách sử dụng PDO và các câu lệnh đã chuẩn bị, trừ khi bạn phải xây dựng các truy vấn không phù hợp với giới hạn của nó. –
Cảm ơn Marc và mọi người khác, Thực sự đã trả lời tất cả các câu hỏi của tôi và hơn thế nữa, tôi đã học được rất nhiều từ việc viết bài này và cảm thấy thoải mái khi nói ít nhất là bây giờ :) Bạn đã giúp đỡ rất nhiều nhờ tất cả các bạn. – PHPLOVER