网络安全

1. 怎么知道连接是恶意的呢?可能是正常连接?

  1. 验证码(最简单有效的防护),采用点触验证,滑动验证或第三方验证码服务,普通验证码很容易被破解
  2. 频率,限制同设备,同IP等发送次数,单点时间范围可请求时长
  3. 归属地,检测IP所在地是否与手机号归属地匹配;IP所在地是否是为常在地
  4. 可疑用户,对于可疑用户要求其主动发短信(或其他主动行为)来验证身份
  5. 黑名单,对于黑名单用户,限制其操作,API接口直接返回success,1可以避免浪费资源,2混淆黑户判断
  6. 签名,API接口启用签名策略,签名可以保障请求URL的完整安全,签名匹配再继续下一步操作
  7. token,对于重要的API接口,生成token值,做验证
  8. https,启用https,https 需要秘钥交换,可以在一定程度上鉴别是否伪造IP
  9. 代码混淆,发布前端代码混淆过的包
  10. 风控,大量肉鸡来袭时只能受着,同样攻击者也会暴露意图,分析意图提取算法,分析判断是否为恶意 如果是则断掉;异常账号及时锁定;或从产品角度做出调整,及时止损。
  11. 数据安全,数据安全方面做策略,攻击者得不到有效数据,提高攻击者成本
  12. 恶意IP库,https://threatbook.cn/,过滤恶意IP

tips:

  • 鉴别IP真伪(自己识别代理IP和机房IP成本略高,可以考虑第三方saas服务。由肉鸡发起的请求没辙,只能想其他方法)
  • 手机号真伪(做空号检测,同样丢给供应商来处理,达不到100%准确率,效率感人,并且不是实时的,可以考虑选择有防攻击的运营商)
  • 安全问题是长期的和攻击者斗智斗勇的问题,没有一劳永逸的解决方案,不断交锋,不断成长

2. 跨站脚本攻击XSS

XSS攻击是什么

  • XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

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漏洞,导致大量用户自动关注某个微博号并自动转发某条微博。具体各位可以自行百度。

攻击分类举例

(1)反射型XSS

又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的链接(即每次攻击需要用户的点击)。

简单例子

正常发送消息:http://www.test.com/message.php?send=Hello,World!

接收者将会接收信息并显示Hello,Word

非正常发送消息:http://www.test.com/message.php?send=<script>alert(‘foolish!’)</script>!

接收者接收消息显示的时候将会弹出警告窗口

(2)持久型XSS

又称为持久型跨站点脚本,它一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久的XSS相比非持久性XSS攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。谷歌的orkut曾经就遭受到XSS。

简单例子:

从名字就可了解到存储型XSS攻击就是将攻击代码存入数据库中,然后客户端打开时就执行这些攻击代码。例如留言板

留言板表单中的表单域:<input type=“text” name=“content” value=“这里是用户填写的数据”>

**正常操作:**用户是提交相应留言信息;将数据存储到数据库;其他用户访问留言板,应用去数据并显示。

**非正常操作:**攻击者在value填写<script>alert(‘foolish!’)</script>【或者html其他标签(破坏样式。。。)、一段攻击型代码】;将数据存储到数据库中;其他用户取出数据显示的时候,将会执行这些攻击性代码

(3)DOM-based XSS

基于DOM的XSS,通过对具体DOM代码进行分析,根据实际情况构造dom节点进行XSS跨站脚本攻击。

注:domxss取决于输出位置,并不取决于输出环境,因此domxss既有可能是反射型的,也有可能是存储型的。dom-based与非dom-based,反射和存储是两个不同的分类标准。

防范

记住一句至理名言——“所有用户输入都是不可信的。”(注意: 攻击代码不一定在中)

使用XSS Filter

  • 输入过滤,对用户提交的数据进行有效性验证,仅接受指定长度范围内并符合我们期望格式的的内容提交,阻止或者忽略除此外的其他任何数据。
  • 输出转义,当需要将一个字符串输出到Web网页时,同时又不确定这个字符串中是否包括XSS特殊字符,为了确保输出内容的完整性和正确性,输出HTML属性时可以使用HTML转义编码(HTMLEncode)进行处理,输出到

书籍推荐