이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
Java의 Security Manager는 Java 플랫폼 보안 아키텍처의 중요한 구성 요소입니다. Java 응용 프로그램 또는 애플릿의 보안 정책을 시행합니다.
보안 관리자는 응용 프로그램이 시스템 리소스에 액세스할 수 있는 권한을 쿼리하고 요청할 수 있도록 하는 일련의 메서드를 정의하는 Java 클래스입니다. SecurityManager 클래스에 의해 구현됩니다.
신뢰할 수 없는 애플릿이나 응용 프로그램이 실행되면 보안 관리자가 호출되어 애플릿이나 응용 프로그램이 요청하는 시스템 리소스에 액세스하는 데 필요한 권한이 있는지 확인합니다. 애플릿이나 응용 프로그램에 필요한 권한이 없으면 보안 관리자가 SecurityException을 발생시킵니다.
보안 관리자는 또한 Java 플랫폼의 취약성을 악용하려는 악성 코드로부터 보호할 책임이 있습니다. 예를 들어 보안 관리자를 사용하여 애플릿이 로컬 파일 시스템을 읽거나 쓰는 것을 방지하거나 애플릿을 다운로드한 호스트가 아닌 다른 호스트에 네트워크 연결을 만드는 것을 방지할 수 있습니다.
보안 관리자를 사용하려면 응용 프로그램이나 애플릿이 먼저 SecurityManager.getSecurityManager() 메서드를 호출하여 보안 관리자에 대한 참조를 가져와야 합니다. 보안 관리자는 checkPermission() 메서드를 사용하여 권한을 확인하는 데 사용할 수 있습니다.
다음 코드 예제는 보안 관리자를 사용하여 애플릿이 로컬 파일 시스템에서 파일을 읽을 수 있는지 여부를 확인하는 방법을 보여줍니다.
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
try {
sm.checkPermission(new FilePermission("/tmp/foo.txt", "read"));
} catch (SecurityException se) {
// handle exception
}
}
애플릿이나 응용 프로그램에 필요한 권한이 없으면 checkPermission() 메서드는 SecurityException을 발생시킵니다.
Security Manager가 모든 보안 문제에 대한 만병통치약은 아니라는 점에 유의해야 합니다. 보안 관리자는 Java 응용 프로그램 또는 애플릿의 보안 정책만 시행할 수 있다는 점을 기억하는 것이 중요합니다. 모든 보안 위협으로부터 보호할 수는 없습니다.
예를 들어 보안 관리자는 버퍼 오버플로 공격으로부터 보호할 수 없습니다. 버퍼 오버플로 공격은 프로그램의 취약점을 악용하기 위해 프로그램에 악성 코드를 주입하는 공격 유형입니다.
버퍼 오버플로 공격은 종종 프로그램을 제어하거나 프로그램을 충돌시키는 데 사용됩니다. 또한 프로그램이 실행될 때 실행될 프로그램에 악성 코드를 삽입하는 데 사용할 수도 있습니다.
버퍼 오버플로 공격으로부터 보호하려면 버퍼 오버플로가 발생하지 않도록 하는 언어를 사용하는 것이 중요합니다. 예를 들어 Java는 경계 검사라는 메모리 안전 유형을 사용하기 때문에 버퍼 오버플로 발생을 허용하지 않습니다.
Java 애플리케이션을 개발할 때 안전한 코딩 방식을 사용하는 것도 중요합니다. 안전한 Java 개발을 위한 몇 가지 모범 사례는 다음과 같습니다.
Java 보안 관리자는 Java 플랫폼 보안 아키텍처의 중요한 구성 요소입니다. Java 응용 프로그램 또는 애플릿의 보안 정책을 시행합니다. 보안 관리자를 사용하여 개발자는 악성 코드와 공격자가 악용할 수 있는 취약성으로부터 응용 프로그램을 보호할 수 있습니다.