2009-10-15 3 views
0

배경보안/MySQL을

는 HTML 페이지는 사용자 이름과 암호를 입력하도록 사용자에게 요청합니다. 이것들은 MySQL 데이터베이스에 대한 자격 증명입니다 (즉, JDBC 연결에 사용되므로 물리적으로 파일에 암호가 저장되지 않습니다).

제출시 데이터베이스에 연결하려고 시도하는 서블릿이 호출됩니다. 가능한 경우 자격 증명이 올 바르고 JSP 페이지가로드됩니다. 그렇지 않은 경우 오류가 표시됩니다.

로그인이 성공하면 웹 응용 프로그램은 데이터베이스에서 SQL 쿼리/업데이트를 수행하고 Java Beans를 JSP 페이지로 반환하는 서블릿을 사용합니다. 메모리 목적으로 내가 JDBC를 추측하고있어 들어

질문

은 이전에 제공된 자격 증명을 사용하여 연결을 다시 시작해야합니다 다음 페이지를 의미 폐쇄해야합니다. 분명히 사용자는 매번 암호를 제공하고 싶지 않으므로 어쨌든 저장해야합니다. 그것들이 그 세션을위한 Java 객체/bean에 저장된다면 (평범한 텍스트가되어야 검색하고 사용할 수있다) ... 그들은 공격 받기 쉬운가? 코드 내에 텍스트로 저장하는 것이 좋지 않습니까?

누군가가 세션을 해킹하여 개체를 호출 할 수 있다고 가정하고 있습니다 (이 사실을 알고 있다면)?

어떤 대안이 있습니까?

답변

0

새 연결을 시작하는 것이 너무 비싸므로 연결이 세션에 저장됩니다. 따라서 후속 페이지는 동일한 연결 객체를 가져옵니다.

보안은 웹 서버만큼 안전합니다. 누군가가 호스트에 액세스하여 웹 서버가 실행되는 사용자 또는 루트로 로그인 할 수 있으면 프로세스에 액세스 할 수 있습니다.

그러나 JDBC 드라이버는 사용자가 자격 증명에 액세스 할 수 없도록합니다 (그렇지 않은 전역 데이터 소스를 사용하지 않는 한). 그들은 연결 객체에서 메소드를 호출하려고 시도 할 수 있지만 실행중인 Java VM을 해킹하는 것과 같습니다. 사용 가능한 모든 보안 업데이트를 설치하지 않으면 매우 어렵습니다.

+0

신속한 답변을 보내 주셔서 감사합니다. 이 시나리오에서는 서버가 안전하다고 간주되어 (즉, 다른 보안 애플리케이션이 실행 됨) SSL이 사용됩니다. 그래서 나는 그것이 모두 좋다고 생각합니다. 후속 조치 - 연결 개체를 응답에 전달하여 세션에 저장하는 방법은 무엇입니까? 아니면 그냥 주어진거야? – ajr

+0

HttpServletRequest 객체는 원하는 객체를 저장할 수있는 Session 객체를 제공 할 수 있습니다. http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServletRequest.html#getSession%28%29를 참조하십시오. –