本文不涉及 IIS、Windows 和 SqlServer 的安全管理与配置,尽量只谈编程相关的安全问题。
一、最简单的 Web 物理架构
您必须了解 HTTP 协议,简单总结如下:
- 浏览器和服务器的通信采用无状态的 HTTP 协议。
- 通过控制 HTTP 的请求头,可以控制:客户端缓存、Cookie、请求编码、相应编码等。
- 请求内容向服务器提交数据(POST 和 GET),响应内容向浏览器发送数据。
- Cookie 包含在每个请求和响应中,因此客户端和服务器都可以访问到。
- 一般使用 Cookie 来维护一个浏览器会话(也有其他方式)。
二、攻击方式总览
三、Web 软件安全攻击防护
3.1、浏览器安全攻击
Cookie 假冒
定义
非期望的修改 Cookie 的值。
场景
服务器将用户的授权信息存储在 Cookie 中,然后客户端用这些 Cookie 决定导航的显示与否。如果有程序恶意的修改了Cookie,会导致权限提升。
攻击方式
- 注入的 Javascript 代码。
- 使用浏览器调试工具。
- 本机病毒等。
防护措施
- 尽量将 Cookie 设置为 HttpOnly,浏览器伪造不了这种 Cookie。
- 防止 Javascript 注入。
隐藏变量修改
定义
非期望的修改隐藏变量。
场景
订单的折扣计算完全依赖客户端的某个变量,这个变量是从服务器生成的,所有逻辑都在客户端计算,服务器只是接受最后的计算结果。如果有程序恶意的修改了变量,会绕过某些业务逻辑。
攻击方式
- 注入的 Javascript 代码。
- 使用浏览器调试工具。
保护措施
- 防止 Javascript 注入。
- 关键的功能不要依靠客户端控制,要采用服务器控制。