Web安全实践1:搭建HTTPS(1)

时间:2022-01-15 来源:未知网络 作者:996建站网

为了讨论Web安全,我们首先得有一个网站。我们使用LAMP搭建网站。网络上的教程很多,我们会快速的过一下LAMP基本网站搭建,然后重点讨论的是HTTPS。

  1. HTTP

说起Web安全,大家的第一反应是什么呢?很多人应该马上想到的就是HTTPS。

为啥呢?因为我们https天天用啊,譬如说现在浏览器的左上角,不就是https么?旁边还有一把小锁。

问题是,什么是HTTPS?HTTPS就是HTTP secure,那接下来的问题是,什么是HTTP?

HTTP的全称是Hyper Text Transfer Protocol。什么是Hyper Text呢?

Hyper Text的名字由来应该是HTML,Hyper Text Markup Language。发明HTTP协议和HTML语言,以及提出URI的人都是同一人。

Web安全实践1:搭建HTTPS(1)插图

早期的网页长这样:Programming with pcap;

Web安全实践1:搭建HTTPS(1)插图1

世界上第一个网站中的页面

Web是由Tim在欧洲核子研究组织(CERN)期间于1989~1991年发明的,初始目的是互联CERN内部的文档。在1990年10月之前,他实现了三种基础技术:命名方案(URI),通信协议(HTTP)和用于创建网页(HTML)的语言,这些技术至今仍然是当今网络的基础。同年12月,Tim以自己的NeXT电脑为服务器,架设了人类历史上第一个网站,网站域名为Info.cern.ch,至今还保留着。也即,他一人发明了万维网、第一个网络浏览器、以及允许网络扩展的基本协议和算法。

HTML我们留着后面讨论,HTTP我们使用两个操作来理解一下。

Web安全实践1:搭建HTTPS(1)插图1

第一个是直接使用浏览器,F12,打开console。我们可以看到类似于下面的内容。一个是Request:

Web安全实践1:搭建HTTPS(1)插图1

然后是response:

Web安全实践1:搭建HTTPS(1)插图1

第二个是使用命令行。

Web安全实践1:搭建HTTPS(1)插图1

虽然我们每天都在使用HTTP(s),但是感觉对它还是不熟悉,主要原因就是因为浏览器的封装太好了。浏览器在背后偷偷做了好多事情,都没让用户知道。

Web安全实践1:搭建HTTPS(1)插图1

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

Web安全实践1:搭建HTTPS(1)插图1

Http请求消息结构

具体怎么理解呢?

第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.

GET说明请求类型为GET, 1.html为要访问的资源,最后一部分说明使用的是HTTP1.1版本。

第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息

第三部分:空行,请求头部后面的空行是必须的

即使第四部分的请求数据为空,也必须有空行。

第四部分:请求数据也叫主体,可以添加任意的其他数据。

以上例子的请求数据都为空。

Web安全实践1:搭建HTTPS(1)插图2

当然也可以使用POST方法来获取数据。

Web安全实践1:搭建HTTPS(1)插图2

GET和POST的区别后面再讨论。

可以继续尝试PUT方法。

Web安全实践1:搭建HTTPS(1)插图2

出错了。 可以去/var/log/apache2查看错误日志:

Web安全实践1:搭建HTTPS(1)插图3

然后更改一下请求的内容:

Web安全实践1:搭建HTTPS(1)插图2

这时候发现返回的信息发生了变化。说明是权限有问题。然后开始更改权限。具体操作如下:

启动了一些Module。

Web安全实践1:搭建HTTPS(1)插图3

Web安全实践1:搭建HTTPS(1)插图3

【DAV:Distributed Authoring and Versioning】

更改了配置文件:

Web安全实践1:搭建HTTPS(1)插图4

当然,还需要把/var/www改成777权限。之后,可以成功地使用PUT命令:

Web安全实践1:搭建HTTPS(1)插图4

2. URI

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息。URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。

关于URI和URL的区别,如果拿人做例子,譬如在我们这个教室,所以人的名字都不相同,通过名字这个字符串就可以标识出唯一的一个人。在现实当中名字会重复的,所以URI是身份证号,通过身份证号能让我们唯一确定一个人。
那统一资源定位符URL是什么呢。
江苏省/苏州市/**路/唯真楼/103教室/第五排/第三个人
同时呢,这个字符串同样标识出了唯一的一个人,起到了URI的作用,所以URL是URI的子集。

这里我们来详细地分析一下URL。

Web安全实践1:搭建HTTPS(1)插图4

我们来看一下,它为什么叫做URL。它包括:

  • 协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符。可以看一些其他协议譬如data和javascript的例子
data:,Hello%2C%20World!
简单的 text/plain 类型数据

data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D
base64 编码过的数据

data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E
一个HTML文档源代码 <h1>Hello, World</h1>

data:text/html,<script>alert('hi');</script>
一个会执行 JavaScript alert 的 HTML 文档。注意,script 闭标签是必须的。

data:image/gif;base64,R0lGODlhMwAxAIAAAAAAAP/// yH5BAAAAAAALAAAAAAzADEAAAK8jI+pBr0PowytzotTtbm/DTqQ6C3hGX ElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgd LbXsFZYmSMPnHLB+zNJFbq15+SOf50+6rG7lKOjwV1ibGdhHYRVYVJ9Wn k2HWtLdIWMSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbF ZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw==

javascript:alert(1)

Web安全实践1:搭建HTTPS(1)插图5

微信扫一扫 关注公众号

微信扫一扫 使用小程序

百度扫一扫 使用小程序