在电商项目中最重要的就是安全问题,这里就几点我来进行一个简单的叙述:
(这里以我的一个项目实例进行讲述,如果有需要源码,大家可以到码云上进行下载)
1. Form表单严格过滤:
Int goods_numbe--->强制数据类型--->严格的过滤策略
2. Sql注入:
就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
3. Xss攻击:
什么是xss攻击: XSS又叫跨站脚本攻击(Cross Site Scripting),我不会告诉他原本是叫CSS的,但是为了不和我们所用的层叠样式表(Cascading Style Sheets)CSS搞混。CSS(跨站脚本攻击),CSS(层叠样式表)傻傻分不清。所以就叫XSS咯。
相信以上的解释也不难理解,但为了再具体些,这里举一个简单的例子,就是留言板。我们知道留言板通常的任务就是把用户留言的内容展示出来。正常情况下,用户的留言都是正常的语言文字,留言板显示的内容也就没毛病。然而这个时候如果有人不按套路出牌,在留言内容中丢进去一行
<script>alert("hey!you are attacked")</script>
那么留言板界面的网页代码就会变成形如以下:
<html>
<head>
<title>留言板</title>
</head>
<body>
<div id="board">
<script>alert("hey!you are attacked")</script>
</div>
</body>
</html>
那么这个时候问题就来了,当浏览器解析到用户输入的代码那一行时会发生什么呢?答案很显然,浏览器并不知道这些代码改变了原本程序的意图,会照做弹出一个信息框.
xss攻击的危害: 其实归根结底,XSS的攻击方式就是想办法“教唆”用户的浏览器去执行一些这个网页中原本不存在的前端代码。
可问题在于尽管一个信息框突然弹出来并不怎么友好,但也不至于会造成什么真实伤害啊。的确如此,但要说明的是,这里拿信息框说事仅仅是为了举个栗子,真正的黑客攻击在XSS中除非恶作剧,不然是不会在恶意植入代码中写上alert(“say something”)的。
在真正的应用中,XSS攻击可以干的事情还有很多,这里举两个例子。
- 窃取网页浏览中的cookie值
在网页浏览中我们常常涉及到用户登录,登录完毕之后服务端会返回一个cookie值。这个cookie值相当于一个令牌,拿着这张令牌就等同于证明了你是某个用户。
如果你的cookie值被窃取,那么攻击者很可能能够直接利用你的这张令牌不用密码就登录你的账户。如果想要通过script脚本获得当前页面的cookie值,通常会用到document.cookie。
试想下如果像空间说说中能够写入xss攻击语句,那岂不是看了你说说的人的号你都可以登录(不过某些厂商的cookie有其他验证措施如:Http-Only保证同一cookie不能被滥用)
- 劫持流量实现恶意跳转
这个很简单,就是在网页中想办法插入一句像这样的语句:
<script>window.location.href="http://www.baidu.com";</script>
那么所访问的网站就会被跳转到百度的首页。
早在2011年新浪就曾爆出过严重的xss漏洞,导致大量用户自动关注某个微博号并自动转发某条微博。具体各位可以自行百度.
以下列举几个常用的可插入代码的标签。
<a οnmοusemοve=’do something here’>
<div οnmοuseοver=‘do something here’>
xss攻击的几大类型:
①存储型XSS,存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本。存储型XSS被服务器端接收并存储,当用户访问该网页时,这段XSS代码被读出来响应给浏览器。
<script>alert("hey!you are attacked")</script>
当有人在留言内容中插入恶意脚本时,由于服务器要像每一个访客展示之前的留言内容,所以后面的访客自然会接收到之前留言中的恶意脚本而不幸躺枪。
②反射型XSS,反射型XSS也被称为非持久性XSS,是现在最容易出现的一种XSS漏洞。XSS的Payload一般是写在URL中,之后设法让被害者点击这个链接。很简单,试想下像http://qq.com,http://baidu.com这样的域名下出现非持久型XSS,那么在发送钓鱼链接时就可以通过http://qq.com等域名进行跳转,一般人一看到http://qq.com之类的域名警惕性会下降,也就更容易上当了。
③DOM型XSS,DOM的全称为Document Object Model,即文档对象模型。基于DOM型的XSS是不需要与服务器交互的,它只发生在客户端处理数据阶段。简单理解DOM XSS就是出现在javascript代码中的xss漏洞。
防范手段: 都说知己知彼方能百战不殆,知道了xss攻击的原理那么防御的方法也就显而易见了。
- 首先是过滤。对诸如<script>、<img>、<a>等标签进行过滤。
- 其次是编码。像一些常见的符号,如<>在输入的时候要对其进行转换编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。
- 最后是限制。通过以上的案例我们不难发现xss攻击要能达成往往需要较长的字符串,因此对于一些可以预期的输入可以通过限制长度强制截断来进行防御。
4. Csrf:
跨站请求伪造--->表单令牌
5. 大数据问题:
分段--->刷新缓存区
6. 优化问题
前端优化--->Js混编 --->不讲js代码单独做文件,而是直接写到html中
减少http请求 ,从而减少服务器压力--->页面静态化--->ob
后端优化--->Mysq选用合适的引擎--->建表--->对表字段的合适选择 not nul--->Mysql 语句的优化--->连表查询 用单表代替连表(前台)--->索引--->Mysql 读写分离 myql log-bin --->数据一致性--->缓存--->Memcache redis