một chút của một newbie PHP/MySQL ở đây ...PHP/MySQL - Ký tự an toàn cho tên hiển thị/tên người dùng/mật khẩu, với PDO
Tôi đã xây dựng một trang web dựa trên PHP sử dụng cơ sở dữ liệu MySQL để lưu trữ thông tin người dùng, như tên hiển thị, tên người dùng và mật khẩu của họ.
Tôi đã tìm hiểu về thoát, các câu lệnh đã chuẩn bị và các loại tương tự, và cách ngăn chặn việc tiêm SQL như "bobby"); người dùng bảng thả-- ".
Tôi đang sử dụng các câu lệnh chuẩn bị PDO để nhận dữ liệu nhập của người dùng từ biểu mẫu, để đăng ký chúng vào DB. Tuy nhiên, tôi cần phải biết một vài điều:
Kể từ khi tôi đang sử dụng chuẩn bị phát biểu, cho tên hiển thị, tên người dùng, mật khẩu, vv, là nó okay cho tôi để cho phép ký tự đặc biệt như @, #, $, hoặc thậm chí là dấu ngoặc kép 'đơn' hoặc "gấp đôi"? Và còn khoảng trắng, ký tự quốc tế, ký tự có dấu trọng âm hoặc những thứ như ♥ ? Và khi tôi hỏi rằng "okay" có cho phép các ký tự này không, tôi có thể tự hỏi nếu có thêm bất kỳ rủi ro bảo mật nào có thể phát sinh không cho phép dấu ngoặc kép hoặc dấu ngoặc đơn trong tên người dùng hoặc số như thẻ html cho chữ in đậm hoặc in nghiêng?
Nếu nó không quan trọng để cho phép nhất ký tự đặc biệt, nhưng không phải một số: là có bất kỳ cụ thể nhân vật "nguy hiểm" (trong phạm vi của MySQL) mà tôi hoàn toàn cần phải thực hiện bất hợp pháp? (Tôi cảm thấy như dấu ngoặc kép có thể phù hợp chương trình nghị sự này, nhưng tôi nhận được tín hiệu hỗn hợp về điều đó.)
Nếu tôi được phép ký tự bên ngoài các điển hình "chữ và nhấn" phạm vi, là có bất kỳ cạm bẫy tôi có thể trải nghiệm sau (trong MySQL, SQL hoặc PHP) để cho phép các ký tự lạ? Tôi có cần bằng cách nào đó để làm cho thẻ html xuất hiện dưới dạng chuỗi, thay vì thẻ thực tế , khi hiển thị tên người dùng của mọi người? Hoặc tôi có cần phải thoát khỏi các báo giá trong tên người dùng bất cứ khi nào tôi muốn truy vấn với họ không? Hoặc không có vấn đề gì kể từ khi tôi sẽ sử dụng báo cáo đã chuẩn bị với PDO?
Do bảng mã như utf8 hoặc UTF16 đến ở bất cứ nơi nào, trong việc đưa ra nó vì vậy tôi có thể chấp nhận phạm vi rộng nhất của tên hiển thị và tên người dùng, trong khi vẫn đảm bảo những bảng chữ cái có thể được trả lại trên trang web của tôi?
Tôi biết rằng có một số chữ cái Cyrillic trông giống hệt với các chữ cái tiếng Anh . Tôi sử dụng để sao chép trực tiếp từ MS Word và sử dụng chúng trong tên người dùng của tôi. Tôi nhận thấy rằng những điều này có thể được sử dụng để giả mạo mạo danh các thành viên khác, chỉ bằng cách hoán đổi một chữ "a" cho một chữ "a" bằng chữ Kirin. Tên người dùng với ♥ trong họ có thể khó khăn để tìm kiếm xem có ai đó không thông thạo mã alt hay không. Nên này có phải là mối lo ngại không? Ý kiến của bạn như thế nào?
Cảm ơn trước bất kỳ ai có thể cho tôi một số thông tin chi tiết về điều này.
Hãy giới hạn bài đăng của bạn cho một câu hỏi tại một thời điểm –