第8章Web安全 ●本章学习要点: HTML协议以及请求与响应的报文结构; Cookie的功能及其安全的重要性; SQL注入的原理和分类; XSS跨站脚本攻击的原理,分类,特别是利用XSS获取Cookiei进行会话劫持
第8章 Web安全 本章学习要点: • HTML协议以及请求与响应的报文结构; • Cookie的功能及其安全的重要性; • SQL注入的原理和分类; • XSS跨站脚本攻击的原理,分类,特别是利用XSS获取Cookie进行会话劫持
8.1前端基础 √首先有必要将可能涉及的语言基础部分在本章进行系统介绍,了解HTML的世界,脚本、样式、 图片、多媒体等这些资源如何运作。 ● 8.1.1URL URL就是我们经常提到的链接,通过URL请求可以查到到唯一的资源,格式如下: <scheme>://<netloc>/<path>?<query>#<fragment> 比如,这是一个最普通的URL:http:lwww.foo.com/path/f.php?id=l&type=cool#new 对应关系是: <scheme>-http <netloc>-www.foo.com <path>-/path/f.php <quey>-id=l&type=cool,包括<参数名=参数值>对 <fragment>-new
8.1 前端基础 首先有必要将可能涉及的语言基础部分在本章进行系统介绍,了解HTML的世界,脚本、样式、 图片、多媒体等这些资源如何运作。 8.1.1 URL • URL就是我们经常提到的链接,通过URL请求可以查到到唯一的资源,格式如下: <scheme>://<netloc>/<path>?<query>#<fragment> • 比如,这是一个最普通的URL:http://www.foo.com/path/f.php?id=l&type=cool#new 对应关系是: <scheme> - http <netloc> - www.foo.com <path> - /path/f.php <query> - id=l&type=cool,包括<参数名=参数值>对 <fragment> - new
8.1前端基础 8.1.2HTTP协议 URL的请求协议几乎都是HTTP,它是一种无状态的请求响应,即每次的请求响应之后一下接会立即断开或延 时断开.断开后,下一次请求再重新建立。这里举一个简单的例子,对http:/www.foo.com/发起一个GET请 求,如图所示: GET HTTP/1.1 Accept:image/gif,image/jpeg,image/pipeg,image/pjpeg,application/x-shockwave-flash, application/x-ms-application,application/x-ms-xbap,application/vnd.ms-xpsdocument, application/xaml+xml,*/ Accept-Language:zh-cn User-Agent:Mozilla/4.0 (compatible:MSIE 8.0;Vindows NT 5.1;Trident/4.0;.NET CLR 2.p.50727:.NET CLR3.0.4506.2152:,NET CLR3.5.30729) Accept-Encoding:gzip,deflate Hogt:¥ww.,to0,Com 图GET请求
8.1.2 HTTP协议 URL的请求协议几乎都是HTTP,它是一种无状态的请求响应,即每次的请求响应之后一下接会立即断开或延 时断开. 断开后,下一次请求再重新建立。这里举一个简单的例子,对http://www.foo.com/发起一个GET请 求,如图所示: 图 GET请求 8.1 前端基础
8.1前端基础 8.1.2HTTP协议 ● 响应如图所示: HTTP/1.1 200 OK Cache-Control:max-age=0,private,must-revalidate Content-Type:text/html;charset=utf-8 Date:Sun,31 May 2015 16:58:19 GMT ETag:"c2c87764t467093a25536e5be92b01ee Server:nginx/1.1.19 图200OK响应3et-cook1e: digiadmin2 session=BAh7BOkiD3N1c3Npb25taVQGOgZFRkkiJVI3OVUxZj1k2]dmZDhhMzI=MDQVN2EOM]M2N2 IONmV jBjsAVEkiEF9je3JmX3Rva2VuBjsARkkiMTIQWIUzMVZSTGNhQ21iUGZOeGNPTnR4Tnhyvzg3TVdBT29ZMktoQU9nTTQ9B jsARg\3D13D--4abdb60dc65c8t87ee126d8b6db9b32af7585b8b:path=/:Httponly Status:200 OK X-Request-Id:513a3a995t28tt6t0724dcca9t8e7aca X-Runt ime:0.035303 X-UA-Compatible:IE=Edge,chrome=1 Content-Length:3227 Connection:keep-alive <!DOCTYPE html> <html
8.1.2 HTTP协议 响应如图所示: 图 200 OK响应 8.1 前端基础
8.1前端基础 8.1.2HTTP协议 请求与响应一般都分为头部与体部。一般出现的POST方法中,比如包含表单的键值对。响应体就是在浏览器 中看到的内容。这里的重点在这个头部,头部的每一行都有自己的含义,下面看看几个关键点。 ·请求头中的几个关键点如下: GET HTTP/1.1 这一行必不可少,常见的请求方法有GET/POST,最后的"“HTTP/1.1”表示HTTP协议的版本号。 host:www.foo.com 这行也必不可少,表明请求的主机是什么。 User-Agent:Mozilla/5.0(Windows NT 6.1)AppleWebKit/535.19(KHTML,likeGecko) Chrome/18.0.1025.3 Safari/535.19 User-Agent用于表明身份,从这里可以看到操作系统、浏览器、器览器内核及对应的版本号等信息。 Cookie:SESSIONID=58AB420BID88800526ACCCAA83A827A3:FG=1 前在说HTTP是无状态的,那么每次在连接时,服务端如何知道你是上一次的那个?这这里通过Cookiesi进行 会话跟踪,第一次响应时设置的Cookies在随后的每次请求中都会发送出去。Cookiesi还可以包括登录认证后 的身份信息
8.1.2 HTTP协议 请求与响应一般都分为头部与体部。一般出现的POST方法中,比如包含表单的键值对。响应体就是在浏览器 中看到的内容。这里的重点在这个头部,头部的每一行都有自己的含义,下面看看几个关键点。 • 请求头中的几个关键点如下: GET HTTP/1.1 这一行必不可少,常见的请求方法有GET/POST,最后的“HTTP/1.1”表示HTTP协议的版本号。 host: www.foo.com 这行也必不可少,表明请求的主机是什么。 User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, likeGecko) Chrome/18.0.1025.3 Safari/535.19 User-Agent用于表明身份,从这里可以看到操作系统、浏览器、器览器内核及对应的版本号等信息。 Cookie: SESSIONID=58AB420BID88800526ACCCAA83A827A3: FG=1 前在说HTTP是无状态的,那么每次在连接时,服务端如何知道你是上一次的那个?这这里通过Cookies进行 会话跟踪,第一次响应时设置的Cookies在随后的每次请求中都会发送出去。Cookies还可以包括登录认证后 的身份信息。 8.1 前端基础