Web安全之web基础

目 录  (本文是学习极客时间——《Web 安全攻防实战》的笔记小结)

1、前端开发

1.1 HTML

1.2 CSS

1.3 JavaScript

2 WebApp

2.1  从浏览器输入网址到看到网页过程

2.2 常见的 Web 服务器

2.3 框架

3 Web安全总览

3.1 协议基础

3.2 Web安全攻防要点


1、前端开发

前端开发是创建Web页面或App等前端界面呈现给用户的过程。前端使用的语言有HTML,CSS,JavaScript.

1.1 HTML

是什么?

  • HTML( HyperText Markup Language)即超文本标记语言,是用来构建网页的一种语言。
  • HTML是一整套标记标签构成的标记语言,而非编程语言。
  • HTML用于承载网页的内容(文本、图片、语音、视频)。
  • 使用HTML标记标签与纯文本按规则构建的文档,通常也称为网页。

网页结构

HTML标签/元素/属性

1.2 CSS

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算
机语言。

 CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。

1.3 JavaScript

JavaScript是什么?

JavaScript,是可插入 HTML 页面,可以由绝大多数现代浏览器执行的轻量级的编程语言。

JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

它和Web安全有什么关系?

作为一种脚本语言,由它引申出的 XSS 攻击,文件上传漏洞,常年占据 OWASP Top10。

Node.js

简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好。

2 WebApp

Web App(或Web应用程序)运行于网络和标准浏览器上,基于网页技术开发实现特定功能的应用。

  • 前端:HTML,CSS,JavaScript
  • 后端:Java,Python,PHP
  • 数据库:MySQL,Oracle,MongoDB
  • 容器:Windows(IIS),Linux(Nginx, Apache)
  • 协议:TCP,DNS,HTTP,HTTPS

2.1  从浏览器输入网址到看到网页过程

  • 客户输入URL,DNS解析URL得出IP地址,根据IP地址找出对应服务器
  • 客户机通过TCP/IP协议建立到Web服务器的TCP链接
  • 客户机向Web服务器发送HTTP请求报文,请求服务器里资源的资源文档
  • Web服务器接收到客户机的HTTP请求报文,然后向客户机发出HTTP响应报文

  • 如果请求的是HTML文档,Web服务器会将对应目录下相应的HTML文档打开,然后将文档的响应内容发送给客户机。
  • 如果请求的是PHP文件,那么Web服务器自身是不能处理PHP动态语言脚本文件的,然后就会寻找并委托PHP应用服务器,PHP应用服务器会将Web服务器请求的PHP
  • 文件解析成HTML静态代码,然后将HTML静态代码发送给Web服务器,最后Web服务器会将HTML静态代码发送客户机。
  • 如果请求的资源是访问数据库,则Web服务器会通过应用服务器去访问数据库。

2.2 常见的 Web 服务器

  • Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器软件之一。
  • Nginx(发音同engine x)是一个网页服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。
  • IIS是Internet Information Server的缩写。它是微软公司主推的服务器。
  • Lighttpd是一个德国人领导的开源Web服务器软件,具有非常低的内存开销、CPU占用率低、效能好以及丰富的模块等特点。
  • Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

2.3 框架

Web应用框架(Web application framework)是一种开发框架,用来支持动态网站、网络应用程序及网络服务的开发。其类型有基于请求的和基于组件的两种框架。

 前端:jQuery、Bootstrap、React.js、Vue.js

后端:Spring MVC、Django、Flask、Tornado

3 Web安全总览

3.1 协议基础

HTTP协议定义了Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。

• 客户端连接到Web服务器

一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。

• 发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据 4部分组成。

• 服务器接受请求并返回HTTP响应

Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。

一个响应由状态行、响应头部、空行(请求空行)和响应数据(请求体)4部分组成。

• 释放连接TCP连接

若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接。

若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求。

• 客户端浏览器解析HTML内容

GET vs POST?

  • 从参数的传递方面来看,GET请求的参数是直接拼接在地址栏URL的后面,而POST请求的参数是放到请求体里面的。
  • 从长度限制方面来看,GET请求有具体的长度限制,一般不超过1024KB,而POST理论上没有,但是浏览器一般有个界限。
  • 从安全方面来看,GET请求相较于POST,因为数据都是明文显示在URL上面的,所以安全和私密性不如POST。

从本质上来说,GET和POST都是TCP连接,并无实质的区别。但是由于HTTP/浏览器的限定,导致它们在应用过程中体现出了一些不同。GET产生一个数据包,POST产生两个数据包。对于GET请求,浏览器会把http header 和 data 一并发出去,服务器响应200(返回数据)。而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok。

状态码

3.2 Web安全攻防要点

Web安全根本在于,Web应用在实现HTTP协议的过程中,没有做足够充足强大的约束,导致攻击者能够利用其中的薄弱环节进行攻击。(前端输入不可信)

安全学习交流群:687398569

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值