Tag: 安全

签署applet并将其部署在Intranet中

我写了一个在我们的内联网中使用的Web应用程序。 我也写了一个小的Java Applet来集成我们的Windows桌面(打开应用程序和文件)。 当然,每当我访问我的Web应用程序时,我都会收到安全警告。 我已经阅读了stackoverflow应该是可能的,签署我的applet并将证书推广到我的所有客户端(Windows XP和Windows 7)以摆脱安全警告。 有没有教程如何做到这一点? 我可以不购买昂贵的证书吗,因为我只在我的内联网上使用这个应用程序? 感谢所有信息和最好的问候!

处理最近的应用程序点击和主页按下android

我正在为孩子们制作一个应用程序,一旦你进入应用程序,你就无法退出而没有我在菜单中要求的密码。 现在我想如果在应用内部我按下应用程序中的主页按钮它应该保持相同的活动。 我搜索了很多,但到处都是解决方案是在清单中添加filter,但这些对我来说效果不佳。 我希望我的活动在应用程序退出时从启动器中删除,并再次询问是否启动应用程序。 对于同一个应用程序,如果我按最近的应用程序按钮,其中一个被孩子点击也应用程序应该在相同的活动或如果有任何方法来阻止最近的应用程序按钮。 我试过这个

从ECPrivateKey生成ECPublicKey

我正在尝试使用私钥和已知曲线生成公钥。 以下是我的代码: // Generate Keys ECGenParameterSpec ecGenSpec = new ECGenParameterSpec(“secp256r1”); KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(“ECDSA”, “BC”); keyPairGenerator.initialize(ecGenSpec, new SecureRandom()); java.security.KeyPair pair = keyPairGenerator.generateKeyPair(); ECPrivateKey privateKey = (ECPrivateKey) pair.getPrivate(); ECPublicKey publicKeyExpected = (ECPublicKey) pair.getPublic(); // Expected public key System.out.print(“Expected Public Key: ” + BaseEncoding.base64Url().encode(publicKeyExpected.getEncoded())); // Generate public key from private key X9ECParameters ecp = SECNamedCurves.getByName(“secp256r1”); ECDomainParameters domainParams […]

编写安全的RMI服务器 – 客户端应用程序

