@AlexWuYh
2019-10-31T09:08:34.000000Z
字数 2854
阅读 81
HTTP
<method> <request-URL> <version>
<headers>
<entity-body>
200 | OK | 客户端请求成功 |
---|---|---|
301 | Moved Permanently | 请求永久重定向 |
302 | Moved Temporarily | 请求临时重定向 |
304 | Not Modified | 文件未修改,可以直接使用缓存的文件 |
400 | Bad Request | 由于客户端请求有语法错误,不能被服务器所理解 |
401 | Unauthorized | 请求未经授权. 这个状态码必须和www-authenticate报头域一起使用 |
403 | Forbidden | 服务器收到请求,但是拒绝提供服务.服务器通常会在响应正文中给出不提供 服务的原因 |
404 | Not Found | 请求资源不存在 |
500 | Internal Server Error | 服务器发生不可预期的错误,导致无法完成客户端的请求 |
503 | Service Unavailable | 服务器当前不能处理客户端的请求,在一段时间后,服务器可能会恢复正常 |
客户端请求:
GET / HTTP/1.1
Host: www.sina.com.cn:80
If-Modified-Since:Thu, 4 Feb 2010 20:39:13 GMT
Connection: Close
服务器响应:
HTTP/1.0 304 Not Modified
Date: Thu, 04 Feb 2010 12:38:41 GMT
Content-Type: text/html
Expires: Thu, 04 Feb 2010 12:39:41 GMT
Last-Modified: Thu, 04 Feb 2010 12:29:04 GMT
Age: 28
X-Cache: HIT from sy32-21.sina.com.cn
Connection: close
Keep-Alive: timeout=5, max=100
, 表示TCP通道可以保持5s,这个长连接最多接收100次请求.会话: 客户端发出请求到服务器响应请求的过程.
会话跟踪: 监视同一个用户对服务器的连续请求和接收响应.
为什么需要: HTTP协议是无状态的,不能保存客户信息,需要判断是否为同一用户,才有了会话跟踪技术.
常用的方法:
URL重写: URL结尾添加一个附加数据以标识该会话,把会话ID通过URL信息传递来区分不同的用户.
隐藏表单域: 会话ID添加到HTML表单元素中提交,不在客户端显示.
Cookie: Cookie是Web服务器发送给客户端的一小段信息.客户端每次请求,服务器将Cookie发送到客户端保存以便下次使用.客户端请求时读取信息发送到服务器,进而进行用户的识别.
有2种方式保存Cookie:
a. 临时Cookie: 保存在客户端内存中,浏览器关闭后Cookie对象将消失.
b. 永久Cookie: 保存在客户端磁盘中,只要访问该网站,将读取Cookie发送.前提是Cookie在有效期内.
Session: 每个用户不同的Session, 每个用户独享, 可以存放信息. 在服务端创建一个Session对象,产生一个SessionID来标识Session对象,将SessionID放入Cookie中发送到客户端,下一次访问,SessionID发送到服务器,在服务器进行识别不同的用户.
CSRF 跨站请求伪造, Cross-site request forgery. 如何防范CSRF攻击:
XSS 跨站脚本攻击, Cross Site Scripting. XSS是实现CSRF诸多途径的一条,通过XSS实现的CSRF称为XSRF. 如何防范XSS攻击:
最简单直接的办法: 过滤用户的输入.
如果不需要用户输入 HTML 的时候, 可以直接对用户的输入进行 HTML escape.
当我们需要用户输入 HTML 的时候, 需要对用户输入的内容做更加小心细致的处理. 仅仅粗暴地去掉 script 标签是没有用的, 任何一个合法 HTML 标签都可以添加 onclick 一类的事件属性来执行 JavaScript. 更好的方法可能是, 将用户的输入使用 HTML 解析库进行解析, 获取其中的数据. 然后根据用户原有的标签属性, 重新构建 HTML 元素树. 构建的过程中, 所有的标签和属性都只从白名单中拿取.