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

这篇具有很好参考价值的文章主要介绍了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  token
    1). 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:服务器从上游接收消息超时
6. HTTP HTTPS区别
1. 安全性:https是基于加密传输,http明文传输
2. 证书:https的网站是基于证书认证
3. 端口:http-80,https-443
4. 使用场景:http网站文本查看等,https登录、支付等
7. HTTPS传输过程
1. 客户端请求服务端
2. 服务端收到请求,发送证书及公钥
3. 客户端收到证书后验证,查看过期时间等等。
    异常提示
    正常继续,生成随机数,随机数通过公钥加密传输给服务端
4. 服务端收到请求后,解密获取到私钥,并把数据混合在一起通过加密方式传输到客户端
5. 客户端收到消息,通过私钥解密,获取到了信息
8. 三次握手
首先明确过程:
1. 客户端发送请求链接
2. 服务端确认可以连接,发送请求和客户端连接的请求
3. 客户端收到后发送给服务器确认可以连接


每个请求类别的字段:
1. 请求需要有SYN标志位,默认1,每个链接都有数据包,数据包报文号seq
2. 每个确认都有ACK的标志位,默认1,确认数据包ack=上一次的seq+1(表示我收到了初始序列seq=x的报文);
确认也需要有自己的数据包报文号seq=[具体情况]


具体过程:
第一次握手:客户端发送和服务端连接的请求:SYN=1,seq=x
第二次握手:服务端发送确认和客户端连接,并且发送服务端和客户端建立连接的请求
           ACK=1,ack=x+1;       SYN=1,seq=y
第三次握手:客户端发送确认可以连接的请求
            ACK=1, ack=y+1,seq=x+1

Java基础八 - HTTP相关/Cookie/Session/网络攻击,java,http,开发语言

9. 为什么要三次握手,2次行不行
废话文学,特喵的当然不行啊!!!

2次握手可能会导致服务端消费+建立过期的会话

栗子(假设只有2次握手的连接):
1. 客户端发送了一个数据包报文号seq=x的连接请求,但是由于网络等等原因,导致服务端没有收到。
    也导致了客户端一直没有收到服务端确认建立连接的请求
2. 客户端不得已再次发送seq=y请求,这次网络顺畅,服务端收到后,发送了确认可以连接的请求。成功建立连接. 数据传输完成之后断开连接
3. 然而过了一会服务端收到了seq=x的请求数据,服务端很高兴又能和他建立连接了,然后建立了一个过期的请求链接
 9. 四次挥手
1. 请求结束会有FIN,回应结束是ACK,ack回复的时候会有,seq是请求的数据报文号

过程:
客户端发送结束的请求:FIN=1,seq=u
服务端回应已收到断开的请求,此时服务器还是可以继续发送:ACK=1,ack=u+1,seq=v
服务端数据传输完成之后,发送请求断开的:FIN=1,seq=w      ACK=1,ack=u+1
客户端收到断开请求,并且做回应:ACK=1,ack=w+1, seq=u+1

Java基础八 - HTTP相关/Cookie/Session/网络攻击,java,http,开发语言

 文章来源地址https://www.toymoban.com/news/detail-665476.html

到了这里,关于Java基础八 - HTTP相关/Cookie/Session/网络攻击的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 实战介绍 Cookie 和 Session 的区别

    HTTP 是一种不保存状态的协议,即无状态协议,HTTP 协议不会保存请求和响应之间的通信状态,协议对于发送过的请求和响应都不会做持久化处理。 无状态协议减少了对服务压力,如果一个服务器需要处理 百万级用户 的请求状态,对服务器的压力无疑的是巨大的。 无状态的

    2024年02月08日
    浏览(36)
  • 【网络应用层协议】【HTTP】详解HTTP与HTTPS、POST 请求与 GET请求 、TCP与UDP、cookie和session的区别

    目录 1. HTTP和HTTPS的区别 2. POST 请求与 GET 请求区别 3. TCP与UDP的区别 4. cookie和session的区别

    2024年04月14日
    浏览(46)
  • HTTP之Session、Cookie 与 Application

    cookie、seesion、application三个都会缓存我们用户状态的数据,使得我们在浏览器访问网站时可以更快速的获取到信息。 主要原因在于HTTP协议是无状态的,我们每次访问服务器,对于服务器来说都是一个单独的请求,没有上下文的联系。以淘宝登录的例子来说明: 假如我们输入

    2024年02月14日
    浏览(49)
  • web学习--登录认证--会话技术--cookie--session--令牌--java-jwt使用--jjwt使用

    前置学习: http springmvc 会话:用户打开浏览器,访问web服务器资源,会话建立,直到有一方断开连接会话结束,一次会话可以多次请求和连接 会话跟踪:一种维护浏览器状态的方式,服务器需要识别多次请求是否来自同一浏览器,以便同一次会话多次请求间共享数据。 cooki

    2024年02月15日
    浏览(64)
  • 会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记

    1.1 Cookie 1. Cookie:是一种客户端会话技术,数据会被保存在客户端,Cookie会携带数据访问服务器,用以完成一次会话内多次请求间的数据共享 2. 过程:浏览器(客户端)先向服务端发送请求,服务端会发送一个Cookie给客户端,在此后同一次会话中,每次客户端都会将Cookie发送

    2024年02月10日
    浏览(46)
  • HTTP请求中token、cookie、session有什么区别

     cookie HTTP 无状态的,每次请求都要携带 cookie ,以帮助识别身份 服务端也可以向客户端 set-cookie , cookie 大小 4kb 默认有跨域限制:不可跨域共享,不可跨域传递 cookie (可通过设置 withCredential 跨域传递 cookie ) cookie本地存储 HTML5 之前 cookie 常被用于本地存储 HTML5 之后推荐使用

    2024年02月08日
    浏览(43)
  • http 请求报文响应报文的格式以及Token cookie session 区别

    HTTP 请求报文和响应报文的格式如下: HTTP 请求报文格式: 方法 : 请求方法,例如 GET、POST、PUT、DELETE 等。 路径 : 请求的路径,表示需要访问的资源。 协议版本 : 使用的协议版本,通常是 HTTP/1.1 或 HTTP/2。 请求头部字段:包含了关于请求的附加信息,每个字段由字段名和对

    2024年02月16日
    浏览(52)
  • 跨越HTTP无状态边界:Cookie与Session在Django中的实战应用

    本文深入探索了Django中的Cookie和Session,解析了如何应对HTTP协议的无状态性问题,说明其基础概念,分析工作原理,并讨论何时应选择使用Cookie或Session。文章进阶部分,提出高效管理Cookie和Session,以及如何利用它们进行用户身份验证。 HTTP,即超文本传输协议,是一种应用层

    2024年02月13日
    浏览(41)
  • Websocket、Session&Cookie、前端基础知识

    目录 1.Websocket Websocket与HTTP的介绍 不同使用场景 Websocket链接过程 2.SessionCookie Cookie的工作原理 Session的工作原理 区别 3.前端基础知识 HTTP: 1. HTTP 是单向的,客户端发送请求,服务器发送响应。每个 HTTP 或 HTTPS 请求每次都会新建与服务器的连接,并且在获得响应后,连接将自

    2024年02月10日
    浏览(44)
  • Web架构安全分析/http/URL/Cookie攻击

    传统 Web 架构 LAMP 网页 概念 网页就是我们可以通过浏览器上网看到的精美页面,一般都是经过浏览器渲染过的 .html 页面,html 语言在浏览器中渲染。其中包含了CSS、JavaScript 等前端技术。通过浏览器访问的 Web 页面大部分都是 HTML 页面。 静态网页 静态的网页,都是一些 .htm

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包