Tag: 安全

套接字连接到未签名Java小程序的原始服务器

我到处都读过,不允许未签名的Java小程序与任何服务器建立网络连接,而是发起小程序的网络连接。 这对我的应用程序来说没问题,因为我的applet只需要与服务器通信。 但是,当我编写测试applet以尝试打开套接字与我的开发机器上的进程通信时,它会抛出以下exception: 建立套接字连接出错: java.security.AccessControlException: 访问被拒绝(java.net.SocketPermission 127.0.0.1:11000连接,解析) 导致exception的代码: private void sendMsg(String msg) { Socket s = null; try { s = new Socket(“localhost”, 11000); } catch (Exception e) { System.err.println(“Error establishing socket connection:”); e.printStackTrace(); return; } try { OutputStream out = s.getOutputStream(); out.write(msg.getBytes()); out.flush(); s.shutdownOutput(); s.close(); } catch (Exception e) { System.err.println(“Error in writing to […]

仅加密图像文件的内容而不加密整个文件

我正在创建一个APP,只需要记录图像的内容。 我需要在转换后文件仍然是图像,但显示的图像不显示为原始图像。 例如,我将加密的图像发送给其他用户,这个图像将能够显示和图像(但不是原始图像),但原始图像在该文件中被加密。 使用以下algorythm我加密了整个文件,由于标头也被加密,因此无法将其作为图像打开。 我正在使用这个algorythm,但我不知道如何只加密数据或如何在java / android中添加/修改图像的标题: public byte[] encrypt_image(Bitmap bm, String password_) { byte[] encryptedData = null; try{ ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); byte[] b = baos.toByteArray(); byte[] keyStart = password_.getBytes(); KeyGenerator kgen = KeyGenerator.getInstance(“AES”); SecureRandom sr = SecureRandom.getInstance(“SHA1PRNG”, “Crypto”); sr.setSeed(keyStart); kgen.init(128, sr); SecretKey skey = kgen.generateKey(); byte[] key = skey.getEncoded(); […]

Java’final’关键字是否真正提高了安全性?

虽然有很多理由在Java中使用’final’关键字 ,但我一遍又一遍地听到的一个原因是它使您的代码更安全。 虽然这在这个简单的案例中似乎有意义: public class Password { public final String passwordHash; … } 使用final关键字,您可以预期没有恶意代码可以更改变量passwordHash。 但是, 使用reflection可以在passwordHash字段上更改最终修饰符。 “最终”提供任何真正的安全性,还是只是安慰剂? 编辑:有一些非常有趣的讨论,我希望我能接受不止一个答案。 谢谢各位的意见。

如何在Android应用程序中保护秘密字符串?

在我的Android应用程序中,我使用Microsoft转换器,它需要两个字符串,clientId和clientSecret。 目前,我硬编码了这两个字符串。 由于我发现classes.dex可以转换为jar,然后.class文件也可以转换为.java文件,我认为硬编码那些合理的字符串并不是一件好事。 所以我的问题很简单:如何隐藏恶意人员的字符串? 谢谢

新手在JAAS认证; 使用URL栏中的令牌登录

我有一个有趣的项目要求,我们必须接受一个令牌作为GET参数,它将validation进入应用程序的用户。 这是为了允许受信任的第三方无缝地将用户发送到我们的站点,而无需再次登录。 例如: http : //www.myproj.com/appName/index.jsf?user_token = asdf123randomstuffaf12fsaasdf appName将是上下文根,user_token将是可以检查的标记。 令牌将被使用一次,然后被丢弃,并且它们在生成后几秒钟到期。 令牌部分并不是我真正想要的,它是与JAAS的集成。 在Spring Security中,我可以设置一个filter来拦截请求,从URL中提取令牌,并针对UserDetailsS​​ervice对用户进行身份validation。 遗憾的是,Spring Security在这个项目中无法解决各种问题,因此我们需要使用JAAS身份validation。 我不是要求代码,但我可以对需要编写的模块使用一些基本方向,以便继续我的研究。 感谢大家,

SecretKeyFactory.getInstance(“PBKDF2WithHmacSHA512”)抛出NoSuchAlgorithmException

经过一些研究和一些工作后,我终于能够对密码进行哈希密码现在有一个问题,我想我已经使用了SHA1方法,我想尝试使用SHA512因为我被告知它更好(更安全)所以以下是我的代码它有点到处都是,但我认为它是可理解的: public class Safety { //calling some parameters for possible later changes public static final String algorithm = “PBKDF2WithHmacSHA1”; public static final int saltbytesize = 24; public static final int hashbytesize = 24; public static final int iterations = 1000; public static final int iIndex = 0; public static final int sIndex = 1; public […]

JRE 1.7漏洞

今天,我们的企业架构师提到最近在JRE 1.7中发现了一个漏洞。 我发现了一篇JRE 1.7漏洞,建议禁用Java 。 我正在运行JDK 1.5和1.6(像许多组织一样,我们没有使用最新的技术),所以没有问题。 在家里,我正在使用Java SE 7u6进行开发。 我正在玩Grails,Spring Security,试图继续学习。 我已经在家庭开发机器上的所有浏览器中删除并禁用了Java Plug-in。 但是,有没有人知道我的家用开发机器是否因安装了JDK 7而仍然易受攻击? 我确实在US-CERT上发现了这篇文章,声明了漏洞通知: Oracle Java JRE 1.7 Expression.execute()无法限制对特权代码的访问 。 听起来只要浏览器无法运行Applet,我应该没问题(它应该禁用Java Plug-in)。 但是,Java Web Start / JNLP呢? 可以调用吗? 除了小应用程序之外,这是我能想到的唯一可能引起关注的问题。 只是想知道我是否需要完成卸载Java SE 7并退回到JDK6的工作。 在使用JRE 1.7了解此安全问题后,其他人做了什么?

Oracle是否在JRE 7更新51上杀死内部网小程序?

请参阅7u51(2014年1月)中RIA的新安全要求 。 RIA必须包含两件事: 来自受信任机构的代码签名。 无论其权限属性如何,都必须对Applet和Web Start应用程序的所有代码进行签名。 清单属性 Permissions – 在7u25中引入,从7u51开始需要。 指示RIA是否应在沙箱中运行或是否需要完全权限。 Codebase – 在7u25中引入,在7u51中引入可选/鼓励。 指向托管代码的已知位置(例如intranet.example.com)。 关于stackoverflow的另一篇文章,我有同样的担心,证书对内网使用来说是昂贵的。 签署applet并将其部署在Intranet中 。 我打算开始一个新的内部网项目,我应该放弃对applet的考虑吗? 我的所有内网用户都没有能力连接外网,他们处于封闭网络,我高度怀疑需要签名applet ……?

使用SHA-512和salt来散列MD5哈希密码?

我正在使用MD5(无盐)散列用户密码的系统。 我想使用SHA-512和盐更安全地存储密码。 虽然这很容易实现以后的密码,但我还想改进现有的MD5哈希密码,最好不要强迫所有用户更改密码。 我的想法是只使用SHA-512和适当的盐来散列现有的MD5哈希。 然后,我可以在数据库中设置一些标志,指示哪些密码是从纯文本中散列出来的,哪些是从MD5散列中散列出来的。 或者我可以在validation用户时尝试这两种方法。 或者甚至只使用MD5和SHA-512 / salt散列新密码,这样它们就可以像旧密码一样处理。 以编程方式,我认为这不会是一个问题,但我不知道加密/散列是否足以通过将SHA-512 / salt哈希值应用于任何方式来破坏哈希的质量。已经MD5哈希的密码。 我的第一直觉是,如果有的话,它会更强大,一个非常轻的按键伸展。 我的第二直觉是我真的不知道我在说什么,所以我最好得到建议。 有什么想法吗?

我可以通过配置java.policy文件拒绝访问jvm类吗?

我想在我的jdk6\jre\lib\security\java.policy文件中添加一个禁止来创建一些被appengine列入黑名单的类。 例如,当应用程序尝试实例化javax.naming.NamingException时,我希望我的本地jvm抛出exception。 有可能的? 我会在这里解释我的具体问题。 Google提供的服务(GAE-google应用引擎)对可以使用的类有一些限制。 例如,不实例化javax.naming包中的JNDI类。 他们还提供了一个测试服务器,可以用来在我的机器上测试这个应用程序,但是这个服务器允许这样的类,并且可以扩展代码。 您发现只有在将应用程序上传到谷歌后才使用黑名单。 我在想是否无法在开发jvm上执行此类黑名单强制执行。 另外我认为这很容易,他们可能已经提供了这样的政策文件。