五、web应用程序技术——web功能

news2024/12/31 6:38:55

文章目录

  • 一、服务器端功能
    • 1.1 SQL
    • 1.2 XML
    • 1.3 web服务
  • 二、客户端功能
    • 2.1 HTML
    • 2.2 超链接
    • 2.3 表单
    • 2.4 CSS
    • 2.5 JavaScript
    • 2.6 文档对象模型
    • 2.7 Ajax
    • 2.8 JSON
    • 2.9 同源策略
    • 2.10浏览器拓展技术

一、服务器端功能

  早期的web站点由各种静态资源组成,如HTML页面与图片。当用户提交请求时,只需将它们加载到web服务器,在传送给用户即可。每次用户请求某个特殊的资源时,服务器都会返回相同的内容。

  如今的web应用程序主要向用户提供动态生成的内容。当用户请求一个动态资源时,服务器会动态建立响应,每个用户都会收到满足其特定需求的内容。动态内容由在服务器上执行的脚本或其他代码生成,这些脚本收到各种输入,并处理输入,然后向用户返回输出结果

  当用户的浏览器提出访问动态资源请求时,它不仅仅要求访问该资源的副本,还会随请求提交各种参数。正是这些参数保证了服务器端应用程序能够生成各种适合用户需求的内容。HTTP请求使用以下几种方式向应用程序传送参数:

  • 通过URL查询字符串;
  • 通过HTTPcookie;
  • 通过REST风格的URL的文件路径;
  • 通过在消息主体中使用POST方法。

  像常见的计算机软件一样,web应用程序也在服务器端使用大量技术实现其功能。这些技术包括:

  • 脚本语言,如php、asp、VBScript等;
  • web应用程序平台,如ASP.NET和Java;
  • Web服务器,如Apache、IIS;
  • 数据库,如MS-SQL、Oracle和Mysql;
  • 其他后端组件,如文件系统、基于SOAP的web服务和目录服务。

Java Servlet是应用程序服务器的一个对象,它接收客户端的HTTP请求,并返回HTTP响应。

1.1 SQL

  结构化查询语言(SQL)用于访问MySQL、MS-SQL等关系数据库中的数据。关系数据库将数据存储在表中,每个表由许多行和列组成,每一列代表一个数据字段,每一行则代表为这些字段中的一些或全部字段分配的值

1.2 XML

  可拓展标记语言(XML)格式将文档分为内容(数据)和标记(给数据做注解)。标记主要用标签表示,它们包括起始标签、结束标签和空元素标签。

在这里插入图片描述

  起始标签和结束标签成对出现,其中可包含文档内容和子元素;

在这里插入图片描述

  同时,标签可以包含以名/值对出现的属性。
在这里插入图片描述
  XML之所以可拓展,是因为它们可以使用任意数量的标签和属性名。XML文档通常包含文档类型定义(DTD),DTD定义文档中使用的标签、属性及其组合方式。

1.3 web服务

  实际上,许多应用程序本质上就是一组后端web服务的GUI前端。Web服务使用简单对象访问协议(SOAP)来交换数据。通常,SOAP使用HTTP协议来传送消息,并使用XML格式表示数据。典型的SOAP请求如下所示:
在这里插入图片描述
  在使用浏览器访问web应用程序时很有可能遇到SOAP,服务器端应用程序使用它与各种后端系统进行通信。如果将用户提交的数据直接组合到后端的SOAP消息中,就可能产生于SQL注入类似的漏洞。
  正常情况下,服务器会以web服务描述语言(WSDL)格式公布可用的服务和参数,攻击者可以使用soapUI之类的工具、基于已发布的WSDL文件创建示例请求,以调用身份验证web服务,获得身份验证令牌,并随后提出任何wen服务请求。

二、客户端功能

  服务器端应用程序要接收用户输入与操作,并向用户返回其结果,它必须提供一个客户端用户界面。由于所有web应用程序都通过web浏览器进行访问,因此这些界面共享一个技术核心。近年来,应用程序利用客户端技术的方式也一直在发生急剧变化。

2.1 HTML

  HTML是建立web界面所需的核心技术,它是一种用于描述浏览器所显示的文档结构的基于标签的语言。

2.2 超链接

  客户端于与服务器之间的大量通信都是由用户单击超链接驱动的。web应用程序中的超链接通常包含预先设定的请求参数,这些数据项不需用户输入,而是由服务器将其插入用户单击的超链接的目标URL中。

