Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Câu hỏi bảo mật trang web động (PHP + MySQL)

Các điểm khác cần suy nghĩ:

1. Bạn dễ bị bruteforce

Một cuộc tấn công từ điển sẽ bẻ khóa mật khẩu của bạn. Vì đại đa số người dùng có mật khẩu không an toàn nên vấn đề chỉ là thời gian. Sử dụng hình ảnh xác thực hoặc ghi lại các mục nhập không hợp lệ. Hoặc thêm một số thời gian trễ khi mật khẩu không chính xác.

Như Đại tá Shrapnel đã nói, một bảng cầu vồng không phải là mối quan tâm đối với bạn bởi vì chúng được sử dụng khi ai đó có một loạt các băm và muốn bẻ khóa chúng. Muối được sử dụng để bảo vệ khỏi bàn cầu vồng và đây không phải là trường hợp của bạn.

2. Bạn đang gửi mật khẩu dưới dạng văn bản rõ ràng

Nếu ai đó đánh hơi thông tin đăng nhập của bạn (chẳng hạn như wifi), bạn sẽ phải chịu đựng. Có một số lib javascript có thể mã hóa mọi thứ bằng cách sử dụng khóa công khai. Nếu bạn không muốn sử dụng SSL, hãy mã hóa thông tin đăng nhập / mật khẩu, gửi đến máy chủ, giải mã bằng khóa cá nhân và bạn sẽ an toàn hơn.

3. Cân nhắc sử dụng các câu lệnh chuẩn bị sẵn trên MySQL

Sử dụng các câu lệnh đã chuẩn bị giúp chống lại việc đưa vào SQL, vì nó có thể chạy một cách an toàn ngay cả với đầu vào độc hại:

$dbc = new mysqli("mysql_server_ip", "mysqluser", "mysqlpass", "dbname");
$statement = $db_connection->prepare("SELECT * FROM table WHERE thing='?'");
$statement->bind_param("i", $thing);
$statement->execute();

4. Không chuyển tiếp khi xác thực phía máy khách

Trên biểu mẫu đăng nhập của bạn, bạn chuyển tiếp trên một chức năng javascript ngăn Enter-key hoạt động. Điều gì sẽ xảy ra nếu tôi tắt Javascript? Bạn có thể sử dụng trường ẩn (ví dụ:), sử dụng hàm của bạn để ngăn Enter-key VÀ sử dụng hàm onSubmit () để thay đổi FormIsValid thành 1 trước đó gửi biểu mẫu. Trong máy chủ của bạn, hãy xác minh FormIsValid.

5. Bạn dễ bị chiếm quyền điều khiển phiên

Phiên của bạn được lưu trên cookie, theo mặc định có tên là PHPSESSID. Nếu kẻ tấn công có thể lấy cookie đó, nó có thể gửi nó đến máy chủ của bạn và đánh cắp phiên của bạn. Để ngăn chặn điều này, bạn có thể lưu địa chỉ IP của người dùng và tác nhân người dùng trong phiên và so sánh giá trị nhận được từ phiên theo mọi yêu cầu. Nếu các giá trị không khớp, IP của người dùng có thể đã thay đổi hoặc phiên có thể đã bị tấn công.

6. Bạn có thể dễ bị cố định phiên

Như đã nêu ở trên, nếu ai đó thuyết phục quản trị viên của bạn truy cập một số trang web và trang web này gửi yêu cầu đến trang web của bạn với PHPSESSID theo yêu cầu, thì trang web của bạn sẽ tạo phiên, xử lý thông tin đăng nhập / mật khẩu và nói rằng thông tin đăng nhập là sai . Không tệ cho đến bây giờ.

Sau đó, quản trị viên của bạn đăng nhập vào cổng thông tin của bạn, phiên đã tồn tại, thông tin đăng nhập và mật khẩu khớp và phiên được CẬP NHẬT. Biến hợp lệ bây giờ là 1.

Ngay sau khi biến được cập nhật, kẻ tấn công có toàn quyền truy cập vào cổng thông tin của bạn, vì hắn biết PHPSESSID, nên trang web của bạn không ngăn được việc chiếm quyền điều khiển phiên hoặc cố định phiên.

Để tránh cố định phiên và chiếm quyền điều khiển, hãy xem # 5.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu trữ đường dẫn tệp trong Cơ sở dữ liệu

  2. Quy ước đặt tên PHP / MySQL:camelCase so với under_score?

  3. Tìm giá trị chính xác từ một chuỗi được phân tách bằng dấu phẩy trong PHP MySQL

  4. Chuyển đổi ngày từ yyyy-mm-dd sang dd month_name năm

  5. Ứng dụng Laravel trên Azure:Quyền truy cập bị từ chối đối với người dùng 'azure' @ 'localhost'