首页 数据库 mysql教程 Applet虽签名,但是异常:java.security.AccessControlException

Applet虽签名,但是异常:java.security.AccessControlException

Jun 07, 2016 pm 03:42 PM
但是 异常 签名

原文来源: http://blog.csdn.net/faye0412/article/details/7037078 一个Applet的项目,在客户端无论使用什么浏览器都无法正常运行,我检查了一下,异常信息如下: java.security.AccessControlException: access denied (java.io.FilePermission ALL FILES,

原文来源: http://blog.csdn.net/faye0412/article/details/7037078

一个Applet的项目,在客户端无论使用什么浏览器都无法正常运行,我检查了一下,异常信息如下:
java.security.AccessControlException: access denied (java.io.FilePermission ">", "execute")...
.....


这个问题在开发的时候也曾经遇到过,后来签名后解决了,但是最近为啥又冒出来了呢?奇怪....

我又找了N台机器,不同版本的浏览器(ie7,8,9...Cheome, Firefox....)都测了一遍发现一个问题:

1. 与浏览器无关,而是与jre的版本有关;

2. jre版本高于1.6.0_20的都不能正常运行,低于该版本的都可以正常运行(我的是JRE 版本 1.6.0_29-b11,不能运行);


如何解决呢?于是我找了Oracle里N多相关的文档,比如:

http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html(签名Applet)

http://docs.oracle.com/javase/1.4.2/docs/guide/security/permissions.html(Permissions in the JavaTM 2 SDK)


等等,都没啥进展。我尝试了如下方法:

1. 定义私有policy文件的方法;

2. 修改Java默认安全策略文件(不太安全), ${java.home}/lib/security/java.security文件,增加授权方式;


都没起作用(可能是我没弄对?),但是我们不能让每一个客户都去修改他们自己的安全策略文件,毕竟不是每一个人都那么专业,客户也不会愿意接受这种方式的。


问题解决:

后来在翻阅文档后发现了一个重要的方法,可以很快速的解决我的问题,那就是:使用AccessController.doPrivileged提升代码权限!如果不期望客户端修改JRE中的安全配置,可以选择在代码中提升,而这个就是我所期待的!

在客户端弹出的jdk的对话框中只要用户点击信任,运行按钮,也就是说如果信任此签名,将可以执行此代码:AccessController.doPrivileged(...),Applet权限也将得到提升。


具体示例代码如下:

[java] view plaincopy

  1. private String runCmd(){  
  2.     String result = AccessController.doPrivileged(new PrivilegedAction() {    
  3.         @Override    
  4.         public String run() {  
  5.                 String res = null;  
  6.         //TODO like 'Runtime.getRuntime().exec(cmd)' etc.....  
  7.                 return res;    
  8.             }  
  9.         });  
  10.     return result;  
  11. }  

就这样,简单的几句话就搞定了。。。。

别忘了,最后需要做的是重新打jar包,签名,然后将证书和keystore文件,jar文件重新发布到服务器测试:)


补充:

之前也曾写过一篇文章《关于JS调用Applet的执行权限的问题》(http://blog.csdn.net/faye0412/article/details/4566400),里面提到了使用SwingUtilities.invokeLater(new Runnable()...的方式,但是这种方法只能解决之前的签名和Applet假死的情况,不能解决现在遇到的这种情况,所以,最好的方式是结合这两种方法使用。问题完美解决!!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在PDF中验证签名 如何在PDF中验证签名 Feb 18, 2024 pm 05:33 PM

我们通常接收到政府或其他机构发送的PDF文件,有些文件带有数字签名。验证签名后,我们会看到SignatureValid消息和一个绿色勾号。如果签名未验证,会显示有效性未知。验证签名很重要,下面看看如何在PDF中进行验证。如何在PDF中验证签名验证PDF格式的签名使其更可信,文档更容易被接受。您可以通过以下方式验证PDF文档中的签名。在AdobeReader中打开PDF右键单击签名,然后选择显示签名属性单击显示签名者证书按钮从“信任”选项卡将签名添加到“受信任的证书”列表中单击验证签名以完成验证让

Java中的OutOfMemoryError异常常见原因是什么? Java中的OutOfMemoryError异常常见原因是什么? Jun 25, 2023 pm 08:43 PM

Java是目前使用最广泛的编程语言之一,但在使用Java开发应用程序时,很容易遇到“OutOfMemoryError”异常错误,这种错误经常会给开发者带来一些挑战。究竟什么原因会导致Java中的OutOfMemoryError异常呢?接下来,我们就来详细了解一下。内存泄漏(MemoryLeak)内存泄漏是指当一个对象不能被垃圾回收器回收时,就会导致内存泄漏

重新启动后,Outlook签名每天都会消失 重新启动后,Outlook签名每天都会消失 Feb 19, 2024 pm 05:24 PM

电子邮件签名对于展示合法性和专业性非常重要,其中包括联系信息和公司标志。Outlook用户经常抱怨签名在重启后会消失,这对于那些希望提高公司知名度的人来说可能会很沮丧。在本文中,我们将探讨不同的修复程序,以解决这一问题。为什么我的MicrosoftOutlook签名总是消失?如果您第一次使用MicrosoftOutlook,请确保您的版本不是试用版。试用版可能导致签名消失。此外,版本体系结构也应与操作系统的版本体系结构匹配。如果您发现OutlookWeb应用程序中的电子邮件签名不时消失,可能是因

如何解决Java线程中断超时异常(ThreadInterruptedTimeoutExceotion) 如何解决Java线程中断超时异常(ThreadInterruptedTimeoutExceotion) Aug 18, 2023 pm 01:57 PM

如何解决Java线程中断超时异常(ThreadInterruptedTimeoutException)在Java多线程编程中,经常会遇到线程执行时间过长的情况。为了避免线程占用过多的系统资源,我们通常会设置一个超时时间,当线程执行时间超过超时时间时,我们希望能够中断线程的执行。Java中提供了线程中断的机制,通过调用线程的interrupt()方法可以向线程

解决Java反射异常(ReflectiveOperationException)的方法 解决Java反射异常(ReflectiveOperationException)的方法 Aug 26, 2023 am 09:55 AM

解决Java反射异常(ReflectiveOperationException)的方法在Java开发中,反射(Reflection)是一种强大的机制,它允许程序在运行时动态地获取和操作类、对象、方法和属性等。通过反射,我们可以实现一些灵活的功能,比如动态创建对象、调用私有方法、获取类的注解等。然而,使用反射也会带来一些潜在的风险和问题,其中之一就是反射异常(

浪人崛起水池的异常任务攻略 浪人崛起水池的异常任务攻略 Mar 26, 2024 pm 08:06 PM

水池的异常是游戏中一个支线任务,很多玩家想知道水池的异常任务怎么完成,其实非常简单,首先我们要掌握在水中拍摄的技术,才可以接取任务,调查恶臭味的来源,之后发现原来是水池下面有很多的尸体,具体内容一起来看看这篇浪人崛起水池的异常任务图文攻略。浪人崛起水池的异常任务攻略1、和饭冢对话,学习在水中拍摄的技术。2、前往下图位置接取水池的异常任务。3、来到任务地点和NPC对话,了解到附近的水池有一股恶臭味。4、前往水池调查。5、大概游到下图位置,潜入到水下,会发现很多的尸体。6、使用相机对尸体进行拍摄。7

MIT最新力作:用GPT-3.5解决时间序列异常检测问题 MIT最新力作:用GPT-3.5解决时间序列异常检测问题 Jun 08, 2024 pm 06:09 PM

今天给大家介绍一篇MIT上周发表的文章,使用GPT-3.5-turbo解决时间序列异常检测问题,初步验证了LLM在时间序列异常检测中的有效性。整个过程没有进行finetune,直接使用GPT-3.5-turbo进行异常检测,文中的核心是如何将时间序列转换成GPT-3.5-turbo可识别的输入,以及如何设计prompt或者pipeline让LLM解决异常检测任务。下面给大家详细介绍一下这篇工作。图片论文标题:Largelanguagemodelscanbezero-shotanomalydete

高效解决Java大文件读取异常的实用技巧 高效解决Java大文件读取异常的实用技巧 Feb 21, 2024 am 10:54 AM

高效解决Java大文件读取异常的实用技巧,需要具体代码示例概述:当处理大型文件时,Java可能面临内存溢出、性能下降等问题。本文将介绍几种高效解决Java大文件读取异常的实用技巧,并提供具体代码示例。背景:在处理大型文件时,我们可能需要将文件内容读入内存进行处理,比如搜索、分析、提取等操作。然而,当文件较大时,通常会遇到以下问题:内存溢出:尝试一次性将整个文

See all articles