2.3 表单

  HTML表单是一种常用的收集用户输入的机制,允许用户通过浏览器提交任意输入。以下是一个典型的HTTP表单:
在这里插入图片描述

  当用户在表单中输入值并单击“提交”按钮时,浏览器将提出以下请求:

在这里插入图片描述

  在这个请求中,有几个要点说明了请求如何使用各种因素控制服务器端处理过程。

  • 因为HTML表单标签中包含一个指定POST方法的属性,浏览器就使用这个方法提交表单,并将表单中的数据存入消息主体中。
  • 除用户输入的两个数据外,表单中还包含一个隐藏参数(redir)与一个提交参数(submit)。这两个参数都在请求中提交,服务器端应用程序可使用它们控制其逻辑。
  • 负责提交表单的目标URL中也包含一个预设的参数(app),该参数可用于控制服务器端的处理过程。
  • 请求中包含一个cookie参数,服务器在早先的响应中将其发布给浏览器,该参数可用于控制服务器端的处理过程。

  前面的请求中包含一个消息头,它规定消息主体的内容类型为x-www-form-urlencode。这表示和URL查询字符串一样,消息主体的参数也以名/值对表示。

multipart/form-data是提交表单数据时可能遇到的另一种类型的内容,应用程序可在表单标签的enctype属性中要求浏览器使用多部分编码,使用这种编码形式,请求中的content-type消息头还会指定一个随机字符串,用它来分隔请求主体中的参数。

  例如,如果表单指定多部分编码,其生成的请求如下所示:
在这里插入图片描述

2.4 CSS

  层叠样式表(CSS)用于指定HTML内容在屏幕上的呈现方式。如今,CSS本身正不断成为安全漏洞的来源,并且被攻击者作为传送针对其他类型漏洞的入侵程序的有效手段。

2.5 JavaScript

  JavaScript常用于执行以下任务:

  • 确认用户输入的数据,然后将其提交给服务器避免因数据包含错误而提交不必要的请求;
  • 根据用户操作动态修改用户界面,例如,执行下拉菜单和其他类似于非web界面的控制;
  • 查询并更新浏览器内的文档对象模型(Document Object Model,DOM),控制浏览器行为。

2.6 文档对象模型

  文档对象模型(DOM)是可以通过其API查询和操作的HTML文档的抽象表示形式。DOM允许客户端脚本按照id访问各个HTML元素并以编程方式访问这些元素的结构,DOM还可用于读取和更新当前URL和cookie等数据。另外,DOM还包含一个事件模型,以便于代码钩住各种事件,如表单提交。浏览器DOM操作是基于Ajax的应用程序采用的关键技术。

2.7 Ajax

  Ajax是一组编程技术,用于在客户端创建旨在模拟传统桌面应用程序的用户界面。Ajax是“异步JavaScript和XML”的缩写。
  最早的web应用程序基于完整的页面。每个用户操作,如单击链接或提交表单,都会启动窗口级别的导航事件,导致服务器加载新页面。使用Ajax,一些用户操作将由客户端脚本代码进行处理,并且不需要重新加载整个页面。相反,脚本会在“后台”执行请求,并且通过会受到较小的响应,用于动态更新一部分用户界面。

例如,在基于Ajax的购物应用程序中,如果用户单击“添加到购物车”按钮,应用程序将启动一个后台请求,在服务器端更新用户的购物车记录,随后,一个轻量级响应会更新用户屏幕上显示的购物车中的商品数量,浏览器中的整个页面几乎保存不变。

  Ajax使用的核心技术为xmlHttpRequest,其已经被转化为一个本地JavaScript对象,客户端脚本可以通过该对象提出“后台”请求,而无须窗口级别的导航事件。尽管其名称仅包含请求,但xmlHttpRequest允许在请求中发送以及在响应中接受任意数量的内容。

  另外,使用Ajax会增加典型应用程序的受攻击面,在设计针对其他漏洞的更加高效的入侵程序时,攻击者也可以利用Ajax技术。

2.8 JSON

  JavaScript对象表示方法(JSON)是一种可用于对任意数据进行序列化的简单数据交换格式。JSON可直接由JavaScript解释器处理,Ajax应用程序经常使用JSON,以替换最初用于数据传输的XML格式。

