当前位置: 首页 > news >正文

Java基础八 - HTTP相关/Cookie/Session/网络攻击

一、 反射/序列化/拷贝

1. 反射

//反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力
//在Yaml数据驱动自动化框架比较适用,能获取到当前的类名及方法名
import java.lang.reflect.*;public class ReflectionExample {public static void main(String[] args) throws Exception {// 获取当前类的 Class 对象Class<?> currentClass = ReflectionExample.class;// 获取当前方法的 Method 对象Method currentMethod = currentClass.getDeclaredMethod("main", String[].class);// 获取类名和方法名String className = currentClass.getName();String methodName = currentMethod.getName();System.out.println("当前类名:" + className);System.out.println("当前方法名:" + methodName);}
}

2. 序列化

序列化是指将一个对象抓换为字节流在网络上传输到服务器,服务器对其进行反序列化
可以使用 Serializable 接口来标记一个类可以被序列化

3. 动态代理

Java 动态代理是一种在运行时生成代理类的机制,
允许你在不事先知道具体代理类的情况下创建代理对象。
动态代理通常用于在代理模式中,通过代理对象来控制对实际对象的访问,
并可以在代理的前后添加一些额外的逻辑。动态代理的用途包括:日志记录:在方法调用前后添加日志记录。
性能监控:统计方法调用的耗时。
事务管理:在方法调用前后开启、提交或回滚事务。
权限控制:在方法调用前检查用户权限。
缓存控制:在方法调用前从缓存中获取数据,或在方法调用后将结果缓存起来。

4. 深拷贝和浅拷贝

1. 浅拷贝
只复制了对象的引用地址,2个引用指向同一个内存地址,在其中一个变化后,另一个的也会同时变化。
2. 深拷贝
既复制了内存地址,也复制了引用地址;变化不会影响其他

二、Http相关

1. Session与Cookie

1. Session存储在服务端,Cookie存储在用户本地浏览器
2. Session更加安全,cookie可能会存在被篡改的风险
3. Session存储比较大的数据,而Cookie相对比较小,不超过4kb
Session的工作原理:存储在服务器的Session可以理解是一个Map。
Session是key,里面还有其他用户信息是value。
用户请求的时候拿Cookie包装了sessionID换取其他信息

2. 如何避免sql注入

攻击原理:在浏览器通过伪造,注入一段sql达到查询/修改数据库,达到攻击目的
避免:
1. 使用参数化查询
2. 对输入的内容进行(正则/字符串)过滤
3. 使用 Web 应用防火墙(WAF)来检测和阻止恶意 SQL 注入攻击。

3. XSS(跨站脚本攻击)

原理:用户在浏览网页的时候,通过Xss注入HTML代码,当用户浏览或者输入某些内容的时候自动调用,
从而获取当前网页用户的消息
避免:对输入/URL进行过滤,对输出进行编码。

4. CSRF(跨站网站攻击

原理:
给用户提供和目标网站类似的网站/放置恶意链接,用户在登录状态下点击某功能。
导致调用链其他链接,例如:修改密码,转账等避免:
1. 敏感操作短信验证码
2. CSRF  token1). CSRF Token 是一种用于防止 CSRF 攻击的机制。网站会在用户登录后,为用户生成一个随机的 CSRF Token,并将其存储在用户的会话中或者通过 Cookie 返回给用户。2). 在进行敏感操作(如修改密码、更改账户信息)时,网站会要求用户提供这个 CSRF Token。用户在提交请求时,需要将 CSRF Token 随请求一同发送到服务器。3). 服务器会验证提交的 CSRF Token 是否与会话中或者 Cookie 中的 Token 匹配,如果匹配则说明请求是合法的,否则拒绝请求。

三、HTTP状态及传输方式

1. 301与302redirect(重定向)

301 永久重定向
302 暂时重定向

2. forward 和 redirect 的区别

1. forward
直接转发 - 客户端/浏览器发出1次请求,A请求B,B请求C。最后C把信息转发给了A
2. redirect
间接转发 - 客户端/浏览器发出2次请求,A请求B,不通并让请求C,A请求了C

3. tcp和udp

1. TCP面向连接,UDP不面向连接。TCP需要3次握手和4次挥手
2. TCP是稳定传输,适合小流量,UDP是可能存在丢包,用于大文件传输/在线游戏等

4. OSI 的七层模型

