Java

Các lỗ hổng thường gặp và cách thực hiện lập trình an toàn trong phát triển ứng dụng web (P4).

7. User enumeration

- Nguy cơ:

  • Trường hợp thông báo lỗi trên trang đăng nhập phân biệt giữa nhập sai tên đăng nhập và sai mật khẩu => dựa vào đó hacker có thể thử và tìm ra các user có trên hệ thống.
  • Với các chức năng phải thông báo tên user nhập vào là đúng hay sai như các chức năng reset password, forgot password, chức năng đăng ký thì hacker có thể thử và tìm ra các user có trên hệ thống. - Phòng chống:
  • Sử dụng chung thông báo lỗi cho cả 2 trường hợp nhập sai tên đăng nhập và mật khẩu trên trang đăng nhập vào hệ thống.
  • Sử dụng captcha cho các chức năng đăng ký, reset, forgot mật khẩu để tránh các công cụ tự động khai thác lỗi user enumeration. Ví dụ 1: Ứng dụng mắc lỗi user enumeration do thông báo user không tồn tại, hacker có thể dựa vào đó để dò đoán tên user:
private String checkLogin(String user, String password) {
    User userDB = null;
    if(user != null && !"".equals(user)) {
        userDB = getUser(user);
    }
    if(userDB == null) {
        return "Không tồn tại user";
    }
    if(userDB.getPassword() != password) {
        return "Sai mật khẩu";
    }
    return "Success";
}

Khắc phục lỗi trên bằng cách đưa ra thông báo chung cho cả 2 trường hợp sai mật khẩu và user, làm hacker không đoán được tên user như sau:

private String checkLogin(String user, String password) {
    User userDB = null;
    if(user != null && !"".equals(user)) {
        userDB = getUser(user);
    }
    if(userDB == null) {
        return "Sai tên đăng nhập hoặc mật khẩu";
    }
    if(userDB.getPassword() != password) {
        return "Sai tên đăng nhập hoặc mật khẩu";
    }
    return "Success";
}

8. Session fixation

- Nguy cơ: Kỹ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ bằng cách gửi một session ID hợp lệ đến người dùng, sau khi người dùng đăng nhập vào hệ thống thành công, hacker sẽ dùng lại session ID đó và nghiễm nhiên trở thành người dùng hợp lệ - Phòng chống:

  • Biện pháp 1: Chống việc đăng nhập với một session ID có sẵn: theo kiểu tấn công này, người dùng đăng nhập vào hệ thống thông qua một session ID do hacker tạo sẵn thay vì do trình chủ tạo mới, do đó để có thể phòng chống, ứng dụng phải hủy bỏ session ID được cung cấp bởi trình duyệt của người dùng khi đăng nhập và luôn tạo một session ID mới hi người dùng đăng nhập thành công.
  • Biện pháp 2: Giới hạn phạm vi ứng dụng của session ID.

9. Session Hijacking

- Nguy cơ: Kỹ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ sau khi nạn nhân đã đăng nhập vào hệ thống bằng cách giải mã session ID của họ được lưu trữ trong cookie hay tham số URL, biến ẩn của form. - Phòng chống: Giới hạn phạm vi ứng dụng của session ID

  • Kết hợp Sessiono ID với địa chỉ của trình duyệt. Chú ý trường hợp mạng client có sử dụng NAT để truy cập vào server ứng dụng sẽ không dùng được phương pháp này.
  • Xóa bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực, có thể thực hiện trên trình chủ. Thiết lập thời gian hết hiệu lực cho session, tránh trường hợp hacker có thể duy trì session và sử dụng nó lâu dài.
Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration