Web安全基础

00 Web介绍

00-00

Web本意是网,这里多指万维网(World Wide Web),是由许多互相连接的超文本系统组成的,通过互联网访问。

Web是非常广泛的互联网应用,每天都有数以亿万计的Web资源传输。

我们平时通过浏览器上网都属于Web。

PS:万维网和互联网、因特网又有什么联系呢?

00-01 Web发展史

Web1.0

初期;

  • 典型示例:

    • 门户网站

    • 个人页面

  • 安全问题:

    • SQL注入

    • 上传漏洞

    • 文件包含

    • 挂马、暗链

    • 命令执行

    • (主要危害Web服务器)

一般就是提供静态的页面给用户,而且这种信息只能够阅读,不能够修改或添加。

Web2.0

如今;

  • 典型示例:

    • 微博

    • Blog

  • 安全问题:

    • (更复杂,逐渐针对Web用户

    • 钓鱼

    • URL跳转

    • 数据劫持

    • 框架漏洞

    • CSRF

    • XSS

    • 逻辑漏洞

Web安全形势不容乐观,数量迅速增长,种类迅速增多,从针对Web服务器到Web用户,所以Web安全知识比较重要。

00-02 Web工作流程

以点餐类比

通常我们作为客户,只需要向服务员点餐、服务员上餐就可以了,而如果想要了解全过程,那Web的后续和餐厅订餐的后续也是很像的。

下面是Web提供服务的标准流程:

这里也分为客户端和服务端。

上面的安全问题也可以以此划分。

00-03 浏览器

工作原理

我们访问一个网站,输入的是一个URL(域名/网址),浏览器是无法通过我们输入的URL找到相应的Web服务器的,它只能通过IP地址才能找到Web服务器。

所以第一步,浏览器先通过URL获取Web服务器的IP地址(也称DNS解析);

第二步,才是通过解析得到的IP地址,访问Web服务器。

工作示例

我们打开浏览器,输入:https://www.cnblogs.com/Roboduster

浏览器收到这个URL,会先进行上面说到的DNS解析,通常情况下,浏览器会先向DNS服务器发送解析请求,请求查询这个URL的IP地址。

DNS服务器处理完成后,返回这个IP地址。

浏览器接收这个信息,并据此找到WEB服务器。

之后,需要根据HTTP协议进行通讯。

浏览器先发送一个HTTP请求,服务器处理完后,会返回一个HTTP响应给浏览器。

操作演示

我们打开https://www.cnblogs.com/Roboduster

按F12(自行找到开发者工具),选中网络这一格

然后我们,找到左侧的all(全部),点击,刷新该页面。

刷新后可以看到浏览器发送了很多请求。这些请求就是我们说的HTTP请求。

我们选中左侧的任何一个js文件,右侧标头(head)里可以看到请求的详细信息。响应里有这个js经过压缩的样子。预览可以看到好一点的代码风格。

同理可以查看CSS和img等各种文件格式。

最重要的是我们需要关注上方的文档(Doc),这是我们请求的主页面,我们可以在下面的计时(timing)查看请求的耗时

标头里我们可以看到远程地址,这里就是所请求的IP对应的服务器的地址

在响应里可以看到我们请求得到的数据体

00-04 留一个问题

通过上面的操作我们可能会有疑问,我们查看的是HTTP响应,这里是相应的数据流,而我们平时上网看到的是各色各样的Web页面

那么浏览器是如何将服务器返回的HTTP响应转换成我们看到的页面的呢?

这就涉及各种标准和技术:HTML、JS、CSS等;这些东西将响应渲染成特定的页面给用户。

CTF入门学习2->Web基础了解的更多相关文章

  1. CTF入门学习5-> 前端JavaScript基础

    Web安全基础 JavaScript的实现包括以下3个部分: 1)核心语法:描述了JS的语法和基本对象. 2)文档对象模型 (DOM):处理网页内容的方法和接口 3)浏览器对象模型(BOM):与浏览器 ...

  2. CTF入门学习4->前端HTML基础

    Web安全基础 02 前端开发-HTML基础 浏览器对于上网者来说是一种直观.可视化的呈现.服务器发送数据到客户端,客户端需要处理这些数据,互联网就造就了这种数据语言--HTML. 02-00 概述 ...

  3. CTF入门学习3->Web通信基础

    Web安全基础 01 Web通信 这个部分重点介绍浏览器与Web服务器的详细通信过程. 01-00 URL协议 只要上网访问服务器,就离不开URL. URL是什么? URL就是我们在浏览器里输入的站点 ...

  4. servlet入门学习之Web容器

    一.web服务器 web服务器(程序/软件) 即:www服务器或http服务器.提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL.向浏览器提供服务的程序. 1.Web服务器是指 ...

  5. SQL入门学习1-查询基础

    2-1 SELECT语句基础 SELECT语句作用 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). 重点 使用SELECT语句从表中选取数据. 为列设定显示用的别名 ...

  6. 【转】Java学习---Java Web基础面试题整理

    [原文]https://www.toutiao.com/i6592359948632457731/ 1.什么是Servlet? 可以从两个方面去看Servlet: a.API:有一个接口servlet ...

  7. Qt快速入门学习笔记(基础篇)

    本文基于Qter开源社区论坛版主yafeilinux编写的<Qt快速入门系列教程目录>,网址:http://bbs.qter.org/forum.php?mod=viewthread&am ...

  8. Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)

    Python的变量和数据类型 1 .python的变量是不须要事先定义数据类型的.能够动态的改变 2. Python其中一切皆对象,变量也是一个对象,有自己的属性和方法 我们能够通过 来查看变量的类型 ...

  9. CTF入门指南(0基础)

    ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web 密码学 pwn 程序的逻辑分析,漏洞利用windows.linux.小型机等 misc 杂项,隐写,数 ...

