做注册会计师网站,幻影图片一键制作网站,嘉兴市南湖区建设局网站,百度上可以做中英文网站吗Web 架构安全分析
Web 工作机制及基本概念
传统 Web 架构 LAMP
网页 概念 网页就是我们可以通过浏览器上网看到的精美页面#xff0c;一般都是经过浏览器渲染过的 .html 页面#xff0c;html 语言在浏览器中渲染。其中包含了CSS、JavaScript 等前端技术。通过浏览器访问…Web 架构安全分析
Web 工作机制及基本概念
传统 Web 架构 LAMP
网页 概念 网页就是我们可以通过浏览器上网看到的精美页面一般都是经过浏览器渲染过的 .html 页面html 语言在浏览器中渲染。其中包含了CSS、JavaScript 等前端技术。通过浏览器访问的 Web 页面大部分都是 HTML 页面。 静态网页 静态的网页都是一些 .html 文件是纯文本文件。这些文件中包含html 代码。 HTMLHyperText Markup Language超文本标记语言浏览器会通过渲染引擎解释执行 HTML 语言。 HTML 语言对于 Web 容器来讲就是纯文本字符串。Web 容器只负责将 HTML 语言或其他字符串字节流从服务器传输给浏览器。静态的页面只能将信息从 Web 容器传递到浏览器|客户端|用户。
网站
网站多个网页的集合就是网站。
Web 服务器
Web Server也叫 Web 容器主要提供 Web 服务也就是常说的 httpd 服务。常见的 Web 容器有ApacheIISNginx 等。
中间件服务器交互 以上这种静态网页只能单向地给用户展示信息。随着Web 的发展信息要双向流动产生了交互的需求也就是动态网页的概念。 所谓动态就是利用Flash、PHP、ASP、JAVA、JavaScript 等技术在网页中嵌入一些可运行的脚本用户浏览器在解释HTML 页面时遇到脚本就启动运行它。脚本的使用让Web 服务模式有了双向交流的能力。 Web 服务模式也可以像传统软件一样进行各种事务处理如编辑文件、利息计算、提交表单等Web 架构的适用面大大扩展。 这些脚本可以嵌入在页面中如JS 等。也可以以文件的形式单独存放在Web 服务器的目录里如.asp、.php、.jsp 文件等。我们在静态网页与脚本都是事前设计好的一般不经常改动但网站上很多内容需要经常的更新如新闻、博客文章、互动游戏等这些变动的数据放在静态的程序中显然不适合传统的办法是数据与程序分离采用专业的数据库。 Web 开发者在Web 服务器后边增加了一个数据库服务器这些经常变化的数据存进数据库可以随时更新。当用户请求页面时脚本根据用户请求的页面涉及到动态数据的地方利用SQL 数据库语言从数据中读取最新的数据生成“完整”页面最后送给用户。浏览器端看到的虽然是纯文本HTML它后端脚本的输出运行结果。 这样功能性的脚本越来越多形成常用的工具包单独管理Web 业务开发时直接使用就可以了这就是中间件服务器它实际上是Web 容器处理能力的扩展。
数据库出现 静态网页与脚本都是事前设计好的一般不经常改动但网站上很多内容需要经常的更新如新闻、博客文章、互动游戏等这些变动的数据放在静态的程序中显然不适合传统的办法是数据与程序分离采用专业的数据库。 Web 开发者在Web 服务器后边增加了一个数据库服务器这些经常变化的数据存进数据库可以随时更新。当用户请求页面时脚本根据用户请求的页面涉及到动态数据的地方利用SQL 数据库语言从数据中读取最新的数据生成“完整”页面最后送给用户。
前后端分离架构
前端
前端指的就是浏览器端展示的内容。浏览器端有Web 页面功能逻辑数据等内容。
Web 页面HTML CSS JS功能逻辑UI JS数据展示AJAX
后端
后端为前端提供功能支持。后端开放API 接口。
页面 API 接口数据 API 接口
HTTP 协议
HTTP 概述 超文本传输协议Hyper Text Transfer ProtocolHTTP是浏览器Browser与 Web 服务器Web Server之间的通信协议是传递消息的规范和要求。 HTTP 协议是1990 年提出的当前最新版本3。HTTP 是用来将 HTML 文档从 Web 服务器传输到 Web 浏览器。 即使访问 PHP 文件浏览器端接收到并不是 PHP 文件的源代码而是 PHP 脚本的运行结果这个结果大部分是 HTML 文档。 HTTP 是一个请求和响应的协议。浏览器发出请求服务器端对请求给出回应。 HTTP 使用可靠的 TCP 连接默认端口 80。 HTTP 协议是以明文的方式在网络中传输容易被嗅探这个风险也叫明文传输漏洞。 为了解决明文传输的问题需要使用加强版的HTTP 协议 - HTTPS在HTTP 的基础上加了一个安全套接字层 SSLSecurity Socket Layer使用默认端口443。 HTTPS 也会有一些安全性问题比如HTTPS 降级“心脏滴血” 漏洞等。
HTTP 协议特点 支持浏览器/服务器模式B/S。 简单快速浏览器向服务器提出请求时只需要传送请求方法和请求路径。 灵活HTTP 允许传输任意类型的数据对象。 文件后缀名文件类型MIME 类型.html纯文本text/html.jpg图片image/jpeg.mp3音频audio/mpeg HTTP 协议是无状态的协议。
URL
URL 概念 统一资源定位符Uniform Resource LocatorURL用来告诉Web 容器浏览器所请求资源文件的路径。例如 http://10.4.7.128/cms/show.php?id32
ftp://fptuser:ftpuser10.9.69.254URL 构成 例 schema://login:passwordaddress:port/path/to/resource/?query_string#fragmentURL 组成说明示例schema协议http/––login用户名–:––password密码–address服务器地址IP| 域名10.4.7.128:––port端口号80/path/to/resource请求资源路径/cms/show.php?––query_string请求参数id32#––fragment锚点–锚点就是在a标签中实现页面内定位的# 后面的内容是不会传递服务器的。
URL 编码 浏览器或服务器 URL 所允许出现的字符是有限制的。URL 中从 path 开始只允许出现 A-Za-z0-9半角减号-下划线_句点.,波浪号~。其他字符均会被 URL 编码编码规则。 符号URL 编码#%23\%20%26%3eURL 编码是一种编码规则它会将所有字符进行 URL 编码。浏览器或服务器中对 URL 的要求特殊字符进行 URL 编码。URL 中的空格可用 %20也可以用 来代替。 http://10.9.65.213/cms/show.php?id34 and 11
http://10.9.65.213/cms/show.php?id34%20and%2011
http://10.9.65.213/cms/show.php?id34and11可以在 burpsuite 的 Decoder 模块中进行编码
HTTP 请求Request报文格式
HTTP 请求由请求行、请求头、请求正文三个部分组成。
请求行 HTTP 报文的第一行由空格字符分成三部分空格、回车和换行符不能随便出现。 列数实例说明第一列GET请求方法第二列/cms/show.php?id33资源的路径和GET 参数第三列HTTP/1.1协议/版本 常见请求方法如下 请求方法说明GET通常用于请求服务器发送某个资源POST通常用于表单提交或文件上传等功能HEAD与GET 方法类似但在服务器响应中只返回首部头部没有正文。OPTIONS用来测试服务器所支持的方法TRACE回显浏览器的请求PUTPUT 方法会向服务器写入文档DELETE请求服务器删除指定的资源
请求头 从请求报文第二行开始到第一个空行为止之间的内容。其中包含很多字段 主要字段含义Host主要用于指定被请求资源的服务器地址和端口号User-Agent客户端浏览器信息浏览器指纹Referer包含一个URL代表当前URL 的上一个URLCookie记录请求者的身份认证信息身份证Content-Type用于向接收方浏览器或服务器指示实体的介质类型数据类型MIMEContent-Length用于指明实体正文的长度以字节方式存储的十进制数字来表示AuthorizationHTTP 基本认证
请求正文
带有请求正文的一般都是 POST 方法。第一个空行开始以后的所有内容。
HTTP 常见传参方式 GET 传参向服务器提交的参数在 URL 中http://ip/cms/show.php?id33。?id33 就是通过 GET 方式向服务器提交的参数。通过 GET 向服务器传递多个参数用 连接 ?nameAJESTpass123456以此类推即可。 GET 方法在**? 后连接参数** POST 传参向服务器提交的参数在请求正文中如登录功能 POST 数据包所示向服务器提交了4个参数 连接 usernameadminimage.x23image.y23password123456HTTP 响应报文Response格式
状态行 响应报文的第一行。 列数示例解释第一列HTTP/1.1协议/版本第二列302响应状态码第三列Found描述短语 常见状态码如下 状态代码类型常见状态码1XX信息性状态码–2XX成功状态码200| 201…3XX重定向状态码302| 304…4XX客户端错误状态码404| 403…5XX服务器错误状态码500
响应头 响应报文第二行开始到第一个空行为止的所有内容其中包含了关于HTTP 响应的重要字段。 字段含义Date时间和日期ServerWeb 服务器指纹Last-Modified服务器通过这个头信息告诉浏览器资源的最后修改时间Content-Length响应正文的长度Content-Type响应正文的类型Set-Cookie服务器向浏览器端写入Cookie 信息Location重定向目标页面Refresh服务器通过Refresh 头告诉浏览器定时刷新浏览器
响应正文
响应报文从第一个空行开始到最后的所有内容。服务器返回资源的内容即浏览器接收到的 HTML 代码。
Web 会话简述 会话就是类似于浏览商品、加入购物车到支付这样一个完整的业务流程要求有一个账号始终保持登录状态也就是说这个账号完成了购买商品的业务。 HTTP 协议本身是无状态的协议也就是说HTTP 协议不会记录会话状态不同的请求之间是没有任何联系的。很多种情况浏览器与服务器之间的会话不是一个动作请求就完成了的。 希望在浏览器与服务器之间的这个交互的会话期间内服务器能够保持对浏览器会话的识别也就是保持HTTP 的状态性。
Cookie 应运而生
Cookie(Cookies) 就是指网站为了辨别用户身份进行会话跟踪而存储在用户本地终端浏览器上一小段文本数据通常进行加密的。
Cookie 机制提供事务管理的功能为服务器提供会话状态管理。例如购物车可以为每个用户实现统计实现授权策略等。 Cookie 是服务器向浏览器写入的一段文本在响应报文的Set-Cookie 字段中并存储在浏览器中。另外浏览器在访问该网站时会自动发送 Cookie在请求报文的Cookie 字段中如果服务器识别这个自动发送的 Cookie 信息也就是说服务器识别了会话。 浏览器在访问网站的时候会自动携带与该网站相关联的 Cookie 信息。
场景
去超市购物并注册了会员超市会发放一张会员卡。Cookie 就相当于这张会员卡会员卡在会员手中Cookie 在浏览器中。每次去超市买东西一种情况是直接买没有优惠另外一种情况出示会员卡并享受打折优惠同时通过购物可以获取积分积累。超市会根据会员卡记录查询积分消费情况充值金额等等信息。
固定会话攻击
窃取 F12 调出控制台输入命令 document.cookie;Cookie 信息 usernameadmin; userid1; PHPSESSIDne2q9bgvaml50b9uhvcr066fn7也可以在 Application 中查看 cookie 信息
欺骗 在未登录的情况下 cookie 中无信息 在控制台设置 cookie 信息先前登录获取的 document.cookie usernameadmin;;
document.cookie userid1;;
document.cookie PHPSESSIDne2q9bgvaml50b9uhvcr066fn7;url 中直接输入管理员页面的 url无需输入用户名和密码按下回车 直接登录成功