【网络安全】跨站脚本攻击漏洞—HTML前端基础

news2024/11/19 21:16:45

目录

一、HTML概述

1.1 head部分

1.2 body部分

1.3 HTML特殊符号

二、JavaScript概述

2.1 HTML中JavaScript的存在方式

2.2 DOM操作

2.3 BOM操作

跨站脚本攻击(Cross-site scripting,通常缩写为XSS)是一种常见的网络安全漏洞,攻击者利用这种漏洞在网站上注入恶意的客户端代码。当受害者访问这些页面时,恶意代码会在其浏览器中执行,从而允许攻击者窃取用户的敏感信息,如cookie、会话令牌等,或者以受害者的身份与网站进行交互

XSS攻击可以大致分为三类:

  1. 反射型XSS:攻击者通过诱使用户点击一个链接,该链接包含恶意脚本,当用户点击后,恶意脚本随请求发送到服务器,并由服务器响应回用户浏览器执行2。
  2. 存储型XSS:恶意脚本被存储在目标服务器上,例如在数据库中。当其他用户访问存储了恶意脚本的页面时,脚本会被加载并执行。
  3. DOM型XSS:这种类型的XSS发生在客户端,恶意脚本通过修改DOM来执行,不经过服务器的直接响应。

XSS攻击的危害包括但不限于:

  • 盗取用户账号和敏感信息。
  • 控制企业数据,包括读取、修改、添加或删除敏感数据。
  • 非法转账和强制发送电子邮件。
  • 网站挂马和控制受害者机器发起其他攻击。

为了防止XSS攻击,开发者需要掌握一定的HTML前端基础,本章我们来介绍HTML前端基础。

一、HTML概述
1.1 head部分
  1. <title> :title标签定义文章的标题,显示在浏览器的标题栏和标题页上
  2. <meta> :定义文档的元数据,如字符集声明 <meta charset="UTF-8">
1.2 body部分
  1. <p> :段落标签
  2. <a> :超链接标签
  3. <img> :图片标签
  4. 布局标签:
  • 1)<div> 块级标签:属于容器级的标签,div标签定义的是一个区域;加上css样式,实现网页布局重构
  • 2)<span>行级标签:属于文本级的标签,只能存放文本,图片,表单元素

三种列表方式:

表格:

form表单:

1.3 HTML特殊符号

在HTML中有些字符是有特殊含义的,不能在浏览器中直接显示出来,例如:

<p>我是<h1>标签</p>  #<h1>被当作主标题

解决方式:实体字符(实体字符有很多,这里只举例左右尖括号)

<p>我是&lt;h1&gt;标签</p>

二、JavaScript概述

javaScript是一种可以在浏览器中运行的脚本语言。主要用来实现在浏览器端的动作:用户交互、数据处理等。和Java没有关系

2.1 HTML中JavaScript的存在方式
  1. <script></script>标签中
    <script>
      alert('Hello, World!');
    </script>
  2. 在<script>的src属性或指定的外部文件中
    <script src="script.js"></script>
  3. 在HTML事件处理器中,如onclock、onmouseover等
    <button onmouseover="alert('Mouse over!')">Hover over me</button>
2.2 DOM操作

文档对象模型(Document Object Model),访问和操作HTML文档的标准方法,通过利用javascript来访问、操作HTML

DOM操作—通过javascript改变网页内容:

  1. 获取HTML元素内容
    // 通过ID获取元素
    var element = document.getElementById('myElement');
    
    // 通过标签名获取元素集合(HTMLCollection)
    var elements = document.getElementsByTagName('p');
    
    // 通过类名获取元素集合(NodeList)
    var elements = document.getElementsByClassName('myClass');
    
    // 通过查询选择器获取第一个匹配的元素
    var element = document.querySelector('.myClass');
    
    // 通过查询选择器获取所有匹配的元素(NodeList)
    var elements = document.querySelectorAll('.myClass');
  2. 修改HTML元素内容
    // 设置属性
    element.setAttribute('data-custom', 'value');
    
    // 获取属性值
    var attributeValue = element.getAttribute('data-custom');
    
    // 删除属性
    element.removeAttribute('data-custom');
  3. 创建动态效果
  4. 添加页面交互效果
2.3 BOM操作

