Tôi có một trang web đơn giản, nơi tôi thiết lập kết nối với máy chủ Mysql bằng PDO.Tại sao PDO in mật khẩu của tôi khi kết nối không thành công?
$dbh = new PDO('mysql:host=localhost;dbname=DB;port=3306', 'USER',
'SECRET',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
Tôi đã gặp phải một số lưu lượng truy cập trên trang web của mình và giới hạn kết nối máy chủ và trang web gửi lỗi này với mật khẩu PLAIN của tôi!
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08004] [1040] Too many connections' in /home/domain/html/index.php:xxx Stack trace: #0 /home/domain/html/index.php(64): PDO->__construct('mysql:host=loca...', 'USER', 'SECRET', Array) #1 {main} thrown in /home/domain/html/index.php on line 64
Trớ trêu thay tôi chuyển sang PDO vì lý do bảo mật, vì lỗi chính xác này là điều bạn có thể gây ra rất dễ dàng trên hầu hết các trang web sử dụng http lụt đơn giản.
Tôi hiện đã bao gồm kết nối của mình trong khối thử/nắm bắt, nhưng tôi vẫn nghĩ rằng điều này thật thảm khốc!
Tôi mới tham gia PDO và câu hỏi của tôi là: tôi phải làm gì để cân nhắc an toàn? Làm cách nào để thiết lập kết nối theo cách an toàn? Có lỗ hổng bảo mật nào khác được biết đến như cái này mà tôi phải biết không?
Xem: http://stackoverflow.com/questions/5811834/why -would-this-be-poor-php-code/5811853 # 5811853 Đối với lỗ khi sử dụng tên bảng/db/cột động và cách cắm lỗ đó. – Johan
Tôi hết lòng đồng ý với việc tắt các lỗi trong sản xuất, thử/nắm bắt và các công cụ như vậy nhưng hãy xem xét nếu bạn đang có một "nhóm" ra nước ngoài của những kẻ progammers, nơi mà các lập trình viên "cơ sở" không biết mật khẩu, như bạn đã nói một lỗ hổng bảo mật "thảm khốc". Chưa kể, những lập trình viên mới làm quen không quan tâm đến việc tắt các lỗi. Với điều đó đã nói, tôi bị bối rối bởi quyết định này để tiết lộ mật khẩu do lỗi. – IMB
Moly thánh này là SICK! ÔI CHÚA ƠI! Điều này là hoàn toàn thái quá! Bạn cần nhiều upvotes chỉ để giữ cho mát mẻ của bạn và không đi vào CAPS RAGE. – Sharky