所有分类
  • 所有分类
  • 未分类

网站安全漏洞–大全

简介

本文介绍网站常见的一些安全漏洞。

常见的漏洞有:SQL 注入、越权操作、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、DDoS 攻击、JSON 劫持、暴力破解、HTTP 报头追踪漏洞、信息泄露、文件上传格式校验。

SQL 注入

简介

SQL 注入就是通过给 web 应用接口传入一些参数来拼凑SQL语句,使服务器执行恶意的sql命令。

实例

sql = “select * from users where name=” + name;

上面的 SQL 语句目的是通过用户输入的用户名查找用户信息,因为由于 SQL 语句是直接拼接的,也没有进行过滤,所以,当用户输入 ” or ‘1’=’1′ 时,这个语句的功能就是搜索 users 全表的记录。

select * from users where name=” or ‘1’=’1′;

防御方案

  1. 绑定变量
  2. 检查数据类型
  3. 使用过滤函数

越权操作

平行越权漏洞

只要一个账户即可控制全站用户数据。当然这些数据仅限于存在漏洞功能对应的数据。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判断。

案例分析:删除帖子时没有判断当前用户是否有权限删除该帖子,导致其他用户的帖子也被删掉了。

垂直越权操作漏洞

基于角色的权限管理,又称为“垂直权限管理”。不同角色的权限有高低之分。高权限角色访问低权限角色的资源往往是被允许的,而低权限角色访问高权限角色的资源往往是被拒绝的。如果低权限角色获得了高权限角色的能力,那么就发生了“越权访问”。

跨站脚本攻击(XSS)

简介

XSS(Cross Site Scripting)的含义:恶意攻击者通过某些输入点往Web页面里插入脚本代码,当用户浏览页面或执行某种操作时,就会触发嵌入的脚本代码,从而实现恶意攻击。

分类

1.存储型XSS(Stored XSS)

存入了数据库,再取出来时导致的xss。

输入

输出

2.反射型XSS(Reflected XSS)

案例:在网址url后输入xss代码,如<script>alert(1)</script>,然后访问时导致html页面加载这段代码即可达到弹框效果

3.DOM型XSS(DOM Based XSS)其实也是反射型的一种

严格来说该xss也属于反射型,本文的例子其实也是dom based,是指修改页面的dom对象模型,从而达成攻击。

防御方案

1.输出过滤

跨站请求伪造(CSRF)

简介

CSRF(Cross-site request forgery)跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

发生原因

网站是通过cookie来识别用户的,当用户成功进行身份验证之后浏览器就会得到一个标识其身份的cookie,只要不关闭浏览器或者退出登录,以后访问这个网站会带上这个cookie。

  • 1. 登录受信任网站A,并在本地生成Cookie。
  • 2. 如果在用户登录访问网站A的同时访问了网站B,访问者在网站A的数据就会被B使用用户cookie假冒更新。

案例

假如某网银转账操作是以GET请求来完成:

http://www.mybank.com/Transfer.php?toBankId=11&money=1000

网站B,它里面有一段HTML的代码如下:

<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

当我在网银cookie有效的情况下访问了网站B,那我的网银就莫名其妙的被转账了1000。。。

防御方案

  1. 二次验证
    1. 比如:对于转账、修改密码之类的敏感操作,不能仅通过cookie进行验证,要重新验证,比如:短信验证码、账号密码、人脸识别。
  2. 对请求的referer进行检测
  3. 添加随机token校验

DDoS 攻击

简介

DDoS 攻击的全称是:分布式拒绝服务(Distributed Denial of Service)。

DoS 攻击:攻击者不断地提出服务请求,让合法用户的请求无法及时处理 。
DDoS 攻击:攻击者使用多台计算机或者计算机集群进行 DoS 攻击。

DDos攻击的分类

DDos攻击可以分为两类:

  1. 域名攻击。比如:CC攻击(用代理服务器向受害服务器发送大量貌似合法的请求)。
  2. IP攻击。比如:用TCP、UDP去攻击。

域名攻击的解决方案

限流(对单个IP限制单位时间的请求次数)。

限流方式有:

  1. 购买云服务器的限流服务
  2. 自己开发限流工具(定时读取服务器的访问日志,如果有异常IP,把这个IP禁掉)

IP攻击的解决方案

IP攻击是无法直接防御的!因为是利用的TCP/IP协议进行攻击。

唯一的方法是:使用CDN,隐藏服务器真实IP。

JSON 劫持

简介

JSON 劫持(JSON Hijacking)是用于获取敏感数据的一种攻击方式,属于 CSRF 攻击的范畴。

原因

一些 Web 应用会把一些敏感数据以 json 的形式返回到前端,如果仅仅通过 Cookie 来判断请求是否合法,那么就可以利用类似 CSRF 的手段,向目标服务器发送请求,以获得敏感数据。

比如下面的链接在已登录的情况下会返回 json 格式的用户信息:

http://www.test.com/userinfo

攻击者可以在自己的虚假页面中,加入如下标签:

<script src="http://www.test.com/userinfo"></script>

如果当前浏览器已经登录了 www.test.com,并且 Cookie 未过期,然后访问了攻击者的虚假页面,那么该页面就可以拿到 json 形式的用户敏感信息,因为 script 标签会自动解析 json 数据,生成对应的 js 对象。然后再通过:

Object.prototype.__defineSetter__

这个函数来触发自己的恶意代码。但是这个函数在当前的新版本 Chrome 和 Firefox 中都已经失效了。

解决方案

  • X-Requested-With 标识
  • 浏览器 JSON 数据识别
  • 禁止 Javascript 执行 JSON 数据

暴力破解

简介

这个一般针对密码而言,弱密码(Weak Password)很容易被别人(对你很了解的人等)猜到或被破解工具暴力破解。

解决方案

  • 密码复杂度要足够大,也要足够隐蔽
  • 限制尝试次数

HTTP 报头追踪漏洞

简介

HTTP/1.1(RFC2616)规范定义了 HTTP TRACE 方法,主要是用于客户端通过向 Web 服务器提交 TRACE 请求来进行测试或获得诊断信息。

当 Web 服务器启用 TRACE 时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中 HTTP 头很可能包括 Session Token、Cookies 或其它认证信息。攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。

防御方案

禁用 HTTP TRACE 方法。

信息泄露

简介

由于 Web 服务器或应用程序没有正确处理一些特殊请求,泄露 Web 服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。

防御方案

  • 应用程序报错时,不对外产生调试信息
  • 过滤用户提交的数据与特殊字符
  • 保证源代码、服务器配置的安全

文件上传格式校验

简介

黑客攻击网站还有一个常见的方式就是通过文件上传漏洞,比如网站上传图片的功能没有严格校验后缀名。黑客可以通过此功能上传一些脚本文件,上传成功后,通过请求这些脚本文件运行脚本中的功能达到攻击的目的。

那么如果验证了上传文件的后缀名就可以吗?实际上并不是,举例说我们知道页面引入script标签时src写啥都行,比如http://www.baidu.com/123.jpg,也是可以的,攻击者只需要把一个script文件后缀名改为jpg即可通过后缀验证,后面一路畅通。所以这就提到了验证文件的真实格式。如何验证,网上一大堆…

防御方案

设置php文件、jsp文件不可直接被访问(不知道php可以不,jsp放在WEB-INF即可),这样攻击者上传此类文件也无法执行;

通过文件头信息严格验证文件格式,从上传功能开始防范。

0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录