用户资金被盗当当网紧急冻结所有账号余额
看点
3月20日,当当网(微博)宣布,鉴于当当网出现个别消费者账户被盗、余额被盗用情况,为避免用户遭受损失,紧急决定于3月19日至21日冻结该网所有账户的余额及礼品卡。数据显示,当当网累计用户数于20xx年突破2000万,截至20xx年底,其网站活跃用户数量为660万。上海大邦律师事务所游云庭律师向记者表示,如果用户信息确定是由电商网站泄露,商家应承担赔偿责任。互联网泄密隐患,仍在考验着中国的互联网公司。
据《每日经济新闻》报道,当当网3月20日宣布,鉴于当当网出现个别消费者账户被盗、余额被盗用情况,为避免用户遭受损失,紧急决定于3月19日至21日冻结该网所有账户的余额及礼品卡。
数据显示,当当网累计用户数于20xx年突破2000万,截至20xx年底,其网站活跃用户数量为660万。上海大邦律师事务所游云庭律师向记者表示,如果用户信息确定是由电商网站泄露,商家应承担赔偿责任。
泄密疑云
安小姐所服务的公益组织,经常为边远山区的儿童筹措书籍捐赠费用。今年3月初,为便于书籍管理,她一次性购买了60张当当网礼品卡,总额为1.2万元,并进行了激活。
湖南自考成考 WWW.HTXPX.COM GCXY
3月13日,安小姐意外发现自己的账户无法正常登录,她随即联系了当当网客服,并到注册邮箱检查,结果是:3月10日18时许,她的账户显示提交了一张订单,订购两台戴尔(微博)笔记本,共计8398元,收件人是广东深圳市一位石姓先生。
安小姐表示,自己并没有购买电脑,账号肯定是被别人盗取后进行了恶意消费。她马上找当当网进行投诉,由于货物尚在运输途中,因此最终得以追回。
然而,在安小姐向当当网寻求找回货款时遇到了麻烦:“当当网客服说,必须由我来承担运费,因为能够追回电脑,我已经很幸运了,否则要负全责。”
无独有偶。2月11日,当当网用户冯先生反映其账户被人篡改密码,并消费1172元的礼品卡。他当日进行投诉,当当网称已经报案,但一直没有收到反馈信息。
据安小姐称,当当网在用户进行大额消费时,没有任何验证程序。并且在众多用户投诉密码被盗后,仍坚持礼品卡的销售,在消费者账户安全保障方面存在严重漏洞。但这一说法并未得到当当网方面的证实。
当当网昨日发表声明称,受去年底CSDN(微博)互联网泄密事件影响,国内不少B2C网站也面临着用户数据泄露的风险。账户密码数据的丢失,给不法分子留下可乘之机。近日,当当网也遭遇个别消费者账户余额被盗的现象。
湖南自考成考 WWW.HTXPX.COM GCXY
已经报案
为避免用户遭受损失,当当网紧急决定于3月19日至21日冻结所有账户的余额及礼品卡,并呼吁消费者及时修改密码。与此同时,会对消费者账户被盗一事进行全面调查,对于账户冻结前因此而发生的损失,会在审核确认后分批对用户给予全额补偿。
据悉,当当网上商城系统平台已就此事向公安机关报案,并称对账户余额被盗用户的报案给予全力协助。事实上,早在去年12月,当当网官方就承认用户信息被盗,同时称网传的1200万用户信息被盗说法并不属实,“网络公布的信息数据只有极小部分属实,该部分数据是由于之前遭到网络黑客攻击被盗取。”当当网称。
然而,当当网并未就此对用户消费加强限制。记者注意到,在密码泄露事件后,用户仍可购买礼品卡进行账户充值,并在消费时不需进一步验证。当当网官网显示,其礼品卡每张有200元至1000元的5种额度选择,购买金额与礼品卡面值相同,用户可直接网购或电话购买,网站打出了“送亲友、送客户,团购更优惠”的广告语,与一般的商超购物卡无异。 互联网安全观察人士称,对于一些具有用户账户预付功能的网站,目前均存在一定的被盗风险。“目前黑客盗用用户余额的方式,主要是利用此前外泄的密码,进行大量匹配的程序登录,并查找有余额的账户进行消费。”他说。他同
湖南自考成考 WWW.HTXPX.COM GCXY
时指出,互联网公司具有很多种技术手段,可以对此进行控制,如在服务器端对同一IP地址的大量登录进行限制、异地登录锁定、付款短信密码提示等。□齐文婷
分享到:
欢迎发表评论我要评论
.corrTxt_01{border-top:1pxdashed#C8D8F2;margin-top:-1px;}
.corrTxt_01h3{font-weight:bold;padding:5px003px;line-height:25px;margin:0;}
.corrTxt_01ul{padding:0020px18px;}
.corrTxt_01ulli{font-size:14px;line-height:164.28%;}
湖南自考成考 WWW.HTXPX.COM GCXY
第二篇:当当网整理
当当网项目描述
(GWAP通用电子商务平台项目)
如何描述项目?
(a) 讲需求
(b) 讲架构
(c) 讲体会
(1) 需求
1) 电子商务的基本发展
B to B 企业—企业应用系统
当当网、支付宝 阿里巴巴
淘宝网 B to C 企业—消费者的应用系统 C to C 消费者—消费者的应用系统
B to G 企业—政府的应用系统
2)基本需求
A、功能性需求
a、门户:可以登录、注册、浏览商品、购物 b、后台管理:商家管理订单
业务流程:一般的用户可以浏览商品,要购买商品需要登
录,如果是首次登录则必须先注册一个当当网账号。
B、其它 安全和(性能)方面的需求
SSL安全协议最初由Netscape企业发展,现已成为
- 1 -
网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通信的全球化标准。 公钥是与私钥算法一起使用的密钥对的非秘密一半。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥)其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
- 2 -
SLL应用了非对称加密(内用了RSA公钥加密算法)
RSA公钥加密算法,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。
Java中的MD5加密算法
gwap项目做到SSL安全,在登陆注册的时候: public class MD5Utils { public static String md5(String str) { try {
MessageDigest md =
MessageDigest.getInstance("MD5");
byte[] b1 = md.digest(str.getBytes()); // !!! BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(b1); } catch (Exception e) { return null; } }
}
调用: MD5Utils.md5(“”));
(2) 架构
- 3 -
1) 应用层次结构
经典的基于MVC的JSP、Model、Struts2 架构方式
C 控制层 应用了Struts2核心控制组件。
V 表现层 服务器端:JSP和Struts标记库;
客户端:根据特定的需要应用了Ajax的异步方式。 M 没有分离出持久层,应用了Hibernate访问数据库。 问题:
? 应用Struts2的好处?
a、提供了一个基于MVC的控制流程的实现。
Struts2的流程是:
- 4 -
Struts2的核心工作流程大致分为以下几个步骤:
1)、客户端初始化一个指向Servlet容器的请求;
2)、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做
ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其它框架的集成很有帮助,如:SiteMesh Plugin)。
3)、FilterDispatcher被调用,FilterDispatcher询问
ActionMapper来决定这个请求是否需要调用某个Action;
4)、如果ActionMapper决定需要调用某个Action,
FilterDispatcher把请求的处理交给ActionProxy;
5)、ActionProxy通过Configuration Manager询问框架的配置文
件,找到需要调用的Action类;
6)、ActionProxy创建一个ActionInvocation的实例;
7)、ActionInvocation实例使用命名模式来调用,在调用Action的
过程前后,涉及到相关拦截器(intercepter)的调用;
8)、一旦Action执行完毕,ActionInvocation负责根据Struts.xml
中的配置来找到相应的返回结果。返回结果可能是另外一个Action链,一个JSP或者FreeMarker的路径。表示过程中可能使用Struts2框架的标签。
b、能够做到数据方式访问的一致性,在控制流程中,业务数据存在
于ValueStack中,通过标准的OGNL进行访问。(Action即是控制组件,也用来存储数据,但是这些数据最终存在于
- 5 -
ValueStack中,通过OGNL进行访问)
c、基于动态代理模式的Interceptor和Result方式。(通过代理模
式把Interceptor、Action、Result绑定在一起)
(可以在Action前面增加拦截器,不用改变Struts2的核心组件,
项目中增加了一个Interceptor,用来关闭Session。
public class SessionCloseInterceptor implements Interceptor { public void destroy() { } public void init() { }
public String intercept(ActionInvocation invocation) throws Exception {
}
在Struts.xml中,
<package name="base-package" extends="json-default"
abstract="true"> <interceptors> <interceptor name="closeSession" class="org.gwap.interceptor.SessionCloseInterceptor" /> HibernateUtils.closeSession(); return invocation.invoke(); } - 6 -
<interceptor-stack name="gwapStack"> <interceptor-ref name="closeSession" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="gwapStack" /> </package>
Result负责把Action里的数据通过ValueStack转换成不同的方式输出(转发,复位向)(json方式)。
表单验证方面:
只做了一个客户端验证,没有做服务器端验证。项目中用到了Ajax、JQuery框架。
Ajax (asynchronous javascript and xml)
在客户端的JS异步的访问服务器,返回的是xml,现在被JSON所取代。
Ajax异步访问服务器的步骤: <script type=”text/javascript”> function testAjax(){ var req=new XMLHttpRequest(); var url=document.getElementById(?address?).value; //打开连接 req.open(?get?,url,true); //设置回调方法
- 7 -
req.onreadystatechange=function(){ if(req.readyState==4){ var html=req.responseText; var d1=document.getElementById(?d1?); d1.innerHTML=html;
}
} } //发送请求 req.send(null);
</script>
用一句话简单的概括为:在客户端的JS异步的访问服务器,返回的是xml
? 什么地方用了Ajax的异步方式?
主页的地方用到了Ajax的异步方式
注册页面也用到了Ajax的异步方式
? 为什么要用Struts2标记?
项目中用了两种Struts2标记
(1)控制标记if else 、iterator,它和JSTL差不多,只是
Struts2标记对数据的访问全是OGNL。
(2)UI(表单)标记:Struts2标记的表单标记是基于theme(主
题),在项目中可以自定义主题,这样对UI可以很好的封
装,但是我在项目没有使用,把样式改成了theme=simple,
- 8 -
这样可以和ValueStack中的Action的数据同步。
有时为了方便也用了el表达式${emp.name}
Struts2标签库:<s:property value=”emp.name”>
? Struts2为什么可以支持el表达式?
用Wrapper机制改写了…方法。
2) 数据库的设计
数据库设计的不足?
我设计了两个表t_product和t_category 这两个表是多对多的关系(一对多的关系也存在这种问题),所以又设计出了一个二级关联表t_category_product表,但是这种设计无法实现Hibernate的分页显示,因为Hibernate不知都在什么地方分页,所以必须先把所有的数据取出来才能知道。解决这种问题就是不用二级关联表,在t_product中增加一个字段cat_value =”1,3,5”;
在主页中显示编辑推荐、热销图书、最新上架图书的时候可以在t_product表中加入闲的字段t_热销,t_推荐,t_最新上架,如果运行了一段时间,可以在不修改t_product表的前提下增加新的表。 数据库中用到的表:
一共8张表,分别为:
d_category;
private Integer id; private String name; private String description;
- 9 -
private Integer parentId; private List<Category> subCats; private int productNum;
d_category_product;
id
product_id
cat_id
d_product;
private Integer id; private String productName; private String description; private long addTime; private double fixedPrice; private double dangPrice; private String keywords; private Integer hasDeleted; private String productPic; private Set<Category> categorys; d_book;
private String author; private String publishing; private long publishTime; - 10 -
private String wordNumber; private String whichEdtion; private String totalPage; private Integer printTime; private String printNumber; private String isbn; private String authorSummary; private String catalogue;
d_item;
private Integer id; private Order order; private Integer productId; private String productName; private double dangPrice; private Integer productNum; private double amount;
d_order;
private Integer id; private Integer userId; private Integer status; private long orderTime; private String orderDesc; - 11 -
private double totalPrice; private Set<Item> items = new HashSet<Item>(); private Address receiveAddress; d_receive_address;
id user_id receive_name full_name postal_code mobie phone
d_user;
private Integer id; private String email; private String name; private String password; private Integer userIntegral; private boolean verify; private String verifyCode; private Integer lastLoginTime; private String lastLoginIp; 类:CartItem
- 12 -
private Product product; private int number; private boolean status;
(3) 体会
1) 数据库的设计:
a、
b、
c、
d、
e、
f、
加不加外键约束:不加能提高访问效率。如果前面有程序来维护数据的一致性,后台的数据库可以不加外键约束。 关联表的问题:有些地方加关联表的时候可以实现多对多,一对多的问题,但是分页会比较麻烦,如:t_category和t_product 关联表t_product和t_book用关联实现继承。 关联表t_product和t_hot用关联实现扩展 Hibernate延缓加载问题:(1)全部用了延缓加载OpenSessionInView,Session在显示result之后再关闭。(2)不用延缓加载join fetch 联合抓取。(3)join fetch 和分页的矛盾,显示商品目录,由于商品目录比较多,必须采用分页的形式,但是由于查阅必须要用joinfetch查询,表面上分页,但是实际上底层没有分页,hibernate把所有数据都取出来了。 Hibernate级联操作和关联关系维护的问题 Order Set<Item> items 这是业务的需要 - 13 -
Item Order order 这是性能的需要
cascade=”save-update”
inverse=”true”
g、 继承关系的映像方式
继承方式如何只取主表字段
select new Product(id,name,price)from Product h、
i、 通过公式实现子查询 一对多join fetch是重复问题,distinct
Hibernate3.2以后
j、 Struts2 Action的编程理念 根据输入(属性)算输出
(属性)
k、
l、 Struts2基本控制流程和体系结构问题。 Struts2编码问题(有一个bug)和国际化问题(资源文
件的级别)
m、 Struts2其它Result的应用
json?生成异步调用
stream—>生成验证码
m、 什么是拦截器?
在SpringAOP中用于在某个方法或者字段访问之前,进行拦截然后在之前或者之后加入某些操作。
在Webwork的文档中解释为-拦截器是动态拦截Action调用的对象。它提供了一种机制可以是开发者
- 14 -
可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。
项目中用于关闭Session与身份验证。
n、
o、 Struts2标记库如何看待theme的问题 JQuery和核心理念
JQuery对象、数据、方法、选择器
p、 Ajax 基本理念,以及在项目中的应用
优势:提高用户体验,不用整个页面刷新。
q、
r、 JQuery插件的使用,validation 在用户注销的时候把购物车的数据也存入到数据库
中,这样做Session的持久化
别改Session.setMaxInactiveInterval()这样做回事服务器端的压力太大了。
s、Http协议的安全问题
- 15 -