了解web及网络基础
Web使用一种名为HTTP的协议作为规范,完成从客户端到服务器端等一系列运作流程。
有一些用来制定HTTP协议技术标准的文档,它们被称为RFC(Request for Comments征求修正意见书)。RFC是互联网的设计文档
HTTP是不保存状态的协议,但为了实现期望的保持状态功能引入了Cookie技术。
HTTP持久连接节省通信量(也称为HTTP keep-alive或HTTP connection reuse):只要任意一端没有明确提出断开连接,则保持TCP连接状态。持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使HTTP请求和响应能够更早地结束,这样Web页面的显示速度也就相应提高了。
采用MIME机制,允许邮件处理文本、图片、视频等多个不同类型的数据。
Cookie技术是怎么实现的?
答:因为HTTP是无状态协议,所以加入Cookie技术,Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
服务器端发现客户端发送过来的Cookie后,会去检查究竟是从拿一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
实现:NAME=VALUE 赋予Cookie的名称和其值;expires=DATE指定失效期;path=PATH 指定服务器上的文件目录Cookie的适用对象;domain=域名 指定适用对象域名;Secure 仅在HTTPS安全通信时才会发送Cookie;HTTPOnly 使Cookie不能被JavaScript脚本访问。
Set-Cookie:status=enable;expires=Tue,05 Jul 2011 07:26:31 GMT;path=/;domin=.hackr.jp;
Set-Cookie:name=value;HttpOnly
Set-Cookie:name=value;secure
返回结果的HTTP状态码
HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。2XX 成功(响应结果表明请求被正常处理了)
200 OK请求正常处理;
204 No Content请求处理成功,但没有资源可返回;
206 Partial Content客户端进行了范围请求,响应报文中包含由Content-Range指定范围的实体内容。
3XX 重定向(表明浏览器需要执行某些特殊的处理以正确处理请求)301 Moved Permanently 永久性重定向,请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。
302 Found 临时性重定向。
303 See Other由于请求对应的资源存在这个另一个URI,应使用GET方法定向获取请求的资源。
304 Not Modified服务器允许请求访问资源,但未满足条件的情况。304状态码返回时,不包含任何响应的主体部分。
307 Temporary Redirect临时重定向。
4XX 客户端错误(响应结果表明客户端是发生错误的原因所在)400 Bad Request 请求报文存在语法错误。
401 Unauthorized 发送的请求需要有通过HTTP认证的认证信息。
403 Forbidden 对请求资源的访问被服务器拒绝了。
404 Not Found 无法找到请求的资源;也可以是服务器端拒绝请求且不想说明理由时使用
5XX 服务器错误(服务器本身发生错误)500 Internal Server Error:服务器在执行请求时发生了错误,也有可能是应用存在的bug或临时的故障。
503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
与HTTP协作的Web服务器
一个虚拟主机可以寄存多个不同主机名和域名的Web网站,在发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI。(就是一个服务器上可以部署多个Web 程序,但是对应的IP地址都是同一个,怎么将其区分?---在Host首部内完整指定主机名或域名的URI)
通信数据转发程序;代理、网关、隧道(用来配合服务器工作,这些应用程序和服务器可以将请求转发给通信线路上的下一站服务器,并且能接收从那台服务器发送的的响应再转发给客户端)
代理:有转发功能的应用程序,它扮演了位于客户端和服务器的“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接受服务器返回的响应并转发给客户端。使用代理的理由:利用缓存技术减少网络带宽的流量,获取访问日志等。
缓存代理:预先将资源的副本(缓存)保存在代理服务器上。代理在此接收到对相同资源的请求时,就可以将之前缓存的资源作为响应召回。
透明代理:转发请求或响应时,不对保温做任何加工的代理类型。
网关:转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会觉察,自己的通信目标是一个网关。网关是一个接收代理,网关能提高通信的安全性。
隧道:指在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。隧道可按要求建立起一条与其他服务器的通信线路。隧道的目的是确保客户端能与服务器进行安全通信。
HTTP报文首部
在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分构成。
在响应中,HTTP报文由HTTP版本、状态码、HTTP首部字段3部分构成。
HTTP/1.1通用首部字段(请求报文和响应报文双方都会使用的首部)
Cache-Control指令:通过制定Cache-Control的指令,就能操作缓存的工作机制。
Connection:控制不再转发给代理的首部字段(Connection:不再转发的首部字段);管理持久连接,HTTP/1.1默认是持久连接,Connection:close表示持续连接关闭、之前的版本默认是非持久连接,指定持久连接为Connection:Keep-Alive(客户端发送请求给服务器,服务器加上首部字段Keep-Alive及首部字段Connection后返回响应)。
Date:表明创建HTTP报文的日期和时间。
Via:为了追踪客户端与服务器之间的请求和响应报文的传输路径。
请求首部字段(从客户端往服务器端发送请求报文中所使用的字段,用于补充请求的附加信息、客户端信息、对相应内容相关的优先级等内容)
Accept:首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。Accept:text/html;q=0.9,text/htm(q表示权重,默认为1,1为最大)
Accept-Charset:通知服务器用户代理支持的字符集及字符集的相对优先顺序。Accept-Language,Accept-Encoding,Authorization。
响应首部字段(由服务器端向客户端返回响应报文中所使用的字段,用于补充响应的附加信息、服务器信息,以及对客户端的附加要求等信息)
Accept-Ranges:可处理范围请求时指定其为bytes,反之则指定其为none。
Age:告知客户端,源服务器在多久前创建了响应。
Location:使用首部字段Location可以将响应接收方引导至某个与请求URI位置不同的资源。该字段会配合3XX:Redirection的响应,提供重定向的URI。几乎所有的浏览器在接收到包含首部字段Location的响应后,都会强制性地尝试对一体式的重定向资源的访问。
Retry-After:配合状态码503或3XX Redirect响应一起使用。告知客户端应该在多久之后再次发送请求。
Proxy-Authenticate:把由代理服务器所要求的认证信息发送给客户端。WWW-Authenticate:告知客户端适用于访问请求URI所指定资源的认证方案。状态码401 响应中,肯定带有这个字段。
实体首部字段(是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等于实体相关的信息)
Allow:通知客户端能够支持Request-URI指定资源的所以HTTP方法。
Content-Encoding,Content-Language,Content-Length,Content-Location(给出与报文主体部分对于的URI )
HTTPS
HTTP的缺点:
通信使用明文(不加密),内容可能会被窃听;
不验证通信方的身份,因此有可能遭遇伪装
无法证明报文的完整性,所以有可能已遭篡改。
HTTP+加密+认证+完整性保护=HTTPS
HTTP加上加密处理和认证以及完整性保护后即是HTTPS
HTTPS 是身披SSL外壳的HTTP:HTTPS是HTTP通信接口部分用SSL和TSL协议代替而已。当使用SSL时,原来的HTTP直接和TCP通信演变为先和SSL通信,再由SSL和TCP通信。也就是在应用层之上加了一层SSL(SSL可以说是当今世界上最为广泛地网络安全技术
HTTPS也存在一些问题:当使用SSL时,它的处理速度会变慢。SSL的慢分为通信慢(要进行SSL通信)和处理速度变慢(SSL要进行加密处理,大量消耗CPU及内存等资源)。HTTPS没有一直使用除了这个原因之外,还有就是要进行HTTPS通信,证书是必不可少的。
确认访问用户身份的认证
认证就是明确访问服务器的身份,HTTP/1.1使用的认证方式:
BASIC认证:(是Web服务器与通信客户端之间进行的认证方式)Basic认证使用上不够便捷灵活,且达不到多数Web网站期望的安全性等级。
DIGEST认证:(摘要认证) 发送给对方的额知识响应摘要及由质询码产生的计算结果,所以比BASIC认证,密码泄露的可能性降低了。
SSL客户端认证:借由HTTPS的客户端证书完成认证的方式。
基于表单认证。
构建Web内容的技术
由于HTTP的瓶颈(尽可能实时地在客户端界面上显示更新过得服务器端的内容),Ajax和Comet等提高易用性的技术一定程度上使HTTP得到了改善,但HTTP协议本身的限制也令人有些束手无策。SPDY在协议级别消除HTTP所遭遇的瓶颈。WebSocket和HTTP/2.0的出现同样是为了解决HTTP的瓶颈。
HTML(CSS)->动态HTML(Java script、DOM)->Web应用(CGI、Servlet)、数据发布的格式及语言(可扩展标记语言XML、JSON)
Web攻击技术
针对Web的攻击技术(以服务器为目标的主动攻击:攻击者通过直接访问Web应用,把攻击代码传入的攻击模式和被动攻击:利用圈套策略执行攻击代码的攻击模式)HTTP就是一个通用的单纯协议机制。因此它具备较多优势,但是在安全性方面则呈劣势。在HTTP请求报文内加载攻击代码,就能发起对Web应用的攻击。
因会话管理疏忽引发的安全漏洞:
会话劫持(Session Hijack):指攻击者通过某种手段拿到了用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击的目的。
会话固定攻击:强制用户使用攻击者指定的会话ID,属于被动攻击。(用户用攻击者设定的ID去访问完成认证,攻击者伪装成这个认证的ID去访问)
跨站点请求攻击:攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。
Web 客户端的主要任务是展现信息内容。Web客户端设计技术主要包括: HTML语言、Java Applets、 脚本程序、CSS、DHTML、插件技术以及VRML技术。
与Web客户端技术从静态向动态的演进过程类似,Web 服务端的开发技术也是由静态向动态逐渐发展、完善起来的。Web服务器技术主要包括服务器、CGI、PHP、ASP、ASP.NET、Servlet和JSP技术。
HTTP:(百度百科)
简介:
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。
技术架构:
HTTP是一个客户端和服务器端 请求和应答的标准。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其他的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间肯能存在多个中间层,比如代理,网关,或者隧道。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。事实上,HTTP可以在人和其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,人和能够提供这种保障的协议都可以被其使用。
通常由HTTP客户端发送一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)返回一个状态行,比如“HTTP/1.1 200 OK”,和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其他一些信息。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。
通过HTTP或者HTTPS协议请求的资源由同一资源标识符URI来标识。