2010-05-13 5 views
1

내 컴퓨터에서 디버그 및 보안 테스트 용으로 java.security.AllPermission과 함께 실행될 특정 애플릿을 지정하고 싶습니다. 그러나 나는이 허가를 얻기 위해 실행하는 모든 애플릿을 사용하고 싶지 않습니다.사이트의 애플릿에 AllPermission 권한을 부여하려면 어떻게합니까?

grant codeBase "http://host_where_applet_lives/-" { 
permission java.security.AllPermission; 
}; 

애플릿이 강력한 뭔가를하려고 할 때이 값은 실패의 (a를 만들 : 그래서, 내 사용자 자바 정책 파일 편집, 나는이 값을 넣어보십시오 (I이 보장 한 테스트를 통해 올바른 정책 파일) 새 스레드, 내 경우). 그러나, 다음과 같은 값을 넣을 때 :

grant { 
permission java.security.AllPermission; 
}; 

애플릿은 강력한 조작을 수행 할 수 있습니다. 유일한 차이점은 codeBase 속성이 없음입니다.

여기에서 묻는 유사한 질문에 대한 답변은 AccessController.doPrivileged() 전화가 필요할 수 있음을 제안 (보여 주거나 입증하지 않음)하는 것처럼 보였습니다. 나에게 모든 애플릿에 권한을 부여 할 때 그 호출이 필요 없기 때문에 이것은 잘못된 것처럼 들린다 (앞에서 보여준 두 번째 예제). 이것이 해결책이라 할지라도 애플릿을 쓰레기로 처리하면 AccessController.doPrivileged() 호출을 실행하는 것이 쉽지 않거나 반드시 가능하지 않습니다. 그것을 시험해보기 위해, 나의 테스트는 이것이 단지 어쨌든 작동하지 않는다는 것을 보여준다. 그러나 나는 그 주위에 더 많은 아이디어를 듣게되어 기쁩니다.

[1] Can't get AllPermission configured for intranet applet. Can anyone help?

+0

해당 주석의'doPrivileged'는 LiveConnect를 통해 JavaScript에 의해 호출되는 애플릿을 나타냅니다. 'doPrivileged'에 대해서는 매우 신중해야하며 일반적으로 신뢰할 수있는 코드를 사용하십시오. –

+0

예, 그렇지만 doPrivileged()가 AllPermission에서 실행할 때 - 아무것도 - 특별하지 않음을 나타냅니다. – nahsra

답변

1

AccessControllerstack inspection을하고 있기 때문에 신뢰할 수없는 자바 스크립트의 실패 때문에 자바 스크립트에서 호출하는 자바 애플릿 코드가 SecurityException로 이어질 수 있음을 시사 참조 similar question에 대한 답변. 나는 코드를 시험해 보았고 Firefox는 doPrivileged() 호출없이 자바 스크립트로 호출되는 애플릿을 실행하지 않지만 Safari는 (적어도 Mac OSX에서는) 호출합니다.

JavaScript에서 애플릿을 호출하는 경우 대신 Applet.paint() 메서드를 사용하여 애플릿을 자동으로 호출 할 수 있습니다. 또는 doPrivileged() 메서드를 사용하여 스택 검사를 단락하고 필요한 모든 권한을 부여 할 수 있습니다. 물론 신뢰할 수없는 코드가 있으면 권한있는 코드를 호출 할 수 있습니다.

+0

불행히도 해당 애플릿은 JavaScript/LiveConnect 등을 통해 호출되지 않으므로 해당 항목이 스택에 없어야합니다. Btw, 하이! – nahsra

+0

애플릿이 JavaScript를 통해 호출되지 않으면 정책 파일의 해당 URL로 AllPerrmissions를 부여 할 수 있어야합니다. Firefox 및 Mac OSX의 Safari에서 작동하는지 확인했습니다. 오히려 오해의 소지가있는 브라우저일까요? 그리고 무슨 일인가? – alsmola

+0

그게 문제의 요점입니다. URL을 지정하면 작동하지 않습니다. 어쩌면 그 고대 Mac JDK와 관련이 있을지도 모릅니다. = P 1.6.0u16을 실행 중이며 IE/Firefox/Chrome에서 테스트했습니다. – nahsra