2011-10-11 2 views
1

나는 학교에서 사용할 응용 프로그램을 작성 중입니다. 각 학교는 데이터베이스를 설정합니다. 그리고 각 학교는 자신의 "설정"파일을 응용 프로그램에 제공 할 것입니다. 설정 파일에는 설정 파일을 만든 특정 학교의 데이터베이스 URL이 포함됩니다. 이것은 응용 프로그램을 사용하는 학생이 다른 데이터베이스에 연결하려는 경우 다른 설정 파일을로드 할 수 있도록하기위한 것입니다.응용 프로그램이 데이터베이스에 연결

내 질문은 데이터베이스에 연결하는 데 사용 된 사용자 이름과 암호를 어떻게 보호합니까? 따라서 응용 프로그램에는 데이터베이스에 대한 읽기 및 쓰기 액세스 권한 만 있습니다. 그리고 해당 응용 프로그램은 해당 특정 학교에 대해서만 읽기 및 쓰기 권한이 있습니까?

자세한 정보가 필요하면 알려 주시기 바랍니다.

감사

+0

때문에 응용 프로그램이 웹 애플리케이션이나 데스크톱 응용 프로그램을 실현하려입니까? 응용 프로그램에서 암호를 암호화하고 싶습니까? 설정 파일은 단지 DB URL을 포함하지만 사용자/암호 정보는 포함하지 않습니다. btw, 당신은 특정 데이터베이스에 대한 데이터베이스 사용자를 만들 수 있습니다, 모든 데이터베이스는 동일한 db 서버 내에 있습니다 – Tommy

+0

바탕 화면, 나는 데이터베이스에 인증하기 위해 응용 프로그램에서 사용하는 사용자 이름과 암호를 보호하기를 원하며, 설정 파일에는 db url 만 포함됩니다 . 응용 프로그램 사용자 이름과 암호는 응용 프로그램에 DB의 읽기/쓰기 권한을 부여하는 데 사용됩니다. – prolink007

답변

2

Jasypt 한 번 봐, 그것은 개발자가 최소의 노력으로 그/그녀의 프로젝트에 기본 암호화 기능을 추가 할 수있는 자바 라이브러리입니다, 어떻게 암호화 작품에 대한 깊은 지식이 필요없이 .

jdbc.driver=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost/yourdb 
jdbc.username=userName 
jdbc.password=ENC(A6L729KukPEx7Ps8didIUWb01fdBRh7d) 

및 Jasypt와 같이 봄과 그것을 구성 :

<bean class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer"> 
    <constructor-arg> 
    <bean class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> 
     <property name="config"> 
     <bean class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"> 
      <property name="algorithm" value="PBEWithMD5AndDES" /> 
      <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" /> 
     </bean> 
     </property> 
    </bean> 
    </constructor-arg> 
    <property name="locations"> 
    <list> 
     <value>classpath:/META-INF/props/db/db.properties</value> 
    </list> 
    </property> 
</bean> 

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="${jdbc.driverClassName}"/> 
    <property name="url" value="${jdbc.url}"/> 
    <property name="username" value="${jdbc.username}"/> 
    <property name="password" value="${jdbc.password}"/> 
</bean> 

이 실제 암호를 숨겨 (당신이 할 수있는 경우

당신은 스프링을 사용하여, 당신은 db.properties로 정의 할 수 있습니다 학생의 username과 동일), 등록 정보 파일을보고 연결 문자열을 파생 할 수 없습니다. 당신은 스프링을 사용하지 않는 경우

, 여기에 Jasypt guide이 같은 "수동"이

+0

나는 봄이 무엇인지는 잘 모르지만, 이것은 엄밀히 말해서 데스크톱 응용 프로그램입니다. 당신이 언급 한 매뉴얼 버전을해야한다는 뜻입니까? – prolink007

+0

@ prolink007, 데스크톱 응용 프로그램, 웹 응용 프로그램 또는 데몬인지 여부는 중요하지 않습니다. 원한다면 여전히 Spring을 사용할 수 있습니다. 처음에는 압도적 인 [doc] (http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html)을보고, 봄은 제비 뽑기와 많은 시원한 물건을한다. 그러나 현재 배우려는 것이 아니라면 Jasypt의 다양한 암호 암호화 기 (예 : BasicPasswordEncryptor, StrongPasswordEncryptor 등)를 사용하여 "손으로"자격 증명을 암호화하는 것도 매우 확실한 옵션입니다 – tolitius

관련 문제