随机推荐

  1. FastAPI(54)- 详解 Request 请求对象

    背景 前面讲了可以自定义 Response,那么这里就讲下请求对象 Request 可以通过 Request 来获取一些数据 获取请求基础信息 @app.get("/base") ...

  2. Java网络爬虫技术《二》Jsoup

    Jsoup 当我们成功抓取到页面数据了之后,还需要对抓取的数据进行解析,而刚好,Jsoup 是一款专门解析 html 页面的技术.Jsoup是一款基于 Java 的HTML 解析器,可直接解析某个 U ...

  3. Java基础- 重写,重构和重载

    重写也称为覆盖, 是指子类与父类的方法名相同但是可以有不同的权限(子类权限需大于父类),返回值(J2SE 5.0以后增加的功能,且子类的返回值必须是父类返回值的子类)或者方法实现. 重写体现了子类补充 ...

  4. 洛谷4103 HEOI2014大工程(虚树+dp)

    又是一道虚树好题啊 我们建出来虚树,然后考虑dp过程,我们分别令\(sum[x],mndis[x],mxdis[x],size[x]\)为子树内的路径长度和,最短链,最长链,子树内关键点个数. 对于一 ...

  5. SpringBoot整个Druid

      Druid简介 Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池. Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0.DBCP 等 ...

  6. javascript-原生-结构

    1.获取用户输入内容的方法 window.prompt("提示信息","默认值"); 获取用户输入内容(字符串类型),返回用户输入内容. 2.顺序结构:所有语句 ...

  7. [no_code][Beta]发布声明报告

    $( "#cnblogs_post_body" ).catalog() 软件下载 一个全新的超简易的OCR表单识别工具 轻松拍照,实现手写表格识别 一键打开,支持多种应用打开你的表 ...

  8. 【二食堂】Beta - Scrum Meeting 6

    Scrum Meeting 6 例会时间:5.19 18:30~18:50 进度情况 组员 当前进度 今日任务 李健 1. 实体标注的优化基本已经实现,后端有bug,还没有进行接口调用 issue 2 ...

  9. 如何使用原生的Ribbon

    什么是Ribbon 之前分析了如何使用原生的Feign,今天我们来研究 Netflix 团队开发的另外一个类库--Ribbon. Ribbon 和 Feign 有很多相似的地方,首先,它们本质上都是 ...

  10. Qt信号与槽传递自定义数据类型——两种解决方法

    信号与槽作为qt中的核心机制,在qt应用开发中经常会用的,但是原生的信号与槽连接传参,只支持基本的数据类型,比如char,int, float,double. 如果想要在信号与槽之间传递自定义参数,比 ...