내가 가지고있는 개념은 많은 Java 클라이언트가 실행 중이고이 데이터베이스를 사용하는 (직접 연결하는) 중앙 MySql 데이터베이스를 사용합니다. 클라이언트는 공개적으로 사용할 수 있으므로 보안이 문제가됩니다.Java 클라이언트에서 데이터베이스 보안
Java가 디 컴파일 될 수 있으므로이 시스템의 보안 부분을 클라이언트 응용 프로그램에 넣을 수 없습니다. 해커가 연결 데이터를 추출하고 해킹을 위해 자신의 앱을 작성할 수 있기 때문에 데이터베이스에 액세스하기 위해 초기 사용자 이름/비밀번호가 있어야합니다.하지만 그 이상으로는 클라이언트에서 아무것도 확보 할 수 없습니다.
그래서, 이것은 매개 변수화 된 저장 프로 시저를 이끌었습니다. 이렇게하면 SELECT & EXECUTE로만 사용 권한을 제한하여 데이터베이스를 조금 보호 할 수 있습니다. 그리고 각 SP에 사용자 이름/암호 매개 변수가 포함되도록 고려 중이므로 하위 수준의 사용자가 관리 SP를 해킹하거나 사용할 수 없도록 각 SP 호출시 사용자 권한 수준을 확인할 수 있습니다.
이것은 보안 수준이 일정한 것으로 보이며 데이터베이스에 대한 다중 레벨 액세스를 허용하지만 SQL 주입이 가능합니다.
매개 변수가있는 SP를 사용하는 경우 SP가 매개 변수를 데이터베이스로 보내기 전에 매개 변수를 정리하려면 어떻게해야합니까? PhP에서 이것은 간단하지만 로컬로 실행되는 Java 클라이언트에서는이 작업을 수행 할 서버 측 응용 프로그램이 없습니다. 나는 어떤 종류의 서버 측 응용 프로그램을 데이터베이스 & 클라이언트에 넣을 수 있다는 것을 알고 있지만 가능한 경우이를 피하고 싶습니다.
달성이 가능합니까? 그러면 '안전'합니까?
이 방법을 사용하는 것이 올바른지, 아니면이 아키텍처를 사용하여 이런 종류의 보안을 구현하는 더 좋은 방법이 있습니까?
SQL 인젝션에 대해 들어 본 적이 있습니까? 여러분이 방금 제안한 것은 전체적으로 훨씬 더 나쁜 취약점을 도입하는 것입니다. – rook
당신이 내 게시물을 읽었을 때 나는 SQL 주입에 대한 나의 우려를 언급하고 SQL을 처리하기 전에 (아마도) 사용자가 입력 한 데이터를 정제 할 방법이 있는지 묻고 있었다. – Dave