简体   繁体   English

从Java脚本安全性问题调用签名的Java Applet

[英]Calling Signed Java Applet from Java Script Security Issues

I have a signed Java Applet that has the following method: 我有一个签名的Java Applet,它具有以下方法:

public Boolean SaveToFile(String text)
{
File file = new File("c:\\myFile.txt");

// if file doesnt exists, then create it 
if ( ! file.exists( ) )
{
    file.createNewFile( );
}

file.setReadable(true);
file.setWritable(true);
FileWriter fw = new FileWriter( file.getAbsoluteFile( ) );
BufferedWriter bw = new BufferedWriter( fw );
bw.write( text );
bw.close( );
return true;

} }

When i call this method from a button inside the applet, it creates the file without any problems. 当我从applet内的按钮调用此方法时,它创建的文件没有任何问题。

The problem is when i call this method from java script, i have the following exception: 问题是当我从Java脚本调用此方法时,出现以下异常:

access denied (java.io.FilePermission c:\myFile.txt read)

How can i fix this exception? 我该如何解决此异常?

Using AccessController fixed the issue: 使用AccessController解决了该问题:

    public Boolean SaveToFile(String text)
    {
    final String textEx = text;
    return AccessController.doPrivileged(new PrivilegedAction<Boolean>() {

            @Override
            public Boolean run()
            {

    File file = new File("c:\\myFile.txt");

    // if file doesnt exists, then create it 
    if ( ! file.exists( ) )
    {
        file.createNewFile( );
    }

    file.setReadable(true);
    file.setWritable(true);
    FileWriter fw = new FileWriter( file.getAbsoluteFile( ) );
    BufferedWriter bw = new BufferedWriter( fw );
    bw.write( textEx );
    bw.close( );
    return true;
    } }
 });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM