WEB服务器架构:
	
	认证与授权安全
	认证安全
	1、认证方式
	- 
		基于HTML表格的认证
- 
		客户端的SSL证书
- 
		HTTP的基础型和摘要型(digest)认证
- 
		认证服务如SSO
- 
		使用NTLM或者Kerberos的windows集成式认证
- 
		认证机制自身的缺陷:如允许其他用户使用该用户的权限;只验证口令的前几位
- 
		用户名与口令可以预测,如一些网站的初始密码、一些密码生成具备一定规律
	2、认证机制的设计缺陷
	- 
		低质量的用户口令:用户人为过于简单的设置如123456
- 
		口令暴力破解:攻击者使用暴力破解的方式,没有防爆破的登录界面很容易中招
- 
		口令猜测攻击:在忘记密码的界面、登录界面尝试输入密码
- 
		用户凭证没有获得加密传输或者放在易被获取的地方如请求参数
	3、认证机制的实现缺陷
	- 
		系统异常导致登录机制开放
- 
		多阶段登录机制缺陷
- 
		用户口令凭证的不安全存储,如明文存储
	会话管理
	原理:在用户通过认证之后持续保证用户身份的真实性
	如果攻击者可以破坏系统的会话管理,他就可以轻易的绕过系统的验证机制
	会话管理主要通过令牌实现,一般来说使用cookie作为会话令牌。
	1、会话令牌生成中的安全问题
	2、会话令牌处理中的安全问题
	- 
		传输安全没有得到保障,如以非加密的方式传输密钥
- 
		会话令牌的存储没有得到安全的存储,服务端没有将存放会话关键细节的日志保护好
- 
		令牌劫持
- 
		令牌时效性问题导致在会话结束后令牌依然有效
	访问控制
	访问控制建立在认证和会话管理之上,包括:垂直访问控制、水平访问控制、上下文相关访问控制。
	访问控制方法
	基于参数的访问控制
	- 
		任何知道分配给管理员参数的用户,只需在他自己的请求中使用该参数即可获得相应权限
	基于Referer的访问控制
	基于位置的访问控制
	- 
		使用位于所允许位置的Web代理服务器
- 
		使用位于所允许位置的VPN
- 
		使用支持数据漫游的移动设备
- 
		修改客户端地理位置
	访问控制中的安全缺陷
	访问控制的安全问题按表现形式主要可以分为三种:
	垂直越权、水平越权、业务逻辑漏洞:
	
	按照缺陷形式,又可以细分为如下这几类处理漏洞:
	- 
		完全不受保护的功能:敏感的功能和数据可能被任何知道相关URL的用户访问
- 
		基于标识符的功能:特殊资源以标识符方式表示且任何用户可以访问
- 
		多阶段功能:在多阶段的功能中开发者往往会认为任何到达验证过程后续阶段的用户一定拥有了相关的权限
- 
		静态文件:静态资源本身不受访问控制限制
- 
		平台配置错误:平台级访问控制基于:1)HTTP请求方法;2)URL路径;3)用户角色
	解决方案
	- 
		防止对URL和标识符的未授权访问
- 
		不信任用户提交的表示访问权限的参数
- 
		不要认为用户将按顺序访问程序页面
- 
		不要认为用户不会篡改客户端的数据
	数据与后端安全
	1、数据存储区安全
	常用的数据存储区如:SQL数据库、XML资料库
	对应的安全问题有代码注入:
	2、后端组件安全
	后端组件,首先,组件化是web开发的一个核心点,将功能模块化,后端组件也就是处于服务器后端的具备具体功能的模块化代码
	其对应的安全与传统的web安全没有太多出入,包括命令执行、文件包含、命令注入等攻击
	应用架构与逻辑安全
	1、攻击应用程序逻辑
	所有应用程序都通过逻辑操作实现各种功能
	逻辑操作代表着一个复杂的受攻击面:
	- 
		SQL注入、跨站等漏洞具有容易辨别的”签名”
- 
		逻辑缺陷没有共用的”签名”,每一处几乎都是唯一的,自动化漏洞扫描器无法发
	例如,程序开发者的假设存在缺陷,没有做好每一步的访问控制:
	
	2、攻击应用程序架构
	
	一个web服务的整体架构,包括客户端的浏览器语言,应用层的前端组件和后端组件。
	攻击方式
	(1)攻击分层架构
	- 
		利用层之间的信任关系扩大攻击范围,通过一层入侵其他层
- 
		破坏其他层
	(2)共享服务环境下的安全问题
	- 
		针对访问机制的攻击,如FTP控制下的不同用户的权限分配问题
- 
		应用程序之间的攻击,即攻击下一个程序后利用程序之间的关系一带一路控制另一个程序
	(3)攻击云
	3、攻击WEB服务器
	WEB服务器配置缺陷
	- 
		许多web服务器包含可被公众访问的管理接口,这些接口使用安装时的默认证书
- 
		Web服务器中含有可用于攻击服务器或目标程序的默认内容
- 
		Web服务器中含有可用于攻击服务器或目标程序的默认内容
- 
		Web应用收到一个访问目录而非真实文件的请求时,可能泄露敏感数据
- 
		虚拟主机配置缺陷
- 
		Web服务器作为代理服务器
	保护方式:
	- 
		修改所有默认凭证,包括用户名、口令,删除不必要的账户
- 
		组织公众访问管理接口,在Web根目录的相关路径上设置应用访问控制列表
- 
		删除所有并不完全需要的默认功能与内容
- 
		如需保留默认功能,尽量对其强化,禁用不必要的选项
- 
		禁用目录列表
- 
		禁用除常用web方法外的其他所有方法
- 
		确保没有将web服务器配置为代理服务器
- 
		如果web服务器支持虚拟主机,确保在默认主机上实施服务器强化措施
	WEB服务器软件安全
	- 
		应用程序框架缺陷——.NET填充提示(Padding Oracle)
- 
		内存管理漏洞,如Apache mod_isapi悬挂指针
- 
		编码与规一化漏洞,如Apple iDisk Server路径遍历
- 
		查找Web服务器漏洞,即能够通过漏洞数据库发现该网站存在一些漏洞
- 
		保障Web服务器软件的安全,使用入侵防御(应用程序防火墙)或执行入侵检测。
	参考文献
	《软件安全原理》——霍玮
	转载出处:from 信安科研人