【计算机网络】网络安全,HTTP协议,同源策略,cors,jsonp

❤️ Author: 老九
☕️ 个人博客:老九的CSDN博客
🙏 个人名言:不可控之事 乐观面对
😍 系列专栏:

文章目录

  • 网络安全
    • 非对称加密
    • 中间人攻击
    • XSS
    • SQL注入
    • CSRF
  • HTTP协议
    • 同源策略
    • cors
    • jsonp

网络安全

非对称加密

  • 会生成一个公钥一个私钥,我现在有一个东西,我用公钥给它加密,公钥可以公开给任何一个人,只有对应的私钥可以解密;如果用对称加密最重要的坏处就是需要在网络上传输密码,这样的话就很危险了
  • 实现数字签名
    首先,我们生成一对密钥,然后我们对要发送的文件进行处理,例如使用MD5或者sha1的算法进行文件内容的加密,接下来,我们使用私钥对这个加密过的文件进行加密,生成一个数字签名。这个签名是唯一的,只有我们拥有的私钥才能生成它。我们将这个文件和数字签名一起发送给对方。对方收到文件和签名后,会使用我们公开的公钥来解密签名,获得到的文件和这个发送过来的文件进行比较,如果两者一致,说明文件没有被篡改,因为只有拥有私钥的人才能正确生成签名。
  • 如何证明通信的对方就是想要的对方?
    这时候就需要使用数字证书。对方需要出示由权威机构颁发的数字证书,证书包含对方的公钥以及权威机构的数字签名。接收方会通过权威机构的公钥来验证数字签名的有效性,确保证书的真实性。一般情况下,计算机在出厂时已经预装了一些权威机构颁发的证书,对这些证书设置为信任状态。因此,当接收方验证通过证书后,就可以信任对方的公钥了。然后可以使用对方的公钥来加密要发送的信息,只有对方拥有对应的私钥才能解密。
    数字签名是保证发送的文件过程中没有被篡改,数字证书是保证发送的对方是我想要的对方

中间人攻击

  • 当通信双方进行加密通信的时候,中间人会尝试伪装成合法的通信终端,通过买通CA机构的证书,并且黑掉DNS服务器,将跳转地址跳转到中间人的服务器ip,然后它同时与双方进行解密和转发,使双方认为他们在进行安全通信,但实际上所有的数据都经过了中间人的窃取和篡改。

XSS

  • 在网站留言,或者发帖的地方写上一段Script标签,最终如果网站没有处理的话,我们这段代码可能在网站上运行;
  • 解决办法:1.插值时,对用户输入的内容转义2.使用CSP来限制页面里的程序能往哪里发送请求;使用CSP来限制页面能够运行哪里来的代码,比如connect-src限制你能连接哪些服务器,font-src:只能加载哪里的字体 ,frame-ancestors:谁能作为我的iframe祖先,frame-src:我能够嵌套来自哪里的页面,img-src:图片能来自哪里,srcipt-src:代码能来自哪里,style-src:能加在哪里的css,这是一个白名单限制。

SQL注入

  • 用户输入的信息被拼接到了服务器端的SQL语句中
  • 避免sql语句拼接,通过?占位符就可以避免了

CSRF

  • 跨站请求伪造,这种攻击基本已经消亡了,因为浏览器跨域请求默认不带cookie,假如带cookie的话,就可以实现在别的网站上就删除或者其他操作当前页面的数据了
  • 以前的解决方案:通过referer判断请求来自哪个站点,如果不是自家的站点,则拒绝执行相应的请求;或者为请求带上cookie以外的一些字段,而这些字段只有自己站点的页面有,称为csrf token

HTTP协议

  • 超文本传输协议,互联网上的数据都是通过这个协议传输的
  • 当将一个网址在浏览器的地址栏打开,首先浏览器向DNS服务器请求和这个域名关联起来的ip,并在对应端口上建立TCP连接,如果服务器存在并且接受这个连接,浏览器将在这个接口上发送内容(请求行,请求头,请求体),服务器会通过这个连接响应回复相同类型的内容(响应行,响应头,响应体)
  • 请求
    请求方法 请求资源路径 协议版本
    头1:值1
    头2:值2
    Host:www.baidu.com //请求这个资源时使用的域名
    User-Agent:xxxxxx //请求这个资源所使用的浏览器ua字符串(在BOM的navigator中存在)
    Content-Length:2343 //以字节为单位的请求体长度
    。。。
    <回车>
    请求体
  • 响应
    协议版本 响应状态码 响应状态码的解释
    头1:值1
    头2:值2
    Data:时间 //响应发送的时间
    Content-Length:2343 //以字节为单位的响应体长度
    。。。
    <回车>
    响应体

同源策略

  • 浏览器的同源策略(Same-Origin Policy)是一种安全机制,用于限制网页或脚本在浏览器中与其他源(域名、协议和端口)的文档进行交互的能力。同源策略的目的是防止恶意网站通过脚本等方式获取或篡改与其他源的敏感数据。通俗来说就是A网站不能随意的向B网站的资源发起请求,或者A网站的页面向同一个浏览器的B网站的页面发起沟通,浏览器都会阻止;但B网站的服务器可以解除此限制,通过在响应头里加上特定的头部字段来实现。

cors

  • 跨域的方法就是在响应头中加一个Access-Control-Allow-Origin: *;之后,这个资源就可以被其他人跨域访问了;正常来说如果没有设置响应头的话,可以发出去请求资源,但是由于同源策略机制,不能收到资源。
  • 这里有一个概念是预检请求,预检请求就是当你要请求一个服务器的资源的时候,会对服务器发一个HTTP OPTIONS请求,以获知服务器是否允许该实际请求,这样可以避免跨域请求对服务器的用户数据产生未预期的影响。
  • 简单请求不需要预检请求,若请求满足所有下述条件,则可以视为简单请求。
    1.使用下列方法:get,head,post
    2.只允许设置这些头部
    在这里插入图片描述
    3.content-Type只能是这几个

在这里插入图片描述

  • 通俗的来讲,稍微设置一些额外的请求头之类的,就不是简单请求了,就需要发预检请求了,响应回来的头部包括这四个字段
    在这里插入图片描述

jsonp

  • jsonp是另一种跨域的方法,适用于比较古老的浏览器,如果浏览器不认识Access-control-Allow-Origin类似的响应头的字段,原理就是利用了script标签可以请求别的网站的资源,只能获取数据发get请求。
    在这里插入图片描述
    在这里插入图片描述

————————————————————————
♥♥♥码字不易,大家的支持就是我坚持下去的动力♥♥♥
版权声明:本文为CSDN博主「亚太地区百大最帅面孔第101名」的原创文章

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐好用的AI工具集

AI技术未来已来&#xff0c;我们要拥抱变化 &#xff0c;笔记试用好用AI工具&#xff0c;也在代码中试用chatGPT 一、工具集 解决任何问题&#xff1a;ChatGPT 写文案&#xff1a;Jasper Al 、Copysmith 生成真人视频&#xff1a;Synthesia、 CogView2 AI AI 解决法律问题…

MySQL面试题--索引概念以及底层

目录 概述 索引的底层数据结构 二叉树 B树 B树 B树与B树对比: 面试回答 大纲 回答 概述 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。 在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff08;B树&#xff0…

springboot 国家公务员招聘网站-计算机毕设 附源码80528

springboot 国家公务员招聘网站 目 录 摘要 1 绪论 1.1研究背景与意义 1.2开发现状 1.3系统开发技术的特色 1.4springboot框架介绍 1.5论文结构与章节安排 2 2国家公务员招聘网站系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.…

【Solr】体验极速安装solr

目录 前言 安装下载- 方式一&#xff1a;官网下载- 方式二&#xff1a;仓库下载 启动方式 快速使用 关于查询 前言 solr是基于java开发的&#xff0c;所以solr需要用到jdk环境,并且solr需要在tomcat容器中才能运行,所以需要提前配置好jdk和tomcat环境。 安装下载 需要注意的…

springboot集成mybatisPlus

1、添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-jav…

【操作系统笔记】南京大学jyy老师

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了操作系统学习&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于南京大学操作系统jyy老师课程进行的&#xff0c;每个知识点的修正…

如何使用Wu10Man启用或禁用自动更新

使用Wu10Man启用或禁用自动更新 启用自动更新禁用自动更新Windows 10 将在你设置为自动维护时自动检查新的 Windows 更新。默认情况下,Windows 10 将自动下载并安装重要和关键更新。 某些更新不是自动安装的。这包括可选更新和要求你接受新使用条款的更新。当这些更新可用时,…

基于卷积神经网络的高光谱图像分类

文章目录 引言1. 基于光谱特征2. 基于空间特征3. 基于空谱特征3.1 空间特征和光谱特征的融合3.2 基于3D-CNN分类 4. 总结 引言 近年来深度学习的技术在计算机视觉领域中大放异彩&#xff0c;使得对多光谱数据分类的研究迅速发展&#xff0c;结合2D-CNN&#xff0c;3D-CNN&…

让性能腾飞!亚马逊云科技的 Java 云端之旅

在上篇文章中&#xff0c;我们为大家介绍了亚马逊的 Java 生态及丰富的开发工具、框架。本文将分享亚马逊的 Java 架构、迁移途径&#xff0c;并分享一个具体实例&#xff0c;介绍如何使用机器学习来构建 Java 应用和提升 Java 性能。 亚马逊云科技开发者社区为开发者们提供全…

怎么高效的通过爬虫获取数据

导语&#xff1a;在当今数字化时代中&#xff0c;获取数据已成为许多企业和个人的重要需求。在快速获取数据时&#xff0c;通过爬虫技术迅速获取网络数据已成为一项重要的技能和技术。然而&#xff0c;在应用爬虫技术前&#xff0c;需要注意一些重要的问题。本文总结了从数据来…

leetcode1.两数之和

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【LeetCode】 &#x1f353;希望我们一起努力、成长&#xff0c;共同进步。 题目链接 给定一个整数数组 nums 和一个整数目标值 target&am…

读写锁原理解读

目录 回顾什么是读写锁 t1 w.lock&#xff0c;t2 r.lock t3 r.lock&#xff0c;t4 w.lock t1 w.unlock t2 r.unlock&#xff0c;t3 r.unlock 写锁上锁流程 写锁释放流程 读锁上锁流程 读锁释放流程 回顾什么是读写锁 读写锁是一对互斥锁&#xff0c;分为读锁和写锁。…

《kafka 核心技术与实战》课程学习笔记(八)

无消息丢失配置怎么实现&#xff1f; Kafka 只对“已提交”的消息&#xff08;committed message&#xff09;做有限度的持久化保证。 第一个核心要素是“已提交的消息”。 当 Kafka 的若干个 Broker 成功地接收到一条消息并写入到日志文件后&#xff0c;它们会告诉生产者程序…

知识图谱项目——红色文化之张学良人物知识图谱(Neo4j+vue+flask+mysql实现)

张学良人物简史知识图谱_说明文档 本项目为人工智能专业大三知识图谱课程期末作业。意在完成一个以张学良为背景的红色文化类知识图谱。文末放上本项目的代码地址。 文章目录 张学良人物简史知识图谱_说明文档:rocket:前端:rocket:后端:rocket:中间件:rocket:数据库:rocket:服…

Linux常用命令——free命令

在线Linux命令查询工具 free 显示内存的使用情况 补充说明 free命令可以显示当前系统未使用的和已使用的内存数目&#xff0c;还可以显示被内核使用的内存缓冲区。 语法 free(选项)选项 -b # 以Byte为单位显示内存使用情况&#xff1b; -k # 以KB为单位显示内存使用情况…

【云原生】二进制部署k8s集群(中)搭建node节点

连接上文 在上文已经成功部署了etcd分布式数据库、master01节点&#xff0c; 本文将承接上文的内容&#xff0c;继续部署Kubernetes集群中的 worker node 节点和 CNI 网络插件 1. 部署 Worker Node 组件 1.1 work node 组件部署前需了解的节点注册机制 kubelet 采用 TLS Bo…

设计模式-05.01-行为型-观察者模板

观察者模式【常用】 我们常把 23 种经典的设计模式分为三类&#xff1a;创建型、结构型、行为型。前面我们已经学习了创建型和结构型&#xff0c;从今天起&#xff0c;我们开始学习行为型设计模式。我们知道&#xff0c;创建型设计模式主要解决“对象的创建”问题&#xff0c;…

JavaWeb之tomcarHTTP

1 DOM4j Xml解析 1.1 JAXP  JDK内置&#xff0c;不需要导入第三方jar包&#xff0c;简单工具优先选择。  支持两种解析方式&#xff1a;DOM、SAX 1.1.1 JAXP—DOM 加载xml 生成一个DOM树。获得整个文档的描述对象Document 解析 api 获得工厂 DocumentBuilderFactory –》 …

Android adb shell命令捕获systemtrace

Android adb shell命令捕获systemtrace (1)抓取trace文件&#xff1a; adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory -t 时长&#xff0c;20s&a…

通过使用Mybatis插件来实现数据的分页功能

目录 背景一、SpringBoot的后端1、手动拼接SQL来实现2、使用Mybatis插件来实现 二、Vue-cli的前端:请求响应跟踪 三、在使用Mybatis插件进行多表查询(表数大于2)出现的问题1. SQL解决2.后端查询方式改变成嵌套查询 四、 分页总结 背景 分页: 如果一次性的查询全部数据, 响应时…