白帽子讲web安全读后感2

白帽子讲web安全读后感2

框架安全

一个优秀的安全方案,应该是:在正确的地方,做正确的事情。

举例来说,在“注入攻击”一章中,我们并没有使用PHP的magic_quotes_gpc作为一项对抗SQL注入的防御方案,这是因为magic_quotes_gpc是有缺陷的,它并没有在正确的地方解决问题。magic_quotes_gpc实际上是调用了一次addslashes(),将一些特殊符号(比如单引号)进行转义,变成了 '。对应到MVC架构里,它是在View层做这件事情的,而SQL注入是Model层需要解决的问题,结果如何呢?黑客们找到了多种绕过magic_quotes_gpc的办法,比如使用GBK编码、使用无单引号的注入等。PHP官方在若干年后终于开始正视这个问题,于是在官方文档的描述中不再推荐大家

一般来说,我们需要先想清楚要解决什么问题,深入理解这些问题后,再在“正确”的地方对数据进行安全检查。一些主要的Web安全威胁,如XSS、CSRF、SQL注入、访问控制、认证、URL跳转等不涉及业务逻辑的安全问题,都可以集中放在MVC框架中解决。在框架中实施安全方案,比由程序员在业务中修复一个个具体的bug,有着更多的优势。

因此按照原文的说法,绝大多数大家使用框架,在安全上,尽量使用标准的使用的模式下,安全问题就容易避免.

  • 比如使用ORM的查询构造器,来访问数据库,就要比自己构造sql语句要安全的多.

  • 对于很多php框架中,尽量避免键值对加入使用.各大CMS出现的SQL注入,由于数组的$key过滤不严直接带入SQL查询的漏洞屡见不鲜.

    ci框架注入漏洞 这篇文章里面就有这个问题的讨论

  • 文件上传要小心,这一点在后文中会出现,简单地说尽量不要用本地存储文件模式.如果应用实现有问题,可能就会成为严重的漏洞。若是由每个业务单独实现文件上传功能,其设计和代码都会存在差异,复杂情况也会导致安全问题难以控制。但如果在Web框架中能为文件上传功能提供一个足够安全的二方库或者函数

  • 在Web应用开发中,有必要对“读操作”和“写操作”予以区分,比如要求所有的“写操作”都使用HTTP POST.在很多讲述CSRF防御的文章中,都要求使用HTTP POST进行防御,但实际上POST本身并不足以对抗CSRF,因为POST也是可以自动提交的。但是POST的使用,对于保护token有着积极的意义,而security token的私密性(不可预测性原则),是防御CSRF攻击的基础

  • 对于远程运行的命令的代码要尤其小心.之前经常提到的javalog漏洞,还有在Django 0.95版本中,也出现了一个远程执行命令漏洞,根据官方代码diff后的细节,可以看到这是一个很明显的“命令注入”漏洞,我们在“注入攻击”一章中,曾经描述过这种漏洞。Django在处理消息文件时存在问题,远程攻击者构建恶意.po文件,诱使用户访问处理,可导致以应用程序进程权限执行任意命令

应用层拒绝服务

应用层拒绝服务攻击是传统的网络拒绝服务攻击的一种延伸,其本质也是对有限资源的无限制滥用所造成的。所以,解决这个问题的核心思路就是限制每个不可信任的资源使用者的配额。

ddos攻击

DDOS又称为分布式拒绝服务,全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载,导致服务不可用。防御上就很困难了

泛洪攻击

核心是利用三次握手的问题,由于三次握手的第二次服务器就要提供资源,而在第三次请求方才需要提供资源.

SYN flood在攻击时,首先伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3~5次并且等待一个SYNTime(一般为30秒至2分钟),如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求,服务器端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试。最后的结果是服务器无暇理睬正常的连接请求,导致拒绝服务。

cc攻击

CC攻击的原理非常简单,就是对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的。在Web应用中,查询数据库、读/写硬盘文件等操作,相对都会消耗比较多的资源.
比如翻页的大表,当post表数据庞大,翻页频繁,$start数字急剧增加时,查询影响结果集=$start+30;该查询效率呈现明显下降趋势,而多并发频繁调用,因查询无法立即完成,资源无法立即释放,会导致数据库请求连接过多,数据库阻塞,网站无法正常打开。

爬虫把小网站直接爬死的情况时有发生,这与应用层DDOS攻击的结果很像。由此看来,应用层DDOS攻击与正常业务的界线比较模糊。之前就有一个爬虫把人政府网站爬死了,结果有关部门把人送进去了

防御方式
  • 限制请求频率:在应用中针对每个客户端做一个请求频率的限制
  • 使用验证码(一般都是登陆,不过某些表单提交中,如果频繁提交也可以加)
  • 应用代码要做好性能优化
  • 在网络架构上做好优化。善于利用负载均衡分流,避免用户流量集中在单台服务器上。同时可以充分利用好CDN和镜像站点的分流作用,缓解主站的压力。
SIowIoris攻击

Slowloris是在2009年由著名的Web安全专家RSnake提出的一种攻击方法,其原理是以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限,因此若是恶意地占用住这些连接不释放,那么Web Server的所有连接都将被恶意连接占用,从而无法接受新的请求,导致拒绝服务。

HTTP POST DOS

在2010年的OWASP大会上,Wong Onn Chee和Tom Brennan演示了一种类似于Slowloris效果的攻击方法,作者称之为HTTP POST D.O.S.。其原理是在发送HTTP POST包时,指定一个非常大的Content-Length值,然后以很低的速度发包,比如10~100s发一个字节,保持住这个连接不断开。这样当客户端连接数多了以后,占用住了Web Server的所有可用连接,从而导致DOS。

正则表达式攻击

ReDOS正则表达式也能造成拒绝服务?是的,当正则表达式写得不好时,就有可能被恶意输入利用,消耗大量资源,从而造成DOS。这种攻击被称为ReDOS。

PHP 安全

文件包含漏洞

include、require、include_once、require_once,使用这4个函数包含文件,该文件将作为 PHP 代码执行,PHP 内核不会在意该包含的文件是什么类型

代码执行漏洞

危险函数execshell_execsystem可以直接执行系统命令。eval函数可以执行 PHP 代码

伪随机数和真随机数

伪随机数

通过一些数学算法生成的随机数,并非真正的随机数

真随机数

通过一些物理系统生成的随机数

安全随机数
  • Linux

使用 /dev/random 或者 /dev/urandom 来生成随机数,只需读取即可

社工安全

这个就是很玄学了,比如我通过网上通过某些方式(密码库,拖库后拿到的密码,猜测常用密码),拿到了某著名前端代码的github之类的权限,甚至极端一段,我拿着枪直接去对着他要求他强行把漏洞的前端代码放到了基础库中,这样大量的挖矿代码就留到了各路常见的框架中去.

或者说我假装美女去勾搭某著名程序员(那么多大佬总有饥渴的不是),精虫上脑下让他去点我的钓鱼网页.精虫上脑的情况下人脑的cpu就会大幅下降.甚至不需要著名程序员,只要给某些公司的后台管理员发就可以了.
不过本书并没有专门讲社工,之后有空倒是可以看看社工的神通广大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值