2011년 6월 13일 월요일

자바을 이용한 암호학(자바보안 개정판:권한적용 애플릿) - 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 파일을 브라우저로 호출하면 된다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...