Tag: 安全

保护用于分发的Java jar文件

我正在开发一个我即将公开发布的应用程序。 我想尽我所能来确保那些下载我程序的人不会对它进行逆向工程。 我知道分发.jar文件是非常不安全的。 有人能推荐一种独立于平台的方式来分发我的Java应用程序吗 此外,我想在任何平台(Windows,Linux,Mac OSX)上将其作为服务安装。 谢谢!

Java:从applet为AES256修补客户端安全策略

我在商业Web应用程序中需要AES256加密/解密。 目前一切都很好,密钥大小为128.这在加密方面并不令人满意,所以我的问题是如何最好地解决这个问题,而无需用户手动安装任何东西。 我有来自Oracle的无限制管辖jar文件,但我不知道在用户的JRE / lib / security目录中替换这些文件是否与旧版本兼容。 显然我不想破坏用户的JRE。 此外,我对我的JRE安全目录有写权限,但我认为某些用户不具备这些权限。 有没有一个简单的方法解决这个问题,或者我是否坚持使用弱加密或可能有问题的用户步骤? 更新“unrestricting” javax.crypto.JceSecurity @ntoskml你是对的。 getMaxAllowedKeyLength仍然返回有限的密钥大小,但加密成功,密钥大小== 256 :)。 如果有强加密,我将更新我的测试方法并设置密钥大小。 谢谢 >>> from javax.crypto import Cipher >>> Cipher.getMaxAllowedKeyLength(“AES”) 128 >>> from java.lang import Class >>> c = Class.forName(“javax.crypto.JceSecurity”) >>> isRestricted = c.getDeclaredField(“isRestricted”) >>> isRestricted.setAccessible(True) >>> isRestricted.set(None, False) >>> isRestricted.get(None) False >>> Cipher.getMaxAllowedKeyLength(“AES”) 128 >>> from javax.crypto import KeyGenerator […]

在Android中隐藏密钥库密码的最佳方法是什么?

我是Android开发和实现SSLSockets的新手。 在做了一些挖掘后,我能够设置一个正常工作的简单服务器/客户端。 我认为实现可以使用一些工作,并且难以将密码加载到密钥库而不用纯文本。 这是客户端的一些代码。 如您所见,我将密码硬编码到本地var中。 是否有更好的方法加载密钥库密码,所以我没有在代码中以纯文本forms? char [] KSPASS = “password”.toCharArray(); char [] KEYPASS = “password”.toCharArray(); try { final KeyStore keyStore = KeyStore.getInstance(“BKS”); keyStore.load(context.getResources().openRawResource(R.raw.serverkeys), KSPASS); final KeyManagerFactory keyManager = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); keyManager.init(keyStore, KEYPASS); final TrustManagerFactory trustFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustFactory.init(keyStore); sslContext = SSLContext.getInstance(“TLS”); sslContext.init(keyManager.getKeyManagers(), trustFactory.getTrustManagers(), null); Arrays.fill(KSPASS, ‘ ‘); Arrays.fill(KEYPASS, ‘ ‘); KSPASS = null; KEYPASS = […]

Jetty网络服务器安全性

我有一个由Jetty提供支持的网站。 我想使网站密码受到保护(或类似)。 有没有办法单独通过配置(不触及代码)来完成此操作。 所有人都非常感谢。 担

java.security.AccessControlException:拒绝访问(“java.security.SecurityPermission”“authProvider.SunMSCAPI”)

直到早上我的小程序中的一切正常。 我接受了Java更新,一切都停止了。 我正在使用applet处理数字证书。 这是我的堆栈跟踪。 我跟着一些oracle文章,但没有奏效。 https://blogs.oracle.com/java-platform-group/entry/liveconnect_changes_in_7u45 http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#trusted_library http:// www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html Java Plug-in 10.45.2.18 Using JRE version 1.7.0_45-b18 Java HotSpot(TM) Client VM User home directory = C:\Users\vicky.thakor java.security.AccessControlException: access denied (“java.security.SecurityPermission” “authProvider.SunMSCAPI”) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(Unknown Source) at sun.security.mscapi.KeyStore.engineLoad(KeyStore.java:755) at sun.security.mscapi.KeyStore$MY.engineLoad(KeyStore.java:62) at java.security.KeyStore.load(Unknown Source) at SecurityApplet.initializeBrowserKeyStore(SecurityApplet.java:162) at SecurityApplet.isCertificateInstalled(SecurityApplet.java:268) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native […]

