Tag: 安全

Java 8中的新java.security.AccessControlException

以前工作的网络代码将java.security.AccessControlException抛入一个完全沙盒化的Java applet 。 Can’t get socket 2255: java.security.AccessControlException: access denied (“java.net.SocketPermission” “50.31.1.13:2255” “connect,resolve”) Oracle改变了什么 – 必须跳出哪些新的安全箍以保持套接字工作? 这在Java 1.7.0_55和所有以前版本的java中都有效。

从Javascript调用的Applet方法

我有一个小程序从特定文件夹上传一些文件并删除它们,但是当我从我的javascript代码调用applet函数时出现问题,当我从init()调用该函数时它工作正常。 我的applet代码: public class Uploader extends Applet { String serverPath; String clientPath; private JSObject win; @Override public void init() { serverPath = getParameter(“serverPath”); clientPath = getParameter(“clientPath”); try { win = JSObject.getWindow(this); } catch (JSException e) { log.warning(“Can’t access JSObject object”); } upload(topic,clientPath); } public void upload(String topic,String clientPath) { log.log(Level.SEVERE, “upload functiond”); DefaultHttpClient client = […]

禁用Java警告外观并影响Java Web Start应用程序

最近在Java Plug-In 1中发现了安全漏洞。 为了保护最终用户,大多数浏览器中的Java都被及时禁用。 “Java禁用”警告是什么样的? 阻止applet是否也会影响Java Web Start应用程序。 (它们是从网页中的链接启动的)针对桌面使用? Oracle Java Plug-In中的安全漏洞。 有关更多详情,请参阅 SO的JRE 1.7漏洞问答。 适用于CVE-2013-0422的Oracle安全警报 Java™SE开发工具包7,更新11(JDK 7u11)发行说明 – 修复漏洞的版本。

自定义JAX-RS授权 – 在每个请求中使用JWT

我有一个JAX-RS服务,我希望所有用户都能访问我的服务,但只有那些有权查看结果的用户。 基于角色的安全性和现有的REALMS和身份validation方法不符合我的要求。 例如: 用户对一个REST服务进行身份validation,然后向他发送带有其ID的JWT令牌 用户请求其他资源,并在每个请求中向他的JWT发送他的ID 我检查他的用户ID(来自JWT),如果业务逻辑返回结果我发回去,否则我发送空结果集或特定HTTP状态 问题是:我应该在哪里检查用户ID,在一些单独的filter,安全上下文或每个REST方法实现中? 如何使用此ID提供REST方法,在按ID过滤请求后,是否可以在每个方法中注入securityContext? 我正在使用GlassFish 4.1和Jersey JAX-RS实现。

使用来自authorized_keys的公钥和Java安全性

如何使用系统authorized_keys文件中的条目来实现java.security.PublicKey ? 我特别想要将authorized_keys文件中的公钥与Apache SSHD PublickeyAuthenticator接口中提供的公钥进行比较。

如何限制开发人员使用reflection来访问Java中的私有方法和构造函数?

如何限制开发人员使用reflection来访问Java中的私有方法和构造函数? 使用普通的Java代码,我们无法访问类外的私有构造函数或私有方法。 但是通过使用reflection,我们可以访问Java类中的任何私有方法和构造函数。 那么我们如何为Java代码提供安全保障呢?

处理加密exception

在Java中处理加密\解密时,这个非常基本的代码段很常见。 final Cipher cipher = Cipher.getInstance(“AES/CBC/NoPadding”); cipher.init(Cipher.ENCRYPT_MODE, key, iv); cipher.doFinal(*something*); 仅这三行,可能会抛出六个exception,我不确定处理它们的最干净(在代码可读性方面)是什么。 尝试六个catch子句对我来说真的很像。 在使用这些物体时,是否有微图案或最佳实践,我显然是缺失的? 编辑 对不起,我想我没有很好地解释自己。 我的问题不是关于避免try \ catch子句,而是如果有一种常见的方法来处理类似的情况。 例外情况是 NoSuchPaddingException, NoSuchAlgorithmException InvalidAlgorithmParameterException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException

在java中加密文本文件的最简单方法

对于我的学校项目,我必须certificate我可以在程序中使用文件处理。 为此,我做了一个非常简单的登录过程,您可以创建一个帐户,将用户名和密码写入资源文件夹中的文本文件。 显然这根本没有安全性,因为它不是为了展示文件处理而设计的,但是我的老师说我应该尝试在文件中添加一些加密以获得更好的成绩。 我做了一些研究,很多人都在推荐DES。 我遇到的问题是我的项目没有太多时间,需要尽快完成。 使用DES似乎需要一段时间来实现所有额外的代码。 在我的程序中,我使用一个简单的lineNumberReader来逐行读取文件。 要写入我正在使用BufferedWriter的文件。 无论如何都要非常简单地加密这些数据吗? 它不一定非常安全,但我需要certificate我至少试图加密数据。 加密和解密都将在同一应用程序上完成,因为数据未被传输。 我可以自己创建一个非常简单的加密和解密算法吗?

禁用当前线程的Javareflection

我需要调用一些半可信赖的Java代码,并希望禁用在代码执行期间使用reflection的能力。 try{ // disable reflection somehow someObject.method(); } finally{ // enable reflection again } 可以使用SecurityManager来完成,如果是这样,怎么做? 澄清/上下文:这是关于限制可以从JavaScript / Rhino调用的包的另一个问题的后续行动。 接受的答案引用了关于如何做到这一点的博客条目,它需要两个步骤,第一个使用Rhino API(ClassShutter),第二个关闭reflection和Class.forName()。 我想我可以使用SecurityManager更干净地完成第二步(了解SecurityManager,正如已经指出的那样,它是一个复杂的野兽,一路走来)。 总而言之,我希望(从代码,而不是设置文件)关闭Class.forName()以及对整个reflection包的任何访问。

RSA块的数据太多失败。 什么是PKCS#7?

谈论javax.crypto.Cipher 我试图使用Cipher.getInstance(“RSA/None/NoPadding”, “BC”)加密数据Cipher.getInstance(“RSA/None/NoPadding”, “BC”)但我得到了exception: ArrayIndexOutOfBoundsException:RSA块的数据太多 看起来是与“NoPadding”有关的东西,因此,阅读填充,看起来像CBC是这里使用的最佳方法。 我在google上发现了一些关于“RSA / CBC / PKCS#7”的内容,这是什么“PKCS#7”? 为什么它没有列在太阳的标准算法名称上 ? 更新: 我想知道,如果是填充问题,为什么这个例子运行得很好? import java.math.BigInteger; import java.security.KeyFactory; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.RSAPrivateKeySpec; import java.security.spec.RSAPublicKeySpec; import javax.crypto.Cipher; /** * Basic RSA example. */ public class BaseRSAExample { public static void main( String[] args) throws Exception { byte[] input = new byte[] { (byte)0xbe, […]