月度归档:2018年01月

Web安全学习笔记第一章

Web安全时代

1.0时代:针对服务器进行攻击,主要包括SQL注入,上传漏洞,命令链接等攻击方式

2.0时代:针对服务器以及用户,新增XSS、CSRF等攻击方式

Web工作流程

Web工作方式类似餐厅点餐,点餐-上菜。这是用户能看到的部分。而服务员接到点餐后,会把菜单拿给厨师,然后厨师做好菜后会给服务员说,然后服务员就拿到做好的菜品就上菜给客人。

而Web工作流程与上面相似,用户通过浏览器输入网址,比如baidu.com,浏览器会通过DNS服务器找到baidu.com对应的服务器IP地址,服务器接到请求后与数据库交互,然后得到结果,并返回给用户。

浏览器并不能直接通过我们输入的网址直接与服务器通讯。当我们输入需要访问的网址后,浏览器会把我们的网址通过DNS服务器查询,得到服务器的IP地址,然后服务器直接与这个IP地址进行通讯的。

URL协议

浏览器与服务器通讯也需要一种方法,这个方法就是URL协议,它的中文翻译是“统一资源定位符”,它的作用是以简洁的方式从互联网上得到资源,并且让每个文件都有一个唯一的URL地址。

URL格式大致为:

协议://用户名:密码@域名:端口号/目录/文件名.文件后缀?参数=值#锚点
  1. 协议:URL支持许多协议,我们常见的协议有HTTP、FTP、MAILTO、HTTPS协议,而协议的作用就是告诉浏览器将如何处理要打开的文件。
  2. 用户名和密码:如果服务器需要授权才能访问就在这里输入
  3. 域名:这里填写你需要访问的网站域名,比如www.baidu.com或者image.baidu.com
  4. 端口号:如果是http协议,默认的80端口是不需要填写的,其他的协议根据相应的协议端口进行填写
  5. 目录以及文件名、后缀:这里是访问服务器中的文件路径。
  6. 参数:这里是需要传递给服务器的一些值,服务器会根据这些传递的值作出响应。
  7. 锚点:锚点的作用是定位当前文件中的哪一个位置。

HTTP协议

HTTP协议就是web中最重要的协议,也是使用应用最广泛的协议,每次我们我们访问网页都进行了http请求。

一个完整的http请求包含三部分:

  1. 请求行

    包含请求的方法以及URL、协议版本,比如:GET /test/xx.php?id=123444 HTTP/1.1

  2. 请求头

    常见内容包含:

    HOST:主机地址(域名)比如:www.xsscript.com。

    User-Agent:让服务器能够识别用户的包含操作系统及版本、CPU、浏览器、语言等信息。

    Cookie:代表用户凭证,服务器可以根据这个用户凭证来识别你是谁。

    Referer:服务器可以通过Referer来判断用户的来源,也就是你从什么地方过来的。

  3. 请求正文

    GET请求没有请求正文,所有的参数均含在请求行和头中,POST有请求正文

一个完整的http响应包含三部分:

  1. 状态行

    包含协议和版本、以及服务器状态的响应编码。比如HTTP/1.1 200 OK表示服务器响应成功

  2. 响应头

    常见内容包含:

    Server:HTTP服务器的版本

    Content-Type:响应正文类型,让浏览器根据类型进行处理然后显示给用户

    Set-Cookie:如果用户没有Cookie或者Cookie需要更新,服务器会在响应包中含此内容,提示浏览器设置或更新Cookie。

    Content-Language:响应正文的语言

    Content-Length:响应正文的长度。

    Location:当用户访问www.baidu.com然后响应包中包含了此内容的时候,会跳转到相应的网址。

  3. 响应正文

    发送给用户浏览器处理的正文内容。

参考

Web安全工程师

MDN web docs