- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我遇到了 Java 安全问题。我有一个使用 pdfbox-1.7.1.jar 来解密我知道其密码的 PDF 的代理。该 jar 已放置在服务器和我的客户端的/jvm/lib/ext 中,我得到了堆栈跟踪的这个小细节:
java.lang.SecurityException
at java.lang.SecurityManager.checkPermission(SecurityManager.java:582)
at COM.ibm.JEmpower.applet.AppletSecurity.checkSecurityPermission(AppletSecurity.java:1332)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1613)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1464)
at java.lang.SecurityManager.checkSecurityAccess(SecurityManager.java:1725)
at java.security.Security.insertProviderAt(Security.java:190)
at java.security.Security.addProvider(Security.java:210)
at org.apache.pdfbox.pdmodel.encryption.SecurityHandlersManager.getInstance(SecurityHandlersManager.java:146)
at org.apache.pdfbox.pdmodel.PDDocument.openProtection(PDDocument.java:1365)
at org.apache.pdfbox.pdmodel.PDDocument.decrypt(PDDocument.java:798)
at com.magerman.hremail.prep1docc.PDFDecryptor.decrypt(Unknown Source)
at com.magerman.hremail.prep1docc.MetaAttachment.decrypt(Unknown Source)
at com.magerman.hremail.prep1docc.MetaDocContainingAttachments.removePasswordOfPDFAttachments(Unknown Source)
at com.magerman.hremail.prep1docc.EPDFPreparerFactory.generateAttachmentsTriggerDocs(Unknown Source)
at com.magerman.hremail.prep1docc.EPDFPreparerFactory.run(Unknown Source)
at com.magerman.hremail.prep1docc.BaseClass.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
客户端和服务器都使用 8.5.3。代理安全级别设置为 3。将 jar 放在代理本身中无济于事。代理的签名者是服务器上的完全管理员。安全异常似乎指向“insertProviderAt”
这是我尝试过的:
放
grant {
permission java.security.AllPermission;
}
解决了我的问题,但我永远不会通过我的鹰眼管理员解决这个问题。
我正在尝试将权限范围缩小到仅数据库,但此处的文档:http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html并没有真正告诉我如何输入笔记数据库。
我在这里查看了 Stephan Wissel 关于 Xpages Java 安全性的文章:http://www.wissel.net/blog/d6plinks/SHWL-8JYAT5并将以下内容插入到我的/jvm/lib/security/java.policy 文件中:
grant codeBase "xspnsf://server:0/development/hre-mail/hre-mail2_0/hre-mail_(2_0)_dev.nsf/-" {
permission java.security.AllPermission;
};
但这也不起作用,我想是因为我的 codeBase 语法对 nsf 数据库无效,但仅对网页有效。
我也在尝试将权限减少到真正需要的权限,并查看此处的文档:http://docs.oracle.com/javase/1.4.2/docs/guide/security/permissions.html
暗示我必须做类似的事情
java.security.SecurityPermission "insertProvider.{name}"
但我不知道 {name} 应该是什么。
我还阅读了 Mikkel 关于 http://lekkimworld.com/2013/06/20/java_in_notes_domino_explained_on_java_security_and_how_it_relates_to_notes_domino.html 的文章
但我的大脑在页面中间炸裂了。特别是,我不确定如何实际实现此方法。你能牵着我的手,陪我走过吗?
当我这样做时,我是否正确地假设每当我将新 jar 放入/jvm/lib/ext 时,我需要做的就是一个
tell http restart
重新加载 JVM?我假设 Domino 正在为 Xpages、代理和 HTTP 任务使用单个 JVM,对吗?
另外,我需要重启服务器才能使 java.policy 中的任何新策略生效,我说得对吗?
有什么想法吗?
最佳答案
感谢 Richard、Simon、Mark Myers 和 giulio 查看问题。
我终于开始理解 Mikkel 的文章(通过真正慢慢阅读):
解决方案比我想象的要简单,我被反射示例搞糊涂了。
这是一种比修改 java.policy 文件(我没有管理,顺便说一句)更优雅的方法。
我通过添加一个新方法 dopriviledgeddecrypt() 修改了调用它的 decrypt() 方法时产生问题的类,该方法是对导致问题的方法的巧妙包装。然后,我将所有调用者修改为 PDFDecryptor.decrypt(),以便它们调用 PDFDecryptor.dopriviledgeddecrypt()。最后一步涉及将整个类导出到一个 jar 文件,然后将其放置在您正在开发的机器(在客户端中)和将运行此代码的所有服务器上的\jvm\lib\ext 文件夹中。
我也无法确定是否有修改 java.policy 文件的语法,以便它只影响单个 Notes 数据库。 (更新:我现在知道这是不可能的)
package com.magerman.hremail.prep1docc;
public class PDFDecryptor {
/**
* Instantiates a new pDF decryptor.
*
* @param inputFile
* the input file
* @param inputPassword
* the input password
*/
public PDFDecryptor(final File inputFile, final String inputPassword) {
originalFile = inputFile;
password = inputPassword;
}
/**
* Decrypt. Given an inputted PDF File, will try to remove the security of
* the PDF and save in-place. Done after the attachments have been extracted
*/
public final void decrypt() {
// naughty code here
}
public final void doproviledgeddecrypt() throws Exception {
AccessController.doPrivileged(new PrivilegedExceptionAction() {
public Object run() throws Exception {
PDFDecryptor.this.decrypt();
return null;
}
});
}
}
关于java - Domino Agent 在/jvm/lib/ext 中使用第三方 jar 来解决 Java 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19169014/
@Cacheable在同一类中方法调用无效 上述图片中,同一个类中genLiveBullets()方法调用同类中的queryLiveByRoom()方法,这样即便标识了Cacheable标签,
目录 @Transaction注解导致动态切换更改数据库失效 使用场景 遇到问题 解决 @Transaction
@RequestBody不能class类型匹配 在首次第一次尝试使用@RequestBody注解 开始加载字符串使用post提交(貌似只能post),加Json数据格式传输的时候,
目录 @Autowired注入static接口问题 @Autowired自动注入普通service很方便 但是如果注入static修饰的serv
目录 @RequestBody部分属性丢失 问题描述 JavaBean实现 Controller实现
目录 解决@PathVariable参数接收不完整的问题 今天遇到的问题是: 解决办法: @PathVariable接受的参
这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚。后来终于找到了原因。 如果你也出现了这种情况,可以从下面开始排查。 1、特性 先来了解一下@Trans
概述: ? 1
场景: 在处理定时任务时,由于这几个方法都是静态方法,在aop的切面中使用@Around注解,进行监控方法调用是否有异常。 发现aop没有生效。 代码如下:
最近做项目的时候 用户提出要上传大图片 一张图片有可能十几兆 本来用的第三方的上传控件 有限制图片上传大小的设置 以前设置的是2M&nb
我已经实现了这个SCIM reference code在我们的应用程序中。 我实现的代码确实通过了此postman link中存在的所有用户测试集合。 。我的 SCIM Api 也被 Azure 接受
我一直对“然后”不被等待的行为感到困扰,我明白其原因。然而,我仍然需要绕过它。这是我的用例。 doWork(family) { return doWork1(family)
我正在尝试查找 channel 中的消息是否仍然存在,但是,我不确定如何解决 promise ,查看其他答案和文档,我可以看到它可能是通过函数实现的,但我是不完全确定如何去做。我希望能在这方面获得一些
我有以下情况: 同一工作区中的 2 个 Eclipse 项目:Apa 和 Bepa(为简洁起见,使用化名)。 Apa 项目引用(包括)Bepa 项目。 我在 Bepa 有一个类 X,具有公共(publ
这个问题已经有答案了: Why am I getting a NoClassDefFoundError in Java? (31 个回答) 已关闭 6 年前。 我正在努力学习 spring。所以我输入
我正在写一个小游戏,屏幕上有许多圆圈在移动。 我在两个线程中管理圈子,如下所示: public void run() { int stepCount = 0; int dx;
我在使用 Sympy 求解方程时遇到问题。当我运行代码时,例如: 打印(校正(10)) 我希望它打印一个数字 f。相反,它给我错误:执行中止。 def correction(r): from
好吧,我制作的每个页面都有这个问题。我不确定我做错了什么,但我所有的页面都不适用于所有分辨率。可能是因为我使用的是宽屏?大声笑我不确定,但在小于宽屏分辨率的情况下,它永远不会看起来正确。它的某些部分你
我正在尝试像这样进行一个非常简单的文化 srting 检查 if(culture.ToUpper() == "ES-ES" || "IT-IT") { //do something } else
Closed. This question is off-topic. It is not currently accepting answers. Learn more。 想改进这个问题吗?Upda
我是一名优秀的程序员,十分优秀!