常见web安全漏洞

1. cookie重要性

cookie是浏览器用来判断用户登录状态的。一旦cookie被窃取,相当于别人不用你的用户名和密码,就已经登录了你的个人网站。

2. 同源策略

没有同源策略的危害
早期的浏览器,没有同源策略。不同域名的javascript可以相互访问cookie。
假设这么一种情形,你登录了某银行网站,没有关闭,就访问了另一个病毒网站,这个网站的javascript读取了你银行网站的cookie,就相当于登陆了你的网上银行。
所以现在浏览器普遍都设置了同源策略,即:不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。
跨域资源共享
同时,在实际开发时,我们经常会碰到需要用javascript异步请求不同域名服务器的接口。这时候服务器可以设置一个白名单,允许指定域名的脚本,访问本服务器。这种方法叫做"跨域资源共享"(Cross-origin resource sharing)。
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。比如在b.com里面添加响应头声明允许a.com的访问,代码:

Access-Control-Allow-Origin: http://a.com

然后a.com就可以用ajax获取b.com里的数据了。

3. XSS攻击

攻击方法:
受同源策略影响,不同域名的的客户端脚本无法相互访问cookie。那么我们可不可以把恶意脚本,注入到原网站中,从而获取cookie呢?这就是xss(cross site scripting)攻击的思路。
这种攻击一般出现在允许用户自定义输入的输入框中,比如评论,博客等等。
防御方法:

  1. 用cookie的HttpOnly属性,加上了这个属性的cookie字段
  2. 用户输入框,加转义

4. CSRF攻击

攻击方法:
CSRF,全称跨站请求伪造(Cross Site Request Forgery)。
CSRF,不直接盗取cookie,而是诱骗用户在不关闭浏览器或退出登录的情况下,请求恶意网站的url,则相当于发出了身份认证后的请求,可能会执行一些用户不想做的敏感操作。
目标网站:www.webA.com
恶意网站:www.webB.com
转账功能链接:
http://www.webA.com/transport?account=abc&total=500
恶意网站www.webB.com某CSRF页面:

<script>
new Image().src=’http://www.webA.com/transport?account=abc&total=500’;
</script>

诱骗受害用户访问恶意网站CSRF页面
这种攻击方式,要求恶意网站知道转账功能的链接参数(比如转账功能链接)。
防御方法:
防护csrf的措施虽然很多,但归根到底就是一条:在客户端提交请求时增加伪造随机数。使得链接请求参数不可预测。

  1. Token要足够随机–只有这样才算不可预测
  2. Token是一次性的,即每次请求成功后要更新Token–这样可以增加攻击难度,增加预测难度
  3. Token要注意保密性–敏感操作使用post,防止Token出现在URL中

5. SQL 注入

