클라이언트-서버 애플리케이션에서:사용자의 애플리케이션 비밀번호를 DB로 보내는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/70170

문제

DB(Oracle)와 직접 연결되는 Java 데스크톱 애플리케이션이 있습니다.애플리케이션에 여러 사용자 계정이 있습니다.네트워크를 통해 사용자의 비밀번호(DB 비밀번호가 아님)를 보내는 올바른 방법은 무엇입니까?일반 텍스트로 보내고 싶지 않습니다.

도움이 되었습니까?

해결책

보안 소켓 연결을 통해 연결하거나 암호를 데이터베이스로 보내기 전에 로컬로 해시할 수 있습니다(또는 둘 다 더 좋음). 이상적으로는 암호가 일반 텍스트 형식으로 존재해야 하는 유일한 시간은 해싱 이전입니다.클라이언트 측에서 이 모든 작업을 수행할 수 있다면 많을수록 좋습니다.

다른 팁

Oracle 클라이언트와 Oracle 데이터베이스 간에 SSL 연결을 사용할 수 있습니다.JDBC를 사용하여 Oracle 클라이언트와 서버 간에 SSL을 구성하려면 다음을 수행하십시오.

서버 측에서:

1) 먼저 TCPS 프로토콜을 사용하도록 리스너를 구성해야 합니다.

LISTENER = (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcps)(HOST=servername)(PORT=2484)))

WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/server/wallet/path/)))

클라이언트 측에서:

1) 다음 jar는 클래스 경로여야 합니다.ojdb14.jar, oraclepki.jar, ojpse.jar

2) 연결에 사용되는 URL은 다음과 같아야 합니다.

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=servername)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=servicename)))

3) 다음 속성을 설정해야 합니다(시스템 속성(-D 옵션) 또는 연결 속성).

javax.net.ssl.trustStore, 
javax.net.ssl.trustStoreType, 
javax.net.ssl.trustStorePassword

참조: http://www.oracle.com/technology/tech/java/sqlj_jdbc/pdf/wp-oracle-jdbc_thin_ssl_2007.pdf

동의합니다. 사용자가 선택한 비밀번호를 일반 텍스트로 보내지 마세요.그러나 공개 키 암호화를 사용하는 방법이 부족하므로 이메일로 비밀번호를 보내면 일반 텍스트로 제공됩니다.내가 자주 본 일 중 하나는 사용자가 비밀번호를 잊어버리고 비밀번호 전송을 요청하면 시스템이 새 비밀번호를 생성하여 전송한다는 것입니다. 저것 하나는 사용자에게.그러면 사용자는 비밀번호를 변경할 수 있습니다.

이렇게 하면 사용자가 선택한 비밀번호(사용자가 다른 곳에서 사용할 수 있음)는 전송되지 않으며 임시 비밀번호는 일반 텍스트로 전송되므로 곧 변경해야 합니다.

데이터를 일반 텍스트로 보내고 싶지 않다면 암호화를 사용하세요 !!!

AES, Twofish 등과 같은 일부 암호화 알고리즘을 사용하십시오.

클라이언트와 서버의 위치도 고려해야 합니다.둘 다 동일한 시스템에 있으면 암호화를 사용할 수 없습니다.서로 다른 컴퓨터에 있는 경우 일부 암호화 알고리즘을 사용하여 민감한 데이터를 보내세요.

비밀번호의 유효성을 확인하는 경우 비밀번호 해시를 보내면 됩니다.이 방법은 비밀번호를 직접 비교하는 경우에만 작동합니다.사용자가 제어할 수 없는 다른 응용 프로그램이 유효성 검사 작업을 수행하는 경우 암호를 해시할 수 없습니다.

중간 계층 없이 DB에 직접 연결하는 경우 실제 사용자별로 DB 사용자를 사용하는 것을 고려해야 합니다. 그렇지 않으면 애플리케이션의 액세스를 실제로 보호할 수 없기 때문입니다.

ORa*Net을 사용하여 Oracle에 연결하는 경우 사용자 비밀번호는 자동으로 암호화되지만(Oracle 8부터) 일부 상황에서는 암호화되지 않은 비밀번호로 대체될 수 있습니다.이것은 다음으로 비활성화할 수 있습니다. ORA_ENCRYPT_LOGIN=true 클라이언트의 환경에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top