java代码窃取 java代码检查
让Java代码免受bug困扰?
Java编程语言的人气自然无需质疑,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能。不过在编写代码时,bug永远是困扰每一位从业者的头号难题。在今天的文章中,java课程将分享五贡最佳实践,希望帮助大家更为轻松地减少Java开发中的bug数量。
创新互联公司主要从事网站制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务古蔺,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
原则一:不要依赖初始化
在Java中,开发者常常依赖构造函数进行对象初始化。不过这其实是一种常见误区。我们完全可以在无需调用构造函数的情况下,通过多种方式实现对象分配。
下面来看几种常用方式:
? 大家可以将所有变量声明为私有。要访问该类外的对象,大家可使用GET与SET方法。
? 对每个对象,编写一个新的私有boolean变量并对其进行初始化。
? 编写一个非构造函数类,其将确保每个对象会在接受调用之前进行初始化。
原则二:保护类、方法与变量
在代码当中,类、方法与变量分为私有与公共两类。私有类无法轻松进行访问,这使其成为代码中的高安全性点。不过公共方法与变量则易于方法,也因此常常成为攻击突破口。因此,请尽可能限制其范围。
请记住,只在必要时开放类、方法与变量。
原则三:永远对范围进行预定义
大多数开发者完全依赖于软件包自身的范围设定,事实上我们应当坚持对代码范围进行预定义。很多类本身并非完全封闭,这意味着攻击者能够对其施以攻击。黑客可以利用单一漏洞插入自己的类,进而从代码中提取敏感信息。JVM在默认情况下即不会封闭,不过允许大家在该软件包内进行类封闭。
原则四:御饥尺避免使用内部类
一般来讲,开发者会在同一软件包内其它类需要时使用内部类。这些内部类通常可供同一软件包肢中内全部类进行访问,由此可能引发的问题在预定义代码范围部镇高分已经提到。因此,同样请仅在必要时使用内部类。
原则五:确保类不可克隆
Java提供一项功能,用于在需要时对自有类进行克隆。然而这项功能往往被黑客所利用,其能够使用java.lang.Cloneable从代码中复制代码实例并窃取必要信息。
一加手机怎么看哪个软件窃取支付信息
就一加手机支付漏洞讨论在线支付中的安全风险
FreeBuf 官方
2018-02-12 15:00
关注
背景介绍
近期,Fidus团队的研究人员在OnePlus(一加手机)论坛上发现了一个非常有意思的帖子。在这个帖子中,很多论坛用户表示他们在2017年11月份曾在OnePlus官网上进行过信用卡消费,而随后信用卡欺诈事件便发生在了这些用户的身上,所以他们才在论坛中发帖询问社区中是否有其他用户遇到了同样的问题(剧透:很多用户都遇到了这个问题)。
值得一提的是,近期OnePlus使用了Magento电子商务平台,而这个常见的平台也是信用卡攻击事件经常发生的地方。
但是,这些发现并不能证明OnePlus发生了数据泄露。因此,我们接下来一起看一看OnePlus当前所采用的支付流程以及系统结构,并分析一下为何用户的信用卡信息会到攻击者的手上。
事件分析-为何会发生这种事情?
我们对OnePlus网站的支付流程进行了一遍完整的检查,有趣的是,网站的支付页面所请求的客户支付卡数据会直接存储在网站中,这也就意味着用户所输入的全部支付信息都可以被攻击者直接拦截。当支付表单提交之后,支付信息将会被发送到第三方提供商进行处理,但是在数据被加密之前,攻击者可以通过在窗口中嵌入恶意代码来窃取信用卡数据。
OnePlus则表示,他们不负责处理任何的支付卡信息,支付交易的处理是由CyberSource处理的,但是支付表单却仍然托管在OnePlus的基础设施中。如果攻击者拥有该页面的读写权限,那么他们就能够向页面中注入Java代码并尝试从客户端的支付表格中窃取键入的数据。
剖析支付流程
对于Magento电子商务平台来说,信用搜局卡欺诈已经是“家常便饭“了,早在2015年,Sucuri就已经发文讨论过这个问题了【文章链接】。
目前来说,攻击者主要有两种从电子商务平台中窃取信用卡数据的方法。第一种,就是利用Java代码直接从客户端窃取。这种方法需要在Web页面中托管恶意Java代码,而恶意代码将会让客户设备在后台悄悄地给攻击者控制的服务器发送伪造请求。这样一来,攻击者就可以利用伪造的请求来发送用户所有的信用卡数据了。我们对OnePlus的结算页面源代码进行了分析,但是并没有发现任何的恶意Java代码,不过也有可能是攻击者在完成攻击之后将恶意代码移除了。
另一种方法也是攻击者常用的一种方法,根据Sucuri所发的文章,在实现这种攻击时,攻击者不仅需要修改app/code/core/Mage/Payment/Model/Method/Cc.php文件,而且还需码旅要使用Shell访问后台服务器。
Cc.php文件负责在电子商务网站中存储支付卡数据,其实无论支付卡数据是否成功存储,服务器都会调用这个文件。因此,攻击者就可以在这个文件中注入恶意代码,并远程窃取信用卡信息。由于整个攻击过程发生在Cc.php文件中的prepareSave()函数中,所以此时的信用卡数据还没有被加密。恶意代码样本如下所示:
下图显示的是攻击者窃取信用卡元数据的大致流程:
漏洞影响
目前为止,OnePlus论坛中已经有超过40名用户表示自己受到了信用卡欺诈攻击,而且也有很多Reddit用户同样在抱怨类似的问题。
除此之外,很多Twitter用户也开始讨论这种潜在的安全问题了。
攻击者如何利用这个漏洞?
1. 当用户点击了订单按钮之后,用户的浏览器会向OnePlus电子商务服务器发送请求;
2. OnePlus电子商务服务器会返回带有支付表单的HTML页面;
3. 客户在表单中输入自己的支付信息,然后点击提交按钮;
4. 支付数据直接从用户的浏览器发送到了CyberSource
1. 当用户点击了订单按钮之后,用户的浏览器会向OnePlus电子商务服务器发送请求;
2. OnePlus电子商务服务器会返回带有支付表单的HTML页面;
3. 客户在表单中输入自己的支付信息,然后点击提交按钮;
4. 支付数据直接从用户的浏览器发送到了CyberSource
当OnePlus电子商务服务器给用户返回带有支付迟漏凳表单的HTML页面之后,注入在其中的Java代码将会把用户所输入的全部内容(信用卡数据)发送给攻击者。
用户如何保护自己的安全?
防止信用卡欺诈最保险的方法就是使用离线支付处理器,或者是整合了iFrame的支付结算页面。除此之外,很多第三方支付平添也提供了PCI兼容沙盒来更加安全地处理支付卡信息。
虽然使用整合了iFrame的支付页面是一种更加安全的选项,但这种方法仍然无法抵御基于Java的攻击。
注:我们强烈建议大家定期对自己的电子商务网站进行安全渗透测试以避免任何的安全风险。
事件更新#1
OnePlus引入了CyberSource Magento插件来尝试解决这个问题:
CyberSource通过研究后发现,用户所提交的所有支付数据都直接在客户端浏览器中完成了操作,而且并没有触及到电子商务基础设施。
事件更新#2
OnePlus已经在官网上发布了一份声明,并给受此事件影响的用户发送了通知邮件,以告知用户数据泄露事件的大致情况(总共大约有4万名用户的支付信息被窃取)。
java程序能不公开源代码吗
Java程序的源代码很容易被别人偷看,只要有一个反编译器,任何人都可以分析别人的代码。本文讨论如何在不修改原有程序的情况下,通过加密技术保护源代码。
一、为什么要加密?
对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发配答布它就可以。遗憾的余卖首是,Java程序的源代码很容易被别人偷看。竖数只要有一个反编译器,任何人都可以分析别人的代码。Java的灵活性使得源代码很容易被窃取,但与此同时,它也使通过加密保护代码变得相对容易,我们唯一需要了解的就是Java的ClassLoader对象。当然,在加密过程中,有关Java Cryptography Extension(JCE)的知识也是必不可少的。
有几种技术可以“模糊”Java类文件,使得反编译器处理类文件的效果大打折扣。然而,修改反编译器使之能够处理这些经过模糊处理的类文件并不是什么难事,所以不能简单地依赖模糊技术来保证源代码的安全。
名称栏目:java代码窃取 java代码检查
标题来源:http://scyanting.com/article/ddpjhgo.html