攻击方式:
由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
SQL注入的本质是对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。
SQL注入漏洞,就是将用户可控的数据拼接进了SQL语句中,一起提交到了数据库执行。
攻击者通过注入语句,改变SQL语句执行逻辑,通过控制部分SQL语句,攻击者可以查询数据库中任何自己需要的数据,利用数据库的一些特性,可以直接获取数据库服务器的系统权限。
防御方式:
防止 SQL 注入主要是不能允许用户输入的内容影响正常的 SQL 语句的逻辑,

  1. 严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害

  2. 后端代码检查输入的数据,对进入数据库的特殊字符(’,",\,<,>,&,*,; 等)进行转义处理,或编码转换。

  3. 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句。

  4. 在应用发布之前建议使用专业的 SQL 注入检测工具进行检测,以及时修补被发现的 SQL 注入漏洞。网上有很多这方面的开源工具,例如 sqlmap、SQLninja 等。

  5. 避免网站打印出 SQL 错误信息,比如类型错误、字段不匹配等,把代码里的 SQL 语句暴露出来,以防止攻击者利用这些错误信息进行 SQL 注入。

  6. 不要过于细化返回的错误信息,如果目的是方便调试,就去使用后端日志,不要在接口上过多的暴露出错信息。

6. DDoS 攻击

DDos 攻击从层次上可分为网络层攻击与应用层攻击,从攻击手法上可分为快型流量攻击与慢型流量攻击,但其原理都是造成资源过载,导致服务不可用。

网络层 DDoS攻击

网络层 DDos 攻击包括 SYN Flood、ACK Flood、UDP Flood、ICMP Flood 等。

SYN Flood 攻击
SYN flood 攻击主要利用了 TCP 三次握手过程中的 Bug,我们都知道 TCP 三次握手过程是要建立连接的双方发送 SYN,SYN + ACK,ACK 数据包,而当攻击方随意构造源 IP 去发送 SYN 包时,服务器返回的 SYN + ACK 就不能得到应答(因为 IP 是随意构造的),此时服务器就会尝试重新发送,并且会有至少 30s 的等待时间,导致资源饱和服务不可用,此攻击属于慢型 DDoS 攻击。

UDP Flood 攻击
UDP flood 攻击是由于 UDP 是一种无连接的协议,因此攻击者可以伪造大量的源 IP 地址去发送 UDP 包,此种攻击属于大流量攻击。正常应用情况下,UDP 包双向流量会基本相等,因此发起这种攻击的攻击者在消耗对方资源的时候也在消耗自己的资源。

ICMP Flood 攻击
ICMP Flood 攻击属于大流量攻击,其原理就是不断发送不正常的 ICMP 包(所谓不正常就是 ICMP 包内容很大),导致目标带宽被占用,但其本身资源也会被消耗。目前很多服务器都是禁 ping 的(在防火墙在可以屏蔽 ICMP 包),因此这种攻击方式已经落伍。

网络层DDOS防御

  1. 网络架构上做好优化,采用负载均衡分流。
  2. 添加抗 DDos 设备,进行流量清洗。
  3. 限制单 IP 请求频率。
  4. 防火墙等防护设置禁止 ICMP 包等。
  5. 关闭不必要的服务。

应用层 DDoS攻击

应用层 DDoS 攻击不是发生在网络层,是发生在 TCP 建立握手成功之后,应用程序处理请求的时候,现在很多常见的 DDoS 攻击都是应用层攻击。应用层攻击千变万化,目的就是在网络应用层耗尽你的带宽,下面列出集中典型的攻击类型。

CC 攻击
当时绿盟为了防御 DDoS 攻击研发了一款叫做 Collapasar 的产品,能够有效的防御 SYN Flood 攻击。黑客为了挑衅,研发了一款 Challenge Collapasar 攻击工具(简称 CC)。
CC 攻击的原理,就是针对消耗资源比较大的页面不断发起不正常的请求,导致资源耗尽。因此在发送 CC 攻击前,我们需要寻找加载比较慢,消耗资源比较多的网页,比如需要查询数据库的页面、读写硬盘文件的等。通过 CC 攻击,使用爬虫对某些加载需要消耗大量资源的页面发起 HTTP 请求。

DNS Flood
DNS Flood 攻击采用的方法是向被攻击的服务器发送大量的域名解析请求。
根据微软的统计数据,一台 DNS 服务器所能承受的动态域名查询的上限是每秒钟 9000 个请求。而我们知道,在一台 P3 的 PC 机上可以轻易地构造出每秒钟几万个域名解析请求,足以使一台硬件配置极高的 DNS 服务器瘫痪,由此可见 DNS 服务器的脆弱性。

HTTP 慢速连接攻击
针对 HTTP 协议,先建立起 HTTP 连接,设置一个较大的 Conetnt-Length,每次只发送很少的字节,让服务器一直以为 HTTP 头部没有传输完成,这样连接一多就很快会出现连接耗尽。

应用层 DDoS 防御

而应用层 DDoS 防御的核心就是区分人与机器(爬虫),因为大量的请求不可能是人为的,肯定是机器构造的。因此如果能有效的区分人与爬虫行为,则可以很好地防御此攻击。

7. 流量劫持

流量劫持应该算是黑产行业的一大经济支柱了吧?简直是让人恶心到吐,不吐槽了,还是继续谈干货吧,流量劫持基本分两种:DNS 劫持 和 HTTP 劫持,目的都是一样的,就是当用户访问 zoumiaojiang.com 的时候,给你展示的并不是或者不完全是 zoumiaojiang.com 提供的 “内容”。

DNS 劫持

DNS 劫持,也叫做域名劫持,可以这么理解,「你打了一辆车想去商场吃饭,结果你打的车是小作坊派来的,直接给你拉到小作坊去了」,DNS 的作用是把网络地址域名对应到真实的计算机能够识别的 IP 地址,以便计算机能够进一步通信,传递网址和内容等。如果当用户通过某一个域名访问一个站点的时候,被篡改的 DNS 服务器返回的是一个恶意的钓鱼站点的 IP,用户就被劫持到了恶意钓鱼站点,然后继而会被钓鱼输入各种账号密码信息,泄漏隐私。

这类劫持,要不就是网络运营商搞的鬼,一般小的网络运营商与黑产勾结会劫持 DNS,要不就是电脑中毒,被恶意篡改了路由器的 DNS 配置,基本上做为开发者或站长却是很难察觉的,除非有用户反馈,现在升级版的 DNS 劫持还可以对特定用户、特定区域等使用了用户画像进行筛选用户劫持的办法,另外这类广告显示更加随机更小,一般站长除非用户投诉否则很难觉察到,就算觉察到了取证举报更难。无论如何,如果接到有 DNS 劫持的反馈,一定要做好以下几件事:

取证很重要,时间、地点、IP、拨号账户、截屏、URL 地址等一定要有。
可以跟劫持区域的电信运营商进行投诉反馈。
如果投诉反馈无效,直接去工信部投诉,一般来说会加白你的域名。

HTTP 劫持

HTTP 劫持您可以这么理解,「你打了一辆车想去商场吃饭,结果司机跟你一路给你递小作坊的广告」,HTTP 劫持主要是当用户访问某个站点的时候会经过运营商网络,而不法运营商和黑产勾结能够截获 HTTP 请求返回内容,并且能够篡改内容,然后再返回给用户,从而实现劫持页面,轻则插入小广告,重则直接篡改成钓鱼网站页面骗用户隐私。能够实施流量劫持的根本原因,是 HTTP 协议没有办法对通信对方的身份进行校验以及对数据完整性进行校验。如果能解决这个问题,则流量劫持将无法轻易发生。所以防止 HTTP 劫持的方法只有将内容加密,让劫持者无法破解篡改,这样就可以防止 HTTP 劫持了。

HTTPS 协议就是一种基于 SSL 协议的安全加密网络应用层协议,可以很好的防止 HTTP 劫持。这里有篇 文章 讲的不错。HTTPS 在这就不深讲了,后面有机会我会单独好好讲讲 HTTPS。如果不想站点被 HTTP 劫持,赶紧将你的站点全站改造成 HTTPS 吧。

8 目录遍历漏洞

目录遍历漏洞指通过在 URL 或参数中构造 …/,./ 和类似的跨父目录字符串的 ASCII 编码、unicode 编码等,完成目录跳转,读取操作系统各个目录下的敏感文件,也可以称作「任意文件读取漏洞」。

目录遍历漏洞原理:程序没有充分过滤用户输入的 …/ 之类的目录跳转符,导致用户可以通过提交目录跳转来遍历服务器上的任意文件。使用多个… 符号,不断向上跳转,最终停留在根 /,通过绝对路径去读取任意文件。

目录遍历漏洞几个示例和测试,一般构造 URL 然后使用浏览器直接访问,或者使用 Web 漏洞扫描工具检测,当然也可以自写程序测试。

防御方法就是需要对 URL 或者参数进行 …/,./ 等字符的转义过滤。

参考:
http://blog.nsfocus.net/web-vulnerability-analysis-coding-security/
https://zoumiaojiang.com/article/common-web-security/

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Web安全漏洞加固手册v2.0》是一本针对web安全漏洞的加固手册。这本手册涵盖了许多常见web安全漏洞,并提供了详细的加固方法和技巧。 这本手册的主要目的是帮助开发人员和网络管理员加强他们的网站和应用程序的安全性。它提供了一系列的安全措施和建议,以减少常见的漏洞和攻击面。 手册中首先介绍了一些web安全的基础知识,如跨站脚本攻击(XSS)、SQL注入、跨站请求伪造(CSRF)等。然后详细介绍了这些漏洞的工作原理和可能的攻击场景。接下来,手册提供了一系列的加固措施和建议,以避免这些漏洞的利用。 手册中的加固方法包括输入验证、输出编码、会话管理、访问控制、密码安全等方面。它提供了具体的代码示例和配置建议,以帮助开发人员和网络管理员快速理解和实施这些安全措施。 除了加固方法,手册还提供了一些常见的安全测试工具和技术,以帮助用户评估他们的网站和应用程序的安全性。这些工具和技术包括漏洞扫描器、渗透测试、安全审计等。 总的来说,《Web安全漏洞加固手册v2.0》是一本非常有用的指南,可以帮助开发人员和网络管理员提高其网站和应用程序的安全性。它提供了详细的加固方法和技巧,以及一些常见的安全测试工具和技术。使用这本手册可以增强对web安全漏洞的防范和应对能力。 ### 回答2: Web安全漏洞加固手册(v2.0)是一份指导开发人员和网站管理员加强网站安全的手册。该手册包含了识别和解决常见Web安全漏洞的方法和建议。 首先,手册详细介绍了各种常见Web安全漏洞,如跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、SQL注入、文件上传漏洞等。手册通过详细解释漏洞的原理和攻击方式,帮助开发人员更好地了解这些漏洞的风险和潜在威胁。 其次,手册提供了加固漏洞的方法和建议。对于每种漏洞,手册列出了相应的修复措施和最佳实践,包括输入验证、输出转义、使用安全密码存储、限制访问权限等。这些方法和建议可以帮助开发人员及时修复漏洞、提高网站的安全性。 此外,手册还介绍了与Web安全相关的其他主题,如安全的会话管理、HTTP安全策略(CSP)配置、安全的加密传输(SSL/TLS)、安全的第三方API使用等。这些内容进一步提升了开发人员对Web安全的认识,并提供了相应的解决方案。 需要注意的是,Web安全是一个动态的领域,安全威胁和攻击技术不断演变。因此,手册还提供了定期更新和加固的建议,以保持技术的时效性和有效性。 总之,Web安全漏洞加固手册v2.0是一个全面指导开发人员加强Web安全的资源。通过遵循手册中的方法和建议,开发人员可以最大程度地减少Web安全漏洞的风险,并提高网站的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值