我正在编写一个服务器客户端应用程序,通过互联网进行通信,我有几个关于安全性的问题和疑虑。 我做了一些研究,发现这里的一些post很有用,但我想了解更多信息。 我读到的一些相关问题是: 通过RMI安全validation客户端 java rmi身份validation和安全性。 exportObject使它公开? java rmi中的通信安全吗? 我有3个部分需要考虑: 客户端和服务器之间交换的信息。 客户端身份validation。 利用正在运行的RMI服务器(黑客等)。 我知道的: RMI over SSL。 使用SSL套接字而不是默认套接字将加密客户端和服务器之间传递的所有信息。 这包括对象交换和方法调用。 在建立RMI连接之前使用SSL上的用户名/密码组合进行身份validation。 根据我的理解,应该有一种在RMI连接内部进行身份validation的方法,但它被拒绝了。 不太确定这里可以或需要做什么。 我知道你不能只编写自己的客户端并要求连接到服务器,因为你需要一个ObjectID和远程接口。 但是,是否无法对您需要的类\接口进行反编译,因为无论如何它们都是在RMI中发送的? 我在研究时也看到了这个Youtubevideo[ http://www.youtube.com/watch?v=otjllNaBxiw]它让我担心它有多容易,虽然我不知道服务器是否设置不正确。 总而言之,我是否需要通过互联网在RMI中考虑其他安全问题? 我错过了一个我需要看的解决方案吗? 我已经知道错了吗?

Java EE 6编程安全性,glassfish和JDBC领域

我正在探索基于我的glassfish服务器的jdbc领域的纯Java EE方式来执行编程安全性,特别是登录用户。 基本上,在我的登录servlet中,我正在做 String username = request.getParameter(“username”); String password = request.getParameter(“password”); try { request.login(username, password); …. 如果没有在我的web.xml中执行任何操作,则使用默认域(文件)。 我不想那样,我想使用名为jdbcsecurerealm的jdbcRealm。 所以我将以下内容添加到我的web.xml中 FORM jdbcsecurerealm 请注意,我没有添加任何form-login-config来定义form-login-page和form-error-page。 然后,如果我定义安全约束,如 Admin Pages /admin/* administrator 嗯……它有效! request.login检查我的jdbcRealm,如果我尝试访问安全页面而没有登录,那么我得到一个不错的403。 但似乎我混合了声明性安全性和程序化安全性,因为我觉得我不应该在web.xml中声明任何内容,而是使用request.isUserInRole。 问题 : 我是否遇到了glassfish特定的行为,或者是否允许使用编程安全性(request.login)和web.xml中定义的jdbc域而不使用form-login-config? 更新我刚刚看到有可能在glassfish-application.xml中指定一个领域,为了指定领域,它是建立一个耳朵而不是战争的更好方法吗?

必须授予applet写临时文件的权限?

我们正在开发一个applet,需要它能够在用户的临时文件目录中读/写文件(例如C:\ Documents and Settings \ USERNAME \ Local Settings \ Temp)。 小程序已签名,用户在applet启动时单击“允许”选项,并且Java控制面板已启用“允许用户授予对已签名内容的权限”和“允许用户向不受信任的权限授予内容权限”。 但是,在启动时,我们得到一个SecurityException: java.lang.SecurityException: Unable to create temporary file at java.io.File.checkAndCreate(Unknown Source) at java.io.File.createTempFile(Unknown Source) at java.io.File.createTempFile(Unknown Source) at com.jniwrapper.util.AppletHelper.b(SourceFile:104) at com.jniwrapper.util.AppletHelper.a(SourceFile:79) at com.jniwrapper.util.AppletHelper.b(SourceFile:50) at com.jniwrapper.util.AppletHelper.init(SourceFile:122) at com.xYinit(Y.java:31) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Exception: java.lang.SecurityException: Unable to create temporary file 如果我们编辑java.policy文件以授予所有内容,那么applet工作正常,但这显然是不安全的。 我们必须授予哪些最小权限才能允许applet在用户的临时文件目录中读/写/创建文件?

Java – 如何检测智能卡热插拔

我在java中动态加载pkcs11安全提供程序,只要在运行应用程序之前插入了智能卡读卡器,它就可以正常工作。 有谁能告诉我如何在应用程序运行时检测智能卡热插拔? 其实我在java中需要像pcsc_scan这样的东西。 环境是Ubuntu 9.10 with java 1.6.0_20。 提前致谢

保护Web-API访问

我有一个简单的Web-API可通过HTTP访问,其中一些相应的移动应用程序可以读取该数据。 现在有人反编译了一个应用程序/嗅探了HTTP流量,得到了我的Web API的URL并构建了自己的客户端,就像我的一样。 如何仅为我自己的客户保护对API的访问? 即使想到有人反编译我的应用程序。 服务器和客户端代码更改是一个选项!

像Spring Security for Java EE这样的框架?

Spring Security提供了许多强大的安全机制,但它不适合Java EE(EJB)环境。 一个问题是Spring Security将SecurityContext存储在不适合群集的ThreadLocal对象中。 Spring Security依赖于Spring核心的服务(例如AOP),如果EJB容器管理对象,这些服务是不可用的。 Spring Security需要Spring核心来连接自己,因为Java EE已经有了dependency injection机制,所以我想避免这种情况。 是否有为Java EE量身定制的安全框架? 我想拥有ACL或更灵活的角色机制。

通过使用reflection在垃圾回收之前擦除内容,安全地使用String作为密码

使用reflection来擦除String是否使用String作为使用char[]进行密码安全? 从安全方面来说,通常认为使用char[]存储/传递密码是最佳做法,因为可以在代码中尽快将其内容清零,这可能在垃圾收集清理它和内存之前显着重用(擦除所有跟踪),限制内存攻击的时间窗口。 但是, char[]并不像String那么方便,所以如果需要的话可以“擦除”一个String ,这样就很方便了,这样就可以使String像char[]一样安全。 下面是一个使用reflection来清除String字段的方法。 这个方法是否“OK”,它是否实现了使String像char[]一样安全的目标? public static void scrub(String str) throws NoSuchFieldException, IllegalAccessException { Field valueField = String.class.getDeclaredField(“value”); Field offsetField = String.class.getDeclaredField(“offset”); Field countField = String.class.getDeclaredField(“count”); Field hashField = String.class.getDeclaredField(“hash”); valueField.setAccessible(true); offsetField.setAccessible(true); countField.setAccessible(true); hashField.setAccessible(true); char[] value = (char[]) valueField.get(str); // overwrite the relevant array contents with null chars Arrays.fill(value, offsetField.getInt(str), countField.getInt(str), ‘\0’); countField.set(str, […]