SecureRandom:init需要一次还是每次需要?

我们的团队使用SecureRandom生成密钥对列表(SecureRandom传递给KeyPairGenerator)。 我们无法就以下两个选项中的哪一个达成一致: 每次我们需要生成密钥对时创建一个新实例 初始化静态实例并将其用于所有密钥对 哪种方法通常更好, 为什么 ? 补充:我的直觉是第二种选择更安全。 但我唯一的论点是基于假设伪随机性是从当前时间戳得出的理论攻击:有人可能会看到密钥对的创建时间,猜测周围时间间隔内的时间戳,计算可能的伪随机序列,并获得关键材料。 补充:我对基于时间戳的确定性的假设是错误的。 这是Random和SecureRandom之间的区别。 因此,看起来答案是:就安全性而言,它并不重要。

Spring AOP:如何获取建议方法的注释

我想用Spring / AOP和注释实现声明性安全性。 正如您在下一个代码示例中所看到的,我使用了限制注释和参数“allowedRoles”来定义允许执行建议方法的人员。 @Restricted(allowedRoles=”jira-administrators”) public void setPassword(…) throws UserMgmtException { // set password code … } 现在,问题是在我的建议中我无法访问已定义的注释: public Object checkPermission(ProceedingJoinPoint pjp) throws Throwable { Signature signature = pjp.getSignature(); System.out.println(“Allowed:” + rolesAllowedForJoinPoint(pjp)); … } private Restricted rolesAllowedForJoinPoint(ProceedingJoinPoint thisJoinPoint) { MethodSignature methodSignature = (MethodSignature) thisJoinPoint.getSignature(); Method targetMethod = methodSignature.getMethod(); return targetMethod.getAnnotation(Restricted.class); } 上面的方法总是返回null(根本没有找到注释)。 有一个简单的解决方案吗? 我读了一些关于使用AspectJ代理的内容,但我不想使用这个代理。

将SSL证书添加到JRE以访问HTTPS站点

语境: 所以我试图从我的Java代码访问HTTPS站点,但由于我的localhost和服务器之间存在SSL握手问题,我无法使用。 这个问题的原因似乎是我尝试访问的URL没有从授权CA颁发的有效证书。 因此,经过一些研究,我将尝试将有问题的SSL证书导入我的JRE,这样就可以validation它。 题: 使用keytool导入证书的此命令的mac等价物是什么: keytool -import -alias mycertificate -keystore ..\lib\security\cacerts -file c:\mycert.cer 参考: [Solved] javax.net.ssl.sslhandshakeexception 非常感谢任何帮助或帮助,谢谢

SecureRandom安全的Java种子

这段代码安全吗? SecureRandom randomizer = new SecureRandom(String.valueOf(new Date().getTime()).getBytes()); 这是实例安全随机种子的正确方法吗?

使用JRE 7u45运行applet时出现Permissions上的警告

我刚刚将JRE升级到7u45,我的applet在启动时收到一条警告消息,说“此应用程序将在未来的Java安全更新中被阻止,因为JAR文件清单不包含Permissions属性。” 然后我将以下两个属性添加到我的applet Jar文件的清单中(自签名): Permissions: all-permissions Codebase: * 但是警告信息并没有消失。 我怀疑自己错过了其他一些东西,但经过数小时的研究后却无法找到它们。 其他人都知道解决方案吗? 更新 使用有效证书签名的受信任的applet也无法运行。 黄色警告消息未显示,但显示另一个错误对话框,说明安全设置阻止了小程序,而在Java控制面板中更改安全级别或其他内容则没有帮助。