2010-03-26 5 views
3

저는 MySQL을 사용하여 PHP로 웹 응용 프로그램을 작성했습니다. 필자는 항상 데이터베이스 연결 정보를 구성 변수에 저장하고 데이터베이스에 연결했습니다.Java 애플릿을 사용하여 데이터베이스와 안전하게 통신하는 방법

클라이언트는 웹 사이트의 자바 애플릿이 자신의 데이터베이스와 통신하기를 원합니다. 필자는 애플릿이 공개 될 것이고 데이터베이스 연결 정보를 저장하는 방법을 알지 못하기 때문에 매우 주저합니다.

누군가가 내 응용 프로그램을 디 컴파일하거나 데이터베이스 연결 정보를 추출하여 악의적으로 사용하는 방법을 찾겠습니다.

이 작업을 안전하게 수행하는 방법에 대한 제안 사항이 있으십니까?

답변

5

분명히하기 위해, 당신은 연결이 "들리는"것에 대해 너무 걱정하지 않습니다. 누군가 애플릿을 열어서 데이터베이스 연결 세부 사항을 끌어낼지도 모른다고 걱정합니까?

글쎄, 아마 직접 연결하지 말고 대신 JSON/XML로 데이터를 반환 한 웹 앱과 이야기해야합니다. 사람들은 여전히 ​​애플릿 내에서 그것을 원한다면 잡을 수 있지만 웹 앱이 할 수있는 것에 국한됩니다.

보트를 부 풀지 않으면 애플릿이 사용하는 데이터베이스 사용자가 필요한 것만 수행하도록 제한되어 있는지 확인하십시오. 방금 데이터를 가져 오는 경우 삽입 권한을주지 마십시오.

쓰기 작업 만하는 경우 공용 데이터베이스와 개인 데이터베이스를 사용하는 것이 좋습니다. 애플릿에서 쓴 글은 공용 DB에 저장되어 한번 확인되면 동기화됩니다. 이 문제는 공개 DB에 모든 데이터의 복사본을 보관하지 않는 한 내장 검사와 관계가 손실 될 수 있다는 점에서 안전하지 않을 수 있습니다.

또 다른 옵션은 각 사용자에게 고유 한 데이터베이스 사용자를 부여하는 것입니다. 그런 다음 권한이없는 사람이 애플릿을 가져 오는 경우에도 여전히 들어갈 계정이 필요합니다.

중간 웹 응용 프로그램을 만드는 것이 가장 좋은 방법 일 것이라고 생각하지만 전체 시나리오를 알지 못합니다. 나는 판사에게 가장 적합하지 않다.

+0

플래시 오른쪽에서 AMFPhp와 비슷한 기능이 있습니까? 이 특정 문제에 관한 Stackoverflow에 관한 질문을 찾지 못했기 때문에 나는 일반적인 경우에 대해서도 묻습니다. – WarmWaffles

+0

물론입니다. AMFPhp는 데이터를 ActionScript 파싱 가능 파일로 serialize한다는 점에서 필요한 것보다 약간 더 집중적 인 기능을 제공합니다 ... 원하는대로 파싱 할 수있는 Java 옵션이 더 있습니다. JSON은 가볍고 PHP는 JSON과 쉽게 직렬화 할 수 있고 많은 무료 Java 라이브러리가 있기 때문에 IMO를 이해할 수 있습니다. – Oli

1

나는 웹 사이트와 통신하는 애플릿을 제안 할 것이다. 데이터베이스 자체와 통신합니다.

1

이것은 trusted client 문제입니다. 표준 JDBC 연결 자격 증명 상단에있는 인증 확장과 관련하여 JDBC를 자세히 살펴 보지 않고 모든 요청을 자신의 DB 계층으로 래핑하는 것이 좋습니다.

실제로 Ajax를 사용하여 JDBC 래퍼를 구현했습니다. 클라이언트에서 JS 내에서 직접 SQL 문을 실행하여 서블릿으로 변환하여 DB 요청으로 변환하고 업데이트 및 쿼리를 구현했으며 전체 구현이 300 줄 미만입니다 Java Servlet 코드 JS 코드 60 줄.

해결책에는 인증이 없지만 HTTP 계층 위에 쉽게 추가 할 수 있습니다. 어쨌든 당신은 신뢰할 수있는 클라이언트 문제가 있습니다. 해킹 된 클라이언트가 미리 정의되거나 지정된 사용 사례 외부의 전체 데이터베이스 스키마에 액세스 할 수있는 문제를 해결하지 못합니다.g 대신 백엔드 요청

select * FROM records

: 오직 인증 된 사용자에 의해 생성 된 레코드를 선택

SELECT id, data, val, ... FROM records WHERE userid = ...

. 보안을 유지하는 유일한 방법은 미리 정의 된 데이터 검색/수정 방법을 통해 DB에 액세스하는 것입니다. 그렇지 않으면 데이터베이스 자체에서 보안 및 데이터 격리를 수행해야합니다. "비싼 big O 데이터베이스"를 읽습니다.

위의 400 라인 JS/Java 예제는 사내에서만 사용할 수있는 테스트 시스템에서 사용됩니다.

관련 문제