2012-02-27 3 views
2

나는 DB와 상호 작용하기 위해 JPA2.0 (Eclipselink)을 사용하고 있으며 일부 DB 구성이있는 persistence.xml 파일이 있습니다. 나는 DB에 접근하기 위해 사용 된 암호를 모호하게하고 싶다. Eclipse IDE를 사용하고 있습니다. 다음 설정 태그는 persistence.xml 파일에서 사용됩니다.데이터베이스 암호를 모호하게 만드는 방법은 무엇입니까?

<property name="javax.persistence.jdbc.user" value="app"/> 
<property name="javax.persistence.jdbc.password" value="password"/> 

여기서 비밀번호를 언급하고 싶지 않습니다. xml. 어떻게해야합니까?

참고 : 내 응용 프로그램은 Apache Derby 이 포함 된 스윙과 DB로 구성됩니다.

답변

2

서버에 암호를 저장 한 다음 JNDI을 사용하여 검색 할 수 있습니다.

암호를 암호화하고 클라이언트에서 해독 할 수도 있습니다. 사전 공격이나 프로그램을 디 컴파일하여 프로세스를 역전시킬 수도 있습니다.

+0

OP의 응용 프로그램이 응용 프로그램 서버 또는 모든 jndi 공급자에서 실행되는 경우 해당 답변이 올바른 방법입니다. – Kent

+0

오! 죄송합니다! 임베디드 DB를 사용하고 있다는 사실을 잊어 버렸습니다. – Ahamed

+0

@Ahamed, 그럼 나는 정말로 * 길을 본다. 클래스 파일에 정적으로 설정하거나 암호화하지 않거나 설정하지 않아도 모호해질 수 있습니다. –

0

이 시나리오에서 일반적으로 발생하는 현상은 해시를 XML 파일에 저장하고 백엔드에서 해시가 일치하는지 확인하는 것입니다.

다음과 같은 의사 코드 같은 것을 할 수 있어야한다 :

String password = property.getParam(password); 
String user = property.getParam(user); 

function validateHash(String unhashedPassword, String unhashedUser) 
{ 
    String passHash = generateMD5(unhashedPassword); 
    String userHash = generateMD5(unhashedUser); 

    if(!password.equals(passHash) && !user.equals(userHash) 
    { 
     throw new SecurityException("Oh noez hackstar"); 
    } 
} 

긴 하나가 사용하는 해시 알고리즘을 중심으로 논의, MD5에 대한 나쁜 아무것도만큼 당신이 아니기 때문에이 없다 핵 발사 코드를 보호하려고 노력합니다.

+0

물론, 보통 데이터베이스에 * 연결 *하려고 할 때 아닙니다. –

+0

@ JohanSjöberg 실제로 데이터베이스에 연결할 때 실제로 잘 작동합니다. 당신은 해쉬 된 자격 증명을 저장하지 않으므로,이 과정은 훌륭합니다. 일반 텍스트 비밀번호를 저장하는 경우 즉시 변경하십시오. 본질적으로 데이터베이스는 상관하지 않습니다. 특히 내 사용자 이름이 cat이고 내 암호가 'awesome'의 암호 인 MD5 해시 인 경우 – Woot4Moo

+0

참으로. 하지만 평범한 텍스트 암호는 프로그램에서 문자열로 저장해야한다는 것을 의미합니다.이 문자열은 다소 불투명하지만 안전하지 않습니다. –

관련 문제