文档介绍:安全:Web 安全学****笔记
背景
说来惭愧,6 年的 web 编程生涯,一直没有真正系统的学**** web 安全知识(认证和授权
除外),这个月看了一本《Web 安全设计之道》,书中的内容多是从微软官方文档翻译而来,
这本书的含金量不高,不过也不能说没有收获,本文简单记录一下我学**** Web 安全方面的笔记。
本文不涉及 IIS、Windows 和 SqlServer 的安全管理与配置,尽量只谈编程相关的安全
问题。
最简单的 Web 物理架构
您必须了解 HTTP 协议,可以阅读这篇文章:HTTP 协议详解,简单总结如下:
浏览器和服务器的通信采用无状态的 HTTP 协议。
通过控制 HTTP 的请求头,可以控制:客户端缓存、Cookie、请求编码、相应编码等。
请求内容向服务器提交数据(POST 和 GET),响应内容向浏览器发送数据。
Cookie 包含在每个请求和响应中,因此客户端和服务器都可以访问到。
一般使用 Cookie 来维护一个浏览器会话(也有其他方式)。
攻击方式总览
Web 软件安全攻击防护
浏览器安全攻击
1、Cookie 假冒
定义
非期望的修改 Cookie 的值。
场景
服务器将用户的授权信息存储在 Cookie 中,然后客户端用这些 Cookie 决定导航的显示
与否。如果有程序恶意的修改了 Cookie,会导致权限提升。
攻击方式
Javascript 代码。
。
。
防护措施
Cookie 设置为 HttpOnly,浏览器伪造不了这种 Cookie。
Javascript 注入。
2、隐藏变量修改
定义
非期望的修改隐藏变量。
场景
订单的折扣计算完全依赖客户端的某个变量,这个变量是从服务器生成的,所有逻辑都在
客户端计算,服务器只是接受最后的计算结果。如果有程序恶意的修改了变量,会绕过某些业
务逻辑。
攻击方式
Javascript 代码。
。
保护措施
Javascript 注入。
,要采用服务器控制。
3、跨站脚本攻击
定义
恶意的提交 Javascript 代码。
场景
在博客的评论功能中,如果用户恶意的提交 Javascript 代码,假如这些 Javascript 没
有被过滤,极端的情况下,这些代码会劫持所有访问此页面用户的会话,访问和修改任意数据。
攻击方式
Javascript 代码。
。
保护措施
。
ValidateRequest="true"。
。
服务器安全攻击
1、缓冲区溢出
定义
某些可能输入会导致服务器堆栈溢出,这直接致使服务器不可用。
场景
程序提供了某项计算密集型的功能,此功能没有限制用户输入,用户在有意或无意之间输
入了一个非法的值,导致了缓冲区溢出。
攻击方式
1. 非法输入。
保护措施
。
。
2、认