通常,用户执行某个操作,客户端JavaScript将使用xmlHttpRequest将该操作传送到服务器,服务器则返回一个包含JSON格式的数据的轻量级响应。然后,客户端脚本将处理这些数据,并对用户界面进行相应地更新。

2.9 同源策略

  同源策略是浏览器实施的一种关键机制,主要用于防止不同来源地内容相互干扰。基本上,从一个网站收到的内容可以读取并修改从该站点收到的其他内容,但不得访问其他站点收到的内容

例如,如果不使用同源策略,当不知情的用户浏览到某个恶意网站时,在该网站上运行的脚本代码将能够访问这名用户同时访问的任何其他网站的数据和功能。这样,该恶意网站就可以从用户的网上银行进行转账、阅读用户的web邮件,或在用户网上购物时拦截他的信用卡信息。为此,浏览器实施限制,只允许相同来源的内容进行交互。

  关于同源策略,需要了解以下主要特点:

  • 位于一个域中的页面可以向另一个域提出任意数量的请求(例如,通过提交表单或加载图像),但该页面本身无法处理上述请求返回的数据。
  • 位于一个域中的页面可以加载来自其他域的脚本并在自己的域中执行这个脚本,这是因为脚本被假定为包含代码,而非数据,因此跨域访问不会泄露任何敏感信息。
  • 位于一个域中的页面无法读取或修改属于另一个域的cookie或其他DOM数据。

2.10浏览器拓展技术

  除Javascript功能外,一些web应用程序还通过采用浏览器拓展技术,使用定制代码从而各方面拓展浏览器的内置功能,这些组件可配置为字节码,又适当的浏览器插件执行,或需要在客户计算机上安装可执行程序。在攻击web应用程序时,可能遇到的而客户端技术包括:

  • Java applet
  • ActiveX控件
  • Flash对象
  • Silverlight对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/859693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主数据管理案例-中国外运

1、 背景介绍及难点分析 作为世界领先的物流行业整合商、端到端的全程供应链解决方案和一站式物流服务提供商,中国外运非常重视信息化建设,先后投资建设了 300多个信息系统,为中国外运的内部管理和业务运作提供 IT 支持和保障。 由于缺乏统一…

当我准备出门时,发现了......我可以用Python实现12306自动买票

前言 不知道大家有没有之前碰到这样的情况,打算去某一个地方当你规划好了时间准备去买票的时候,你想要的那一列往往没有你想要的票了,尤其是国庆七天假和春节半月假,有时候甚至买不到规定计划时间内的票,真的是太烦躁…

数据分析-python学习 (1)numpy相关

内容为:https://juejin.cn/book/7240731597035864121的学习笔记 导包 import numpy as np numpy数组创建 创建全0数组,正态分布、随机数组等就不说了,提供了相应的方法通过已有数据创建有两种 arr1np.array([1,2,3,4,5]) 或者datanp.loadt…

vxe-grid\table 自定义动态列排序设置

实现动态加载的表格数据,根据设置动态控制指定的某些字段排序功能;如下图所示; 代码实现:标签内添加属性; :sort-config"{trigger:cell, defaultSort: {field: , order: desc}, orders:[desc, asc]}" sort-…

LinuxC编程——线程

目录 一、概念二、进程与线程的区别⭐⭐⭐三、线程资源四、函数接口4.1 线程创建4.2 线程退出4.3 线程回收4.3.1 阻塞回收4.3.2 非阻塞回收 4.4 pthread_create之传参4.5 练习 一、概念 是一个轻量级的进程,为了提高系统的性能引入线程。 进程与线程都参与cpu的统一…

这些可以将音频翻译成文字的工具你值得拥有

你是否曾经遇到过这样的情景:你收到了一段包含外国人发言内容的会议音频,但是由于自己的外语水平一般而却无法理解其中的外语内容?别担心,现在有一些神奇的翻译音频文件的软件可以帮助你解决这个问题!如果你还不知道翻…

电脑必备的3款简单好用小工具,建议收藏使用!

​在当今社会,电脑已成为我们工作、学习和娱乐的重要工具。除了拥有一台电脑,一些小工具的加入可以大大提升我们的效率和使用体验。 整理了 3 款比较实用的软件,个人觉得非常实用。,它们将让你的电脑使用更加便捷、高效。不管你是…