浏览器对象模型(Browser Object Model),它使JavaScript有能力与浏览器进行“对话”。

  1. 窗口操作
    //获取窗口的尺寸
    var width = window.innerWidth;
    var height = window.innerHeight;
    
    //改变窗口的尺寸
    window.resizeTo(300, 300); // 将窗口大小调整为300x300像素
  2. 导航
    //刷新页面
    window.location.reload();
    //跳转到新页面
    window.location.href = 'https://www.example.com';
  3. 历史记录
    window.history.back();
    window.history.forward();
  4. 滚动
    window.scrollTo(0, 0);  //滚动到页面顶部
    window.scrollTo(0, document.body.scrollHeight);  //滚动到页面底部(示例)
  5. 弹出窗口
    //打开新窗口
    var newWindow = window.open('https://www.example.com', '_blank');
    //关闭新窗口
    if (newWindow) {
      newWindow.close();
    }
  6. 监听事件
    //监听窗口大小变化
    window.addEventListener('resize', function() {
      console.log('Window size changed.');
    });
    //监听滚动事件
    window.addEventListener('scroll', function() {
      console.log('Window scrolled.');
    });
  7. 定时器
    var timer = setTimeout(function() {
      console.log('This message is shown after 2 seconds.');
    }, 2000);

BOM操作有两个重要作用:一是获取和操作浏览器行为;其次还是浏览器和编程语言之间的接口

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

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

相关文章

区块链实验室(36) - 交叉编译Ethereum的客户端全套工具

停滞了一段时间&#xff0c;重新回到区块链实验。前面在“区块链实验室(31) - 交叉编译Ethereum的客户端Geth”中仅编译出客户端工具geth。编译Ethereum全套工具的代码如下。 #!/bin/bash ## abigen CGO_ENABLED0 GOOSlinux GOARCHarm64 /usr/local/go/bin/go build -ldflags …

成都跃享未来教育抖音小店深度解析靠谱与否

在如今网络购物日益繁荣的时代&#xff0c;抖音小店以其独特的平台优势和庞大的用户基础&#xff0c;吸引了越来越多的商家入驻。成都跃享未来教育咨询有限公司便是其中之一&#xff0c;它的抖音小店究竟靠不靠谱呢&#xff1f;今天&#xff0c;我们就来一起揭开这个谜底。 首…

现货黄金交易多少克一手?国内外情况大不同

如果大家想参与国际市场上的现货黄金交易&#xff0c;就应该从它交易细则的入手&#xff0c;先彻底认识这个品种&#xff0c;因为它是来自欧美市场的投资方式&#xff0c;所以无论是从合约的计的单位&#xff0c;计价的货币&#xff0c;交易的具体时间&#xff0c;以及买卖过程…

乡村振兴的多元化产业发展:推动农村一二三产业融合发展,培育乡村新业态,打造多元化发展的美丽乡村

一、引言 乡村振兴是我国当前及未来一段时间内的重大战略任务&#xff0c;旨在促进农村经济的全面发展&#xff0c;提高农民的生活水平&#xff0c;实现城乡融合发展。在乡村振兴的进程中&#xff0c;推动农村一二三产业融合发展&#xff0c;培育乡村新业态&#xff0c;是打造…

linux安装anconda后,之前的python环境如何加载到anconda环境中

一、问题描述 由于某种原因&#xff0c;我们需要在系统中安装多个环境&#xff0c;我们自然想到安装anconda来解决这个问题。但是当我们安装好anconda后&#xff0c;发现我们未安装anconda之前的python环境使用不了了。那么我们如何将之前的python环境放到conda 环境中呢。 二…

7种常用数据分析方法,建议收藏学习(下)

在上一篇内容里&#xff0c;我们提到了常用的数据分析放法&#xff0c;比如&#xff1a;漏斗分析法、留存分析法、分组分析法、矩阵分析法。没有看到的上篇推送的小伙伴可以回过头去查看我们之前的推送。 今天&#xff0c;我们继续讲后面的内容&#xff1a;关联分析法、指标分…

SpringBoot快速部署(2)—不使用docker的常规方法

一、软件下载和部署前准备 安装软件 获取软件安装包 然后上传到服务器的 /tmp 目录下。 软件&#xff1a;nginx、jdk、mysql 下载 X-shell 和 Xftp 注意&#xff1a;这个页面下载安装的才可以免费使用。家庭/学校免费 - NetSarang Website 安装jdk 1.8 tar -zxvf /tmp/jdk-…

程序猿大战Python——容器——字符串

字符串介绍 什么是Python容器 目标&#xff1a;了解Python容器是什么&#xff1f; 在现实生活中&#xff0c;我们知道容器是用来存放东西的&#xff0c;比如实验室里的烧杯等。 类似的&#xff0c;在Python中的容器是用来存放数据的。 与此同时&#xff0c;为了操作方便&…

springboot与flowable(3):启动、审批、各个Service服务

一、启动流程 流程定义与实例的关系类似于Java的类与对象&#xff0c;通过定义的id创建流程实例&#xff0c;编写测试代码&#xff1a; package org.example.flowabledemo2;import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInst…

[论文阅读] (33)NDSS2024 Summer系统安全和恶意代码分析方向相关论文汇总

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

盲盒小程序支付流程优化与风险防控策略

在盲盒小程序中&#xff0c;支付流程的优化和风险防控是提升用户体验和确保交易安全的关键环节。下面我们将深入探讨这两个方面的问题和应对策略。 一、支付流程优化 在支付流程优化方面&#xff0c;我们主要关注以下几点&#xff1a; 简化操作流程&#xff1a;通过减少不必…

男士内裤什么品牌质量好?盘点口碑最好的五款男士内裤

面对市场上琳琅满目的款式与品牌&#xff0c;如何挑选出最适合自己的那一款男士内裤一直是大家最大的疑问&#xff01;今天&#xff0c;我们为您带来实用的选购技巧&#xff0c;并推荐五款备受好评的男士内裤&#xff0c;信儿帮助大家避免选到一些质量不好的男士内裤&#xff0…

Mysql 查询数据量

Mysql 查询数据量 Mysql 查询数据库数据量Mysql查询指定数据表数据量 Mysql 查询数据库数据量 查询命令如下 SELECTTABLE_NAME AS 表名,TABLE_ROWS AS 记录数,TRUNCATE (data_length / 1024 / 1024, 2) AS 数据容量(MB),TRUNCATE (index_length / 1024 / 1024, 2) AS 索引容量…

DevExpress 控件和库

UI控件和组件 DevExpress WinForms包括以下Windows窗体库和控件&#xff1a; Grids and Editors Data Grid Tree List Vertical Grid Property Grid Gantt Control Data Editors and Simple Controls Office-inspired Ribbon, Bars and Menu Rich Text Editor Scheduler S…

短丝足视频:四川鑫悦里文化传媒有限公司

短丝足视频&#xff1a;文化审美的新趋势与道德边界的探讨 随着互联网技术的飞速发展&#xff0c;短视频平台已成为人们生活中不可或缺的一部分。四川鑫悦里文化传媒有限公司在众多短视频内容中&#xff0c;短丝足视频作为一种新兴的视觉艺术形式&#xff0c;逐渐引起了人们的…

硬盘危机:磁盘损坏无法打开的应对策略

在数字化时代&#xff0c;磁盘作为数据存储和传输的核心设备&#xff0c;其稳定性和安全性至关重要。然而&#xff0c;在日常使用过程中&#xff0c;我们时常会面临磁盘损坏无法打开的困境。这不仅会影响我们的工作效率&#xff0c;还可能造成重要数据的丢失。本文将深入探讨磁…

【设计模式】结构型-代理模式

在静谧的林间舞台上&#xff0c;代理轻舞着对象的梦想&#xff0c;掌控访问&#xff0c;引领旋律&#xff0c;真实与虚幻间&#xff0c;交织出灵动的诗篇。 文章目录 一、数据库操作的问题二、代理模式三、代理模式的核心组成四、运用代理模式五、代理模式的应用场景六、小结推…

基尼系数计算过程

引言 在探讨经济公平性时&#xff0c;基尼系数是一个不可忽视的指标。它不仅反映了一个国家或地区内部的收入分配状况&#xff0c;还对政策制定和社会稳定有着深远的影响。 基尼系数的定义 基尼系数是由意大利统计学家科拉多基尼在1912年提出的&#xff0c;用来衡量一个国家…

轻量级分布式事务实现:掌握最大努力通知方案

本文作者:小米,一个热爱技术分享的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hey,大家好,我是小米,一个喜欢研究技术的29岁程序员!今天我想跟大家分享一个在分布式系统中非常重要的概念——分布式事务。而我们今天的重点…

【面经总结】 Java基础 - 异常

异常 介绍一下 Java 的异常体系 Java 的异常体系是由 Throwable 类及其子类构成的。 Throwable 包含两个子类&#xff1a;Error&#xff08;错误&#xff09;和 Exception&#xff08;异常&#xff09; Error 表示错误&#xff0c;通常不需要程序员处理&#xff0c;如内存溢…