文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。
因此,文件上传导致的常见问题有:
密码是互联网作为最基础的认证手段。密码的优点在于成本低,认证过程实现比较简单,缺点是容易被破解。
因为密码不太安全,因此大多数银行会增加手机动态口令、数字证书、宝令、支付盾、第三方证书等都可用于用户认证。这些不同的认证手段可以互相结合,使得认证的过程更加安全。
什么是SessionFixation呢?举一个形象的例子:
假设A有一辆汽车,A把汽车卖给了B,但是A并没有把所有的车钥匙交给B,还自己藏下了一把。这时候如果B没有给车换锁的话,A仍然是可以用藏下的钥匙使用汽车的。这个没有换锁而导致的安全问题,就是SessionFixation问题。
具体攻击的过程:
在互联网安全领域,权限控制的问题都可以归结为访问控制的问题。
在设计方案时,要满足最小权限原则。
基于角色的访问控制,是目前较为广泛的方法。
事先在系统定义不同的角色,不同角色拥有不同的权限,因此角色是权限的集合,通过控制不同角色的权限高低,即可完成权限管理。
在Web安全中,更关心的是怎样用好加密算法,做好密钥管理,以及生成强壮的随机数。
在加密算法的选择和使用上,有以下建议:
当你不知道该如何选择时,有以下建议:
DDOS又称为分布式拒绝服务,全称是Dis-tributedDenialofService。
DDOS是利用合理的请求造成资源过载,导致服务不可用。分布式拒绝服务攻击,将正常请求放大了若干倍,通过若干个网络节点同时发起攻击,以达成规模效应。
简单理解,DD攻击就是破坏应用的可用性。
上面介绍的是网络层DDOS,而应用层DDOS不用于网络层,因为是发生在三次握手后的事。
CC攻击全称ChallengeCollapsar,中文意思是挑战黑洞,因为以前的抵抗DDoS攻击的安全设备叫黑洞,顾名思义挑战黑洞就是说黑洞拿这种攻击没办法。
CC攻击的原理是通过代理服务器或者大量肉鸡模拟多个用户访问目标网站的动态页面,制造大量的后台数据库查询动作,消耗目标CPU资源,造成拒绝服务。
DDoS攻击的是网站的服务器,针对IP的攻击,而CC攻击是针对网站的页面攻击,是攻击服务器资源。
用术语来说就是,一个是WEB网络层拒绝服务攻击(DDoS),一个是WEB应用层拒绝服务攻击(CC)。
网络层就是利用肉鸡的流量去攻击目标网站的服务器,针对比较本源的东西去攻击,服务器瘫痪了,那么运行在服务器上的网站肯定也不能正常访问了。而应用层就是我们用户看得到的东西,就比如说网页,CC攻击就是针对网页来攻击的,CC攻击本身是正常请求,网站动态页面的正常请求也会和数据库进行交互的,当这种"正常请求"达到一种程度的时候,服务器就会响应不过来,从而崩溃。ReDos攻击当正则表达式写得不好时,就有可能被恶意输入利用,消耗大量资源,这种攻击被称为Re-DOS。
应用层拒绝服务攻击的本也是对有限资源的无限制滥用所造成的,解决这个问题的核心思路就是限制每个不可信任的资源使用者的配额。
在解决应用层拒绝服务攻击时,可以采用验证码,提高一定的门槛。
优秀的安全方案必须具备的两个条件:
所以提高密码复杂度这个安全需求,其本质其实可以分解为:
而这过程,也就是威胁分析过程,是设计安全方案的基础。
某电视台的网站开发了一个新的功能:允许网友们提供当地的天气信息,该信息将在电视新闻中滚动播出。为了防止垃圾信息,网友们提供的信息是经过人工审核后才播出的。
但是这套系统在设计时还允许网友们对信息进行编辑。
此处存在一个逻辑漏洞:审核通过后的信息,如果被用户重新编辑了,不会再次进行审核,也会直接发送到电视新闻的滚动条中。
SDL的全称是SecurityDevelopmentLifecy-cle,即:安全开发生命周期。
SDL过程大致可以分成16个阶段:
通过培训能贯彻安全策略和安全知识,并在之后的执行过程中提高执行效率,降低沟通成本。
培训对象包括开发人员、测试人员、项目经理、产品经理等。
培训内容会覆盖安全设计、威胁建模、安全编码、安全测试、隐私等方面知识。
在项目确立之前,需要提前与项目经理或者产品owner进行沟通,确定安全的要求和需要做的事情。
确认项目计划和里程碑,尽量避免因为安全问题而导致项目延期发布。
用于确定安全和隐私质量的最低可接受级别。
应用于整个软件开发项目的质量门,用于定义安全漏洞的严重性阈值。例如,应用程序在发布时不得包含具有关键或重要评级的已知漏洞。
用于确定软件中需要深入评析的功能环节,包括的信息如下:
在设计阶段应仔细考虑安全和隐私问题,在项目初期确定好安全需求,尽可能避免安全引起的需求变更。
减小攻击面通过减少攻击者利用潜在弱点或漏洞的机会来降低风险。减小攻击面包括关闭或限制对系统服务的访问,应用最小权限原则,以及尽可能地进行分层防御。
为项目或产品面临的威胁建立模型,明确可能来自的攻击有哪些方面。
许多常用函数可能存在安全隐患,应该禁用不安全的函数或API,使用安全团队推荐的函数。
动态分析是静态分析的补充,用于测试环节验证程序的安全性。
模糊测试是一种专门形式的动态分析,它通过故意向应用程序引入不良格式或随机数据诱发程序故障。模糊测试策略的制定,以应用程序的预期用途,以及应用程序的功能和设计规范为基础。
项目经常会因为需求变更等因素导致最终的产出偏离原本设定的目标,因此在项目后期重新对威胁模型和攻击面进行评析是有必要的,能够及时发现问题并修正。
受SDL要求约束的每个软件在发布时都必须包含事件响应计划。
最终安全评析(FSR)是在发布之前仔细检查对软件执行的所有安全活动。通过FSR将得出以下三种不同结果:
在通过FSR或者虽有问题但达成一致后,可以完成产品的发布。但发布的同时仍需对各类问题和文档进行存档,为紧急响应和产品升级提供帮助。
到这里,整本书已经看完了,很多内容都是选择性跳过,因为不太能理解,有较多提及到服务器、PC安全等,以及部分源码讲解,因为水平有限,只能部分跳过。