Làm thế nào để bảo mật thông tin DB khi deploy lên Heroku

Hello mọi người,

Chuyện em có làm 1 project nhỏ và deploy lên heroku thông qua github, có 1 vấn đề xảy ra là thông tin về database(dbname, username, password, host) sẽ bị lộ và mọi người đều có thể connect đến db. Mọi người cho em hỏi là có cách nào để khắc phục điều này không ạ? (ngoại trừ tạo private project trên github)

Em cảm ơn.
Have a good day.

EDIT

Problem

final String URL = jdbc:postgresql://host:port/dbname;
final String USERNAME = username_db_heroku; 
final String PASSWORD = password_db_heroku;  
Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD);

Solution

final String DB = System.getenv("JDBC_DATABASE_URL");
Connection con = DriverManager.getConnection(DB);

bạn để host là localhost thì chỉ có web của bạn của bạn mới kết nối được.

3 Likes

Lộ như thế nào? Bạn để thông tin database vào source code trên github?
Và với thông tin lộ đó có thể kết nối được bằng cách nào? Bạn cho phép truy cập database từ internet?

2 Likes

Không. Db đó không phải ở máy mình. Mình tạo db ở heroku ý.

Em tạo postgresql trên heroku. Heroku sẽ cấp host, username, password của DB đó. Và em dùng những thứ đó để connect đến DB đó trong code. Khi em push lên github thì những thông tin đó sẽ bị public và mọi người có thể dùng những thông tin đó để connect đến DB.

Đầu tiên bạn tìm cách đặt lại hay xin lại pass, sau đó bỏ trống phần config, rồi commit vào.

3 Likes

Ý anh là sửa lại code (phần connect) rồi push lên github ạ? Nếu vậy vẫn có thể xem những commit cũ mà.

localhost ở đây không phải là máy bạn, localhost là database và server chạy source code của web chạy trên cùng 1 máy, trường hợp này là cùng 1 server github, các nhà cung cấp hosting đều làm như vậy.

2 Likes

thì mình mới bảo bạn config cái db đó chỉ cho phép kết nối từ localhost (ở đây là chính IP của server heroku) là chỉ có cái web của bạn truy cập được thôi. Cho dù người ta biết username password của bạn mà heroku không chấp nhận những ip khác ngoài localhost kết nối

3 Likes

Em mới tìm thấy 1 cách rùi anh. Các thông tin vể DB thì heroku họ setup sẵn trong env rùi. Chỉ cần lấy ra là xong.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?