Helpex - Trao đổi & giúp đỡ Đăng nhập
16

Tôi đang tạo một ứng dụng và tôi cần kết nối với cơ sở dữ liệu. Cơ sở dữ liệu yêu cầu đăng nhập / mật khẩu để ứng dụng có thể thực hiện các hoạt động như chọn và chèn.

Trong ứng dụng, tôi cần kết nối với cơ sở dữ liệu bằng cách sử dụng đăng nhập và mật khẩu, vì vậy ứng dụng có thể tự do thực hiện một số tác vụ trên cơ sở dữ liệu. Câu hỏi của tôi là: làm cách nào để lưu trữ và sử dụng mật khẩu để kết nối với cơ sở dữ liệu mà không bị lộ mật khẩu?

Tôi không thể chỉ đơn giản sử dụng hàm băm hoặc mã hóa để lưu trữ mật khẩu vì cơ sở dữ liệu phải nhận ra mật khẩu (tôi nghĩ hầu hết hoặc tất cả các cơ sở dữ liệu phải nhận mật khẩu dưới dạng văn bản thuần túy).

.

.

Lưu ý: Kết nối được thực hiện bởi ứng dụng. Không có đầu vào của con người để thực hiện kết nối.

(Chỉnh sửa) Thông tin thêm về ứng dụng: nó là một ứng dụng web sử dụng servlet / jsp. Cơ sở dữ liệu nằm trên cùng một máy chủ của ứng dụng. Người dùng cho ứng dụng là người dùng mặc định không có quyền quản trị hoàn toàn, nhưng nó có thể chèn / xóa các hàng và thực hiện hầu hết các việc liên quan đến truy vấn và sửa đổi dữ liệu trong bảng.

16 hữu ích 3 bình luận 13k xem chia sẻ
10

Cách thông thường được thực hiện là ngoại nhập tên người dùng / mật khẩu vào tệp thuộc tính / cấu hình được đọc trong thời gian chạy (cho dù bạn có sử dụng nguồn dữ liệu JDBC / JNDI / CDI / J2EE / v.v.) gốc hay không.

Tệp được bảo vệ thông qua bảo mật O / S bởi sysadmins.

O / S có các công cụ bảo vệ tốt hơn mã ứng dụng.

10 hữu ích 5 bình luận chia sẻ
7

Bạn nên sử dụng tệp cấu hình cho việc này. sử dụng mùa xuân với JDBC để cuộc sống của bạn dễ dàng hơn!

http://www.youtube.com/watch?v=f-k823MZ02Q

Hãy xem hướng dẫn tuyệt vời ở trên về Spring framework và sử dụng JDBC. Xem tất cả JDBC và hướng dẫn mùa xuân của anh ấy. BTW, anh ấy trình bày cách lưu trữ mật khẩu trong các tệp cấu hình và đậu dây, v.v. Hy vọng điều này sẽ hữu ích.

7 hữu ích 1 bình luận chia sẻ
6

Bạn có thể sử dụng jasypt để mã hóa và lưu trữ tên người dùng và mật khẩu vào tệp datasource.properties.

public Connection getConnection() throws IOException{
    try{
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        encryptor.setPassword("jasypt");

        Properties props = new EncryptableProperties(encryptor);
        props.load( this.getClass().getResourceAsStream("datasource.properties") );

        String driver = props.getProperty("datasource.driver");
        String url = props.getProperty("datasource.url");        
        String userName = props.getProperty("datasource.userName");          
        String password = props.getProperty("datasource.password");

        Class.forName(driver);
        Connection conn = DriverManager.getConnection(url, userName, password);
        conn.setAutoCommit(false);

        return conn;
    } catch(ClassNotFoundException e) {
        e.printStackTrace();
        return null;

    } catch(SQLException e) {
        e.printStackTrace();
        return null;
    }
}
6 hữu ích 2 bình luận chia sẻ
5

Nếu đó là một ứng dụng web, hãy triển khai nó trên máy chủ ứng dụng Java EE và kết nối bằng tài nguyên JNDI. Chỉ quản trị viên thiết lập tài nguyên dữ liệu JNDI mới cần biết về thông tin xác thực cần thiết để kết nối. Người dùng và nhà phát triển thậm chí không cần phải biết chúng; chỉ là tên tra cứu JNDI.

Không thể loại bỏ hoàn toàn nhu cầu ai đó ngoài chủ sở hữu cơ sở dữ liệu biết tên người dùng và mật khẩu, nhưng có thể hạn chế kiến ​​thức đó đối với chủ sở hữu máy chủ ứng dụng.

Bạn cũng nên tạo thông tin đăng nhập riêng biệt chỉ cho ứng dụng đó và CẤP cho ứng dụng đó quyền truy cập và quyền tối thiểu cần thiết để hoàn thành nhiệm vụ của ứng dụng đó. Không nên có kiến ​​thức về các bảng hệ thống hoặc bất kỳ tài nguyên nào khác bên ngoài tỉnh của ứng dụng. NẾU quyền XÓA không cần thiết, đừng cấp quyền đó. Nếu quyền truy cập chỉ được đọc, đó là những gì bạn nên CẤP cho thông tin đăng nhập đó.

5 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ java database security cryptography password-protection , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading