HTTP协议基础

Web宏观攻击

一个动态Web的宏观攻击可以分为以下几种:

  • Network
  • OS
  • Web Server Web服务器端
  • APP Server 移动服务器端
  • Web Application Web应用程序
  • Database 数据库,比如sql注入
  • Browser 浏览器,比如同源策略,沙箱技术

当今的web攻击类型有几百种,但大部分是针对Web应用程序和数据库的攻击。


HTTP协议基础

明文

HTTP协议是明文协议,无内建的机密性安全机制,简单的嗅探或代理截断便可查看全部明文信息。
而HTTPS也只是对传输的过程进行了加密而已,不代表整个数据流的传递过程都是安全的,只是提高了传输层的安全而已,对于任意节点都是可以发起攻击。(比如中间人攻击,对网络传输的任意节点劫持,然后更改网络数据后再投放到网络中去。)

无状态

每一次客户端和服务器端的通信都是独立的过程,http协议是不可跟踪用户行为信息的,但是web应用却是需要跟踪客户端会话(既是多步通信),此时便需要cookie和session的概念了。
服务器通过cookie来验证用户,然后使用sesison用于在用户身份验证后跟踪用户行为轨迹。若是不使用cookie那么客户端的每次请求都要进行身份验证,显然这是不现实的。
基本上session id和cookie是等同的,客户端可以拿到的是session id。

HTTP header

一次http请求会包含多个header信息,这里只了解与安全相关的header信息。

  • Set-Cookie:服务端发送给客户端的Session ID(存在被窃取的风险)
  • Content-Length:响应body部分的字节长度,应用场景:用于验证表单暴力破解web账号登陆密码是否成功。
  • Location:重定向用户到另一个页面,可识别身份认证后允许访问的页面。

前三个都是响应头,下面是常用的请求头

  • Cookie:客服端发回给服务器证明用户状态的信息(使用键值对的形式存放 cookie1:data;cookie2:data...)
  • Referrer:发起新请求之前用户位于哪个页面,服务器基于此头的安全限制很容易被修改绕过。

状态码

服务器端响应的状态码表示响应的结果类型,5大类50多个具体响应码。
它们分别是100系列,200系列,300系列,400系列,500系列。

  • 100s:服务器响应的信息,通常表示服务器还有后续处理,基本不会单独出现。
  • 200s:请求被服务器成功接受并处理后返回的响应结果。
  • 300s:重定向,通常再身份认证成功后重定向到一个安全页面(301:表示永久重定向,302临时重定向)
  • 400s:表示服务器不接受客客户端,客服端请求错误:
  • 401:表示需要身份认证。
  • 403:表示拒绝访问,不具备访问权限。
  • 404:目标未发现。
  • 500s:服务器内部错误(503:表示服务不可用)

当然状态码远远不至于这些,可以通过https://www.w3.org/,这个网站...

相关推荐