使用Prisma访问数据库

首先,确保你已经安装了 Prisma CLI。你可以使用以下命令进行安装: npm install prisma --save-dev接下来,你需要初始化 Prisma 项目,最后一个参数需要指定数据库类型,如postgresql,sqlist,mysql…

深入浅出对话系统——检索式对话系统进阶方法

引言 本文介绍检索式对话系统进阶方法,主要介绍两篇论文工作。 Fine-grained Post-training for Improving Retrieval-based Dialogue Systems 这里的post-training是定义在pre-training和fine-turning中间的阶段,具体的思想是用一些特定领域的数据去…

ControlNet

2023.8.10 Adding Conditional Control to Text-to-Image Diffusion Models 对于 T2I 扩散模型添加 条件控制 相关联比较大的几篇论文: 0.Abstract 可以为预训练的扩散模型提供额外的输入条件控制。不需要很多计算资源。 即使在小数据集上,也具有鲁棒…

中间人攻击与 RADIUS 身份验证

在数字时代,中间人(MitM)攻击已成为一种日益严重的威胁。根据网络安全风险投资公司的网络安全统计数据,预计到2025年,网络犯罪每年将给世界造成10.5万亿美元的损失,比2015年的3万亿美元大幅增加。这种令人震…

企业微信消息模板通过中转页面(h5)判断跳转pc还是跳小程序

需求:甲方要根据不同的端跳转不同端的详情页面,为什么要这样,是应为每次在PC端点击消息,都要扫码登录进入小程序,不想进入小程序,要打开PC端 1、在pc端的微信中点击消息,则打开PC后台管理系统 …

Telegram营销,全球跨境电商都在研究的营销策略

Telegram 目前有7 亿月活跃用户。作为一个如此流行和广泛的即时通讯平台, Telegram 已成为企业和客户沟通的重要即时通讯工具。 为了使企业能够快速有效地覆盖目标受众,Telegram 不断改进平台,提供一系列功能,例如可定制的自动化…

内网穿透实战应用-——【如何在树莓派上安装cpolar内网穿透】

如何在树莓派上安装cpolar内网穿透 文章目录 如何在树莓派上安装cpolar内网穿透前言1.在树莓派上安装cpolar2.查询cpolar版本号3.激活本地cpolar客户端4.cpolar记入配置文件 前言 树莓派作为一个超小型的电脑系统,虽然因其自身性能所限,无法如台式机或笔…

Vue Baidu Map--自定义点图标bm-marker

自定义点图标 将准备好的图标放到项目中 使用import引入&#xff0c; 并在data中进行声明 <script> import mapIconRed from ./vue-baidu-map/img/marker_red_sprite.png export default {data() {return {mapIconRed,}}, } </script>在<bm-marker>中加入参…

【C++】map和set

目录 一、容器补充1.序列式容器与关联式容器2.键值对3.树形结构的关联式容器 二、set1.set的介绍2.set的使用3.multset的介绍4.multset的使用 三、map1.map的介绍2.map的使用3.multimap的介绍4.multimap的使用 一、容器补充 1.序列式容器与关联式容器 我们已经接触过STL中的部…

FISCO BCOS V3.0 Air建链体验——对比V2.9建链差别

前提 好久不见&#xff0c;最近因为毕业的手续等问题&#xff0c;一直都没有更新&#xff0c;FISCO BCOS第二季task挑战赛如期展开啦&#xff0c;因为毕业的问题&#xff0c;也是非常遗憾的错过了上一期的task挑战赛&#xff0c;这一期一定双倍挑战&#xff0c;hhhhhh Air版本…

spring源码之--启动入口

前面的文章搭建过spring源码&#xff0c;这里暂时不做展开讲解 spring源码搭建-略 1、那么spring的源码入口从哪查看呢&#xff1f;springboot的源码是如何启动spring的源码呢&#xff1f;追着这个疑问总结了一下如下&#xff1a; 在spring源码中直接添加一个模块&#xff0c…

Jay17 2023.8.10日报

笔记 【python反序列化】 序列化 类对象->字节流&#xff08;字符串&#xff09; 反序列化 字节流->对象 python反序列化没PHP这么灵活&#xff0c;没这么多魔术方法。 import pickle import os class ctfshow(): def init(self): self.username0 self.password0 d…