OSI(Open Systems Interconnection)模型是一个网络协议的参考模型,将网络通信划分为七个层次,每个层次负责不同的功能。以下是 OSI 模型的七层以及通俗易懂的例子:1. 物理层(Physical Layer):负责传输原始比特流,处理物理连接、电压、光信号等。
例子:以太网的电缆、光纤、网卡等。2. 数据链路层(Data Link Layer):提供点对点的可靠数据传输,将比特流分组成帧,并进行错误检测和纠正。
例子:以太网帧、Wi-Fi 数据帧。3. 网络层(Network Layer):负责寻址和路由,将数据包从源主机传输到目标主机。
例子:IP 地址、路由器。4. 传输层(Transport Layer):提供端到端的数据传输,负责分段、重组和流量控制。
例子:TCP、UDP。5. 会话层(Session Layer):管理不同应用之间的会话,建立、维护和终止连接。
例子:会话管理、连接控制。
6. 表示层(Presentation Layer):负责数据的格式转换、加密、解密等,确保应用之间的数据能够正确解释。
例子:数据压缩、加密解密。7. 应用层(Application Layer):最上层,提供用户应用程序的接口,处理用户数据和网络通信。
例子:Web 浏览器、电子邮件客户端、文件传输协议(FTP)。

5. HTTP常见状态码

200 OK: 请求正常
204 No Content:服务器处理了请求,但是木有任何返回
400 Bad Request:用户发送了请求,但是服务器无法处理;不认识看不懂
401 Unauthorized:认证失败,鉴权过期等
403 Forbidden:请求被拒绝
404 Not Found:请求的链接有问题可能,找不到
500 Internal Server Error:服务器异常了
503 Service Unavailable:服务器暂时无法处理请求,可能是维护
504 Service Timeout:服务器从上游接收消息超时

相关文章:

Java基础八 - HTTP相关/Cookie/Session/网络攻击

一、 反射/序列化/拷贝 1. 反射 //反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力 //在Yaml数据驱动自动化框架比较适用&#xff0c;能获取到当前的类名及方法名 import java.lang.reflect.*;public class ReflectionExample {public static void main(Str…...

【车道线】TwinLiteNet 复现过程全纪录

码字不易&#xff0c;喜欢的请点赞收藏&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 论文全文翻译&#xff1a;【freespace】TwinLiteNet: An Efficient and Lightweight Model for Driveable Area and Lane Segmentation_莫克_Cheney的博客-CSDN博客 目录…...

七牛云获取qn(url、bucket、access-key、secret-key)

1.注册账号 2.access-key和secret-key&#xff1a; 点击“密钥管理” 复制AK和SK即可 域名&#xff1a; bucket&#xff1a; 这个就是对象存储空间名字 先新建一个空间&#xff08;没买需要先购买&#xff09;&#xff0c;步骤如下&#xff1a; 填写存储空间名字&#xff0…...

定时任务实现 - Cron表达式知识

Cron表达式 cron表达式是一个字符串&#xff0c;由6到7个字段组成&#xff0c;用空格分隔。其中前6个字段是必须的&#xff0c;最后一个是可选的。每个字段的含义为&#xff1a;秒 分 时 日 月 周 年 字符解释: 枚举&#xff1a;, (cron“7,9,23****?”)&#xff1a;任意时刻…...

【java】抽象

java抽象 抽象类抽象方法抽象类和抽象方法 抽象类 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果一个类中没有包含足够的信息来描绘一个具体的对象&#xff0c;这样的类就…...

Qt应用开发(基础篇)——时间微调输入框 QDateTimeEdit、QDateEdit、QTimeEdit

一、前言 QAbstractSpinBox是全部微调输入框的父类&#xff0c;这是一种允许用户通过点击上下箭头按钮或输入数字来调整数值的图形用户界面控件&#xff0c;父类提供了当前值text、对齐方式align、只读readOnly等通用属性和方法。在上一篇数值微调输入框中有详细介绍。 QDateTi…...

日撸代码300行:第63天(集成学习之 AdaBoosting-1)

代码来自闵老师”日撸 Java 三百行&#xff08;61-70天&#xff09; 日撸 Java 三百行&#xff08;61-70天&#xff0c;决策树与集成学习&#xff09;_闵帆的博客-CSDN博客 学习过程中理解算法参考了&#xff1a;&#xff08;十三&#xff09;通俗易懂理解——Adaboost算法原…...

抽象父类获取子类的泛型 或接口泛型

jie通过getClass().getGenericSuperclass()或者子类的泛型 getClass().getGenericInterfaces();获取多个接口的泛型 GenericTypeResolver.resolveTypeArgument(GenericityService.class, GenericitySuper.class) 抽象父类 public abstract class GenericitySuper<T> …...

题目:2341.数组能形成多少数对

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;2341. 数组能形成多少数对 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 使用哈希表对数组中元素及其出现次数计数后对其进行统计即可。 解题代码&#xff1a; class Solution {public …...

NB-IOT 和蜂窝通信(2/3/4/5G)的区别和特点是什么?

NB-IOT 和蜂窝通信(2/3/4/5G)的区别和特点是什么? 参考链接:https://www.sohu.com/a/221664826_472880 NB IOT是窄带物联网技术,主要解决的是低速率数据传输,可使用GSM900或DCS1800频段,在频段使用上比较灵活,可以和GSM,UMTS或LTE共存,具备优异的MCL(最小耦合损耗…...

vue3 动态导入src/page目录下的所有子文件,并自动注册所有页面组件

main.js添加一下代码&#xff1a; const importAll (modules) > {Object.keys(modules).forEach((key) > {const component key.replace(/src/, /).replace(.vue, );const componentName key.split(/).slice(-2, -1)[0] -page;app.component(componentName, modules…...

python优雅地爬虫

申明&#xff1a;仅用作学习用途&#xff0c;不提供任何的商业价值。 背景 我需要获得新闻&#xff0c;然后tts&#xff0c;在每天上班的路上可以听一下。具体的方案后期我也会做一次分享。先看我喜欢的万能的老路&#xff1a;获得html内容-> python的工具库解析&#xff0…...

mysql8查看执行sql历史日志、慢sql历史日志,配置开启sql历史日志general_log、慢sql历史日志slow_query_log

0.本博客sql总结 -- 1.查看参数 -- 1.1.sql日志和慢sql日志输出方式(TABLE/FILE)。global参数 SHOW GLOBAL VARIABLES LIKE log_output; -- 1.2.sql日志开关。global参数 SHOW GLOBAL VARIABLES LIKE general_log%; -- 1.3.慢sql日志开关。global参数 SHOW GLOBAL VARIABLE…...

vscode关闭绑定元素“xxx”隐式具有“any”类型这类错误

在ts的项目里面&#xff0c;真的经常看到any类型的报错&#xff0c;真的很烦的 所以为了眼不见心不乱&#xff0c;我决定消除这个错误提示 在tsconfig.json里面配置 "noImplicitAny": false 就可以了 {"compilerOptions": {"target": "E…...

View绘制流程-Window创建

前言&#xff1a; View绘制流程中&#xff0c;主要流程是这样的&#xff1a; 1.用户进入页面&#xff0c;首先创建和绑定Window&#xff1b; 2.首次创建以及后续vsync信号来临时&#xff0c;会请求执行刷新流程&#xff1b; 3.刷新流程完成后&#xff0c;会通知SurfaceFlin…...

Jenkins build包时虽然单元测试失败了,但是仍然可以成功build包(最终结束时build success)

1.尝试方案1&#xff1a; 尽管单元测试失败&#xff0c;Jenkins Maven仍然可以获得成功-Java 学习之路 将 -Dmaven.test.failure.ignorefalse 添加到 MAVEN_OPTS artifactoryMaven {goals "-U clean install -Dmaven.test.skipfalse -DallowSnapshotstrue -Dmaven.te…...

【vue3】基础知识点-setup语法糖

学习vue3&#xff0c;都会从基础知识点学起。了解setup函数&#xff0c;ref&#xff0c;recative&#xff0c;watch、comptued、pinia等如何使用 今天说vue3组合式api&#xff0c;setup函数 在学习过程中一开始接触到的是这样的&#xff0c;定义数据且都要通过return返回 <…...

idol!! 2023牛客暑期多校训练营6 C

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;定义n!!等于与n的奇偶性相同的所有小于等于n的数的阶乘之和&#xff0c;问n!!的末尾有多少0 1<n<1e18 思路&#xff1a;因为末尾0的来源是2*5&#xff0c;而2的个数明显比5的个数多得多&#xff0c;所以末尾…...

深入理解Jdk5引入的Java泛型:类型安全与灵活性并存

深入理解Jdk5引入的Java泛型&#xff1a;类型安全与灵活性并存 ​ 在Java的中&#xff0c;有一个强大的工具&#xff0c;它可以让你在编写代码时既保持类型安全&#xff0c;又享受灵活性。**这个工具就是——泛型&#xff08;Generics&#xff09;。**本文将引导你深入了解Java…...

idea在控制台中输出文字显示乱码

VM options中加入下面这行 -Dfile.encodingutf-8...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...