일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- chatGPT's answer
- 자바
- 소프트웨어공학
- GPT-4's answer
- JVM
- 시스템
- write by chatGPT
- Database
- 고전역학
- android
- 웹 크롤링
- 역학
- 코틀린
- Java
- 리눅스
- 파이썬
- 데이터베이스
- 자바네트워크
- python
- spring integration
- flet
- kotlin
- 유닉스
- 자바암호
- write by GPT-4
- jpa
- spring data jpa
- NIO
- 인프라
- oracle
- Today
- Total
기억을 지배하는 기록
자바을 이용한 암호학 - 11 본문
PLT 5.3 Applet 서명
자바1.0 : 애플릿은 기본적으로 SandBox 안에서만 실행된다.
자바1.1 : 서명된 애플릿인 경우 시스템 자원에 접근 가능(지나치게 많은 권한이 받게 되었다.)
자바2 : java.policy 파일에 특정 코드에 대한 엔트리를 넣음으로써 사용자는 해당하는 애플릿에 대한 매우 자세한 권한을 설정 할 수 있게 됨.
권한 적용 애플릿 작성
com.crypto.UsernameApplet.java
package com.crypto; import java.applet.Applet; import java.awt.Graphics; public class UsernameApplet extends Applet { String mUsername; public void init() { try { mUsername = System.getProperty("user.name"); } catch (SecurityException e) { e.printStackTrace(); mUsername = null; } } public void paint(Graphics g) { if (mUsername != null) { g.drawString("Hello, " + mUsername + ".", 5, 25); } else { g.drawString("Couldn't get the username.", 5, 25); } } } |
UsernameApplet.html
<HTML> <HEAD> <TITLE> Username Applet </TITLE> </HEAD> <BODY> <APPLET CODE="com.crytpo.UsernameApplet.class" WIDTH=300 HEIGHT=200> </APPLET> </BODY> </HTML> |
위의 애플릿 예제를 실행 시키면 애플릿이 시스템 프로퍼티 정보를 조회를 시도하는 도중 권한이 없어 조회를 하지 못하게 된다. JAVA_HOME/jre/lib/security/java.policy 파일이나 USER_HOME 디렉토리 및의 java.policy 파일에 다음 내용을 추가한다.
grant 절에 다음 추가
permission java.util.PropertyPermission "user.name", "read"; |
실행
“appletviewer UsernameApplet.html”
java.poicy 파일을 별도로 만들어 사용하기
“appletviewer –J-Djava.security.policy=java.policy.applet UsernameApplet.html”
여기서 java.policy.applet은 별도 작성된 policy 파일이다.
브라우저에서 실행
작성한 Html 파일을 HtmlConverter 툴을 이용하여 convert시킨다. 애플릿은 자바 플러그인을 활성화 시키는 것이 아니라 브라우저의 VM을 활성화시킨다. 이것을 바꾸기 위해 사용한다.
HtmlConverter tool 화면
변경 후 html 코드
<HTML> <HEAD> <TITLE> Username Applet </TITLE> </HEAD> <BODY> <!--"CONVERTED_APPLET"--> <!-- HTML CONVERTER --> <OBJECT classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase = "http://java.sun.com/update/1.4.2/jinstall-1_4-windows-i586.cab#Version=1,4,0,0" WIDTH = 300 HEIGHT = 200 > <PARAM NAME = CODE VALUE = "com.crypto.UsernameApplet.class" > <PARAM NAME = "type" VALUE = "application/x-java-applet;version=1.4"> <PARAM NAME = "scriptable" VALUE = "false"> <COMMENT> <EMBED type = "application/x-java-applet;version=1.4" CODE = "com.crypto.UsernameApplet.class" WIDTH = 300 HEIGHT = 200 scriptable = false pluginspage = "http://java.sun.com/products/plugin/index.html#download"> <NOEMBED> </NOEMBED> </EMBED> </COMMENT> </OBJECT> <!-- <APPLET CODE = "com.crypto.UsernameApplet.class" WIDTH = 300 HEIGHT = 200> </APPLET> --> <!--"END_CONVERTED_APPLET"--> </BODY> </HTML> |
policy 파일을 사용자 디렉토리 밑에 .java.policy 이름으로 생성한다. policytool을 이용하여 작성하면 기본적으로 사용자 디렉토리에 생성된다. 이후 Html 파일을 브라우저로 호출하면 된다.
'오래된글 > Java' 카테고리의 다른 글
자카르타 프로젝트 HttpClient와 FileUpload 사용하기 (0) | 2018.04.07 |
---|---|
자바을 이용한 암호학 - 12 (0) | 2018.04.07 |
자바을 이용한 암호학 - 10 (0) | 2018.04.07 |
자바을 이용한 암호학 - 9 (0) | 2018.04.07 |
자바을 이용한 암호학 - 8 (0) | 2018.04.07 |