首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏我的网安魔法之旅

    Java安全之CommonsCollections3

    因此需要先学习一下 Java 动态类加载机制 动态类加载机制 Java 是运行在 Java 的虚拟机(JVM)中的,但是它是如何运行在JVM中了呢? 优势: 沙箱安全机制:比如自己写的 String.class 不被加载,防止核心类被随意篡改 避免类的重复加载:当父类加载器已经加载了该类的时候就不需要子类加载器加载了 可以见得真正核心的部分其实是 defineClass ,他决定了如何将一段字节流转变成一个 Java 类,Java 默认的 ClassLoader#defineClass 是一个 native方法(Java调用非Java代码的接口 ; import java.util.Map; import java.lang.reflect.Field; import java.util.Base64; public class CommonsCollections3 | JohnFrod Java篇Commons Collections 3 | Arsene.Tang

    73340编辑于 2023-05-16
  • 来自专栏卯金刀GG

    高并发Java3):Java内存模型和线程安全

    但是由于Java版本的不断演变,内存模型也进行了改变。本文只讲述Java内存模型的一些特性,无论是新的内存模型还是旧的内存模型,在明白了这些特性以后,看起来也会更加清晰。 1. 这个要从cpu指令说起,Java中的代码被编译以后,最后也是转换成汇编码的。 3. 可见性 可见性是指当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道这个修改。 可见性问题可能有各个环节产生。 接下来看一个Java虚拟机层面产生的可见性问题 问题来自于一个Blog 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 线程安全的概念 指某个函数、函数库在多线程环境中被调用时,能够正确地处理各个线程的局部变量,使程序功能正确完成。 比如最开始所说的i++的例子 ? 就会导致线程不安全

    63910发布于 2019-07-25
  • 来自专栏程序猿的大杂烩

    Java并发编程(3)- 如何安全发布对象

    : package org.zero.concurrency.demo.example.publish; import lombok.extern.slf4j.Slf4j; import java.util.Arrays SingletonExample4(); 语句的时候,底层实际进行了以下三步操作: 1.memory = allocate() // 分配对象的内存空间 2.ctorInstance() // 初始化对象 3. 经过JVM和CPU的优化,指令可能会重排成下面的顺序: 1.memory = allocate() // 分配对象的内存空间 3.instance = memory // 设置instance 指向刚分配的内存 2.ctorInstance() // 初始化对象 假设按照这个指令顺序执行的话,那么当线程A执行完1和3时,instance对象还未完成初始化,但已经不再指向null。 始终保证是下面的顺序: 1.memory = allocate() // 分配对象的内存空间 2.ctorInstance() // 初始化对象 3.instance = memory //

    88420发布于 2020-09-23
  • 来自专栏Java核心技术图谱:原理·对比·避坑

    Java的多线程——多线程(3)线程安全

    3、线程不安全的原因 3.1线程调度是随机的(抢占式执行) 这是线程安全问题的罪魁祸首 :线程的调度 随机调度使⼀个程序在多线程环境下,执行顺序存在很多的变数 解决方案:加锁是 Java 解决线程安全问题的主要方案。通过加锁,可将非原子操作打包成原子操作,确保同一时间只有一个线程能执行该操作。 既保障了count++的线程安全,又利用了循环的并发潜力,因此执行速度更快。 3. 外部加锁 为什么count++是串行的? ⼀条java语句 不⼀定是原子的,也不一定只是一条指令 比如刚才我们看到的n++,其实是由三步操作组成的: 1. 从内存把数据读到CPU 2. 进行数据更新 3. 对应的,CPU的价格最贵,内存次之,硬盘最便宜 3.5指令重排序引起的线程不安全问题 指令重排序 什么是代码重排序 ⼀段代码是这样的: 1. 去前台取下U盘 2. 去教室写10分钟作业 3.

    55310编辑于 2025-12-22
  • 来自专栏Naraku的专栏

    Java安全-反序列化-3-CC1

    import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; import java.util.HashMap readObject方法中没有直接调用到Map的get(),而是在invoke()方法中进行了调用 public Object invoke(Object var1, Method var2, Object[] var3) var4.equals("equals") && var5.length == 1 && var5[0] == Object.class) { return this.equalsImpl(var3[ ; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream 安全漫谈 Java反序列化-CommonsCollections1利用链分析 ---- 版权属于:Naraku 本文链接:https://www.naraku.cn/posts/120.html 本站所有原创文章均采用

    60720编辑于 2022-04-17
  • 来自专栏Naraku的专栏

    Java安全-反序列化-5-CC3

    CommonsCollections3 字节码 严格来说,Java字节码(ByteCode)其实仅仅指的是Java虚拟机执行使用的一类指令,通常被存储在.class文件中。 ; import java.util.HashMap; import java.util.Map; public class CommonCollections3 { public static ysoserial随后增加了不少新的Gadgets,其中就包括CommonsCollections3。 ; import java.util.Map; public class CommonCollections3 { public static void main(String[] args) throws 反序列化--Common-Collections 3(CC3) 版权属于:Naraku 本文链接:https://www.naraku.cn/posts/122.html 本站所有原创文章均采用 知识共享署名

    69350编辑于 2022-04-26
  • 来自专栏红队蓝军

    Java安全之Commons Collections1-3分析

    ; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Proxy; import java.util.HashMap .*; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.util.PriorityQueue classPool.appendClassPath(AbstractTranslet); CtClass payload=classPool.makeClass("CommonsCollections3" barr.toByteArray())); Object object = ois.readObject(); oos.close(); } } CC3分析 .*; import java.lang.reflect.*; import java.util.HashMap; import java.util.Map; public class cc3 {

    37610编辑于 2022-05-17
  • 来自专栏红队蓝军

    Java安全之Commons Collections1-3分析

    .*; import java.lang.annotation.Retention; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler ; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Proxy; import java.util.HashMap .*; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.util.PriorityQueue classPool.appendClassPath(AbstractTranslet); CtClass payload=classPool.makeClass("CommonsCollections3" .*; import java.lang.reflect.*; import java.util.HashMap; import java.util.Map; public class cc3 {

    56630编辑于 2022-03-11
  • 来自专栏我的网安魔法之旅

    Java安全之C3P0反序列化

    简介 C3P0是一个开源的JDBC连接池,它实现了数据源和 JNDI 绑定,具有连接数控制、连接可靠性测试、连接泄露控制、缓存语句等功能,支持 JDBC3 规范和 JDBC2 的标准扩展。 .*; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.sql.SQLException ; import java.sql.SQLFeatureNotSupportedException; import java.util.Base64; import java.util.logging.Logger .*; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.sql.SQLException ; import java.sql.SQLFeatureNotSupportedException; import java.util.Base64; import java.util.logging.Logger

    82740编辑于 2023-08-26
  • 来自专栏python3

    Linux安全问答(3

    3、保护一个目录为只读。 # lidsconf -A -o /some/directory -j READONLY 此命令用保证一旦LIDS启用,任何人都不能列出或删除此目录及其中的内容。

    98920发布于 2020-01-08
  • 来自专栏陶然同学博客

    Java】线程安全

    这种问题,几个窗口 ( 线程 ) 票数不同步了,这种问题称为线程不安全。 线程安全问题都是由全局变量及静态变量引起的。 要解决上述多线程并发访问一个资源的安全性问题 : 也就是解决重复票与不存在票问题, Java 中提供了同步机制 ( synchronized ) 来解决。 根据案例简述: 为了保证每个线程都能正常执行原子操作 ,Java 引入了线程同步机制。 那么怎么去使用呢?有三种方式完成同步操作: 1. 同步代码块。 2. 3. 锁机制。 2.3 同步代码块 同步代码块 : synchronized 关键字可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。 使用同步方法代码如下: 2.5 Lock锁 java.util.concurrent.locks.Lock 机制提供了比 synchronized 代码块和 synchronized 方法更广泛的锁定操作

    74220编辑于 2023-02-24
  • 来自专栏python基础文章

    网络安全——传输层安全协议(3

    前言 通过之前文章对SSL握手协议与SSL记录协议有了一定的了解网络安全——传输层安全协议(2) 本章将会继续讲解SSL的其他协议 一.SSL密钥更改协议 SSL密钥更改协议用以通知参与各方加密策略的改变 三.SSL协议安全性分析 SSL协议的安全性由采用的加密算法和认证算法所保证。实践证明,现有的加密和认证算法是安全有效的,但随着计算机技术和信息对抗技术的发展,一些新的问题和挑战随即产生。 这些发现促使产业界不得不发展更安全的散列算法,同时也使开发下一代更安全的SSL.协议提上了日程。 五.SSL安全优势  1.监听和中间人攻击     2.流量数据分析式攻击 3.版本重放攻击           4.检测对握手协议的攻击 5.会话恢复伪造           6.短包攻击 7.截取再拼接式攻击 3.数字签名问题 基于SSL.协议没有数字签名功能,即没有抗否认服务。若要增加数字签名功能,则需要在协议中打补丁。这样做,在用于加密密钥的同时又用于数字签名,在安全上存在漏洞。

    80020编辑于 2023-10-15
  • 来自专栏python基础文章

    网络安全——网络层安全协议(3

    一.IPSec采用的安全技术 1.IPSec的安全特性 IPSec有两个基本安全目标,决定它应该拥有以下5个安全特性。 (3)数据完整性 数据完整性。防止传输过程中数据被篡改,确保发出数据和接收数据的一致性。 ----  3.预置共享密钥认证 IPSec也可以使用预置共享密钥进行认证。预共享意味着通信双方必须在IPSec策略设置中就共享的密钥达成一致。 IPSec还支持3DES算法,3DES可提供更高的安全性,但计算速度更慢。 ----  7.密钥管理 (1)动态密钥更新。IPSec策略使用“动态密钥更新”法决定一次通信中新密钥产生的频率。 (3)Diffie-Hellman算法。要启动安全通信,通信两端必须首先得到相同的共享密钥(主密钥),但共享密钥不能通过网络相互发送,因为这种做法极易泄密。

    74730编辑于 2023-10-15
  • 来自专栏python3

    java 3

    0b 0B开头 八进制--以0 开头 十进制 十六进制---0x 0X  注意f 15 的使用,取出后4位二进制 进制间的转化 1.十进制--r进制,除R取余,倒着读 2.r进制--十进制,乘以权数 3.

    48820发布于 2020-01-17
  • 来自专栏OneTS安全团队

    Java安全--Java反射机制(1)

    声明 本文属于OneTS安全团队成员mes9s0的原创文章,转载请声明出处! 本文章仅用于学习交流使用,因利用此文信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,OneTS安全团队及文章作者不为此承担任何责任。 综上所述 , Java 反射机制的功能可分为如下几点 : 1、在程序运行时查找一个对象所属的类 2、在程序运行时查找任意一个类的成员变量和方法 3、在程序运行时构造任意一个类的对象 4、在程序运行时调用任意一个对象的方法 Runtime类在Java安全从零到一(3)中讲过 ) 其中 , 第一种方法是对第二种方法的封装 , 存在以下对应关系 : Class.forName( String className ) == Class.forName 安全从零到一(2)中讲过,可以详细翻看。

    46210编辑于 2025-02-07
  • 来自专栏全栈程序员必看

    Java安全安全加密算法

    Java安全安全加密算法 0x00 前言 本篇文来谈谈关于常见的一些加密算法,其实在此之前,对算法的了解并不是太多。了解的层次只是基于加密算法的一些应用上。也来浅谈一下加密算法在安全领域中的作用。 SHA 安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。 PKCS5Padding: 3. ISO10126Padding 常用的加密方式DES、3DES、AES。可以来对比一下,这几个算法的区别。 DES DES的算法其实已经被公开了,其实是不太安全的。 3DES也被叫做DESede,也就是基于DES三次加密。

    1.7K20发布于 2021-04-07
  • 来自专栏python3

    3A安全认证服务

    整个系统在网络管理与安全问题中十分有效。 基于AAA安全认证的协议包括两个:radius和tacacs RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系统由RFC2865,RFC2866 无论通过tacacs还是radius服务器都可以实现网络设备用户的统一管理,集中认证,从而实现安全的认证与登录。 AAA服务器的工作原理: ?

    2.4K10发布于 2020-01-07
  • 来自专栏python基础文章

    网络安全协议(3

    在普通操作系统的基础上,各种形式的安全增强操作系统增强了安全性,使得系统的安全性能够满足实际应用的需要。 这方面的例子如国内的安胜3.0操作系统、作为基于Linux核心的安全增强操作系统、达到国标GB17859的第3级标准。 评估等级分为EAL1、EAL2、EAL3、EAL4、EAL5、EAL6EAL7共七个等级。 EAL4是系统设计,测试和复查级。 ---- 3.国产操作系统的安全等级 相对来说,中国的安全操作系统研究起步较晚,但也开展了一系列工作。 (3)Asianux操作系统  2008年,红旗软件(中国)、MiracleLinux公司(日本)和韩软公司(韩国)联合签署了安全Asianux操作系统联合开发协议,宣称Asianux将成为最先进的安全

    63530编辑于 2023-10-15
  • 来自专栏sofu456

    sqlite3线程安全

    sqlite3 sqlite3.c文件中有sqlite_threadsafe的定义 /* ** The SQLITE_THREADSAFE macro must be defined as 0, 1, define SQLITE_THREADSAFE 1 /* IMP: R-07272-22309 */ #endif #endif 使用c++调用sqlite多线程调用异常,可以尝试重新编译sqlite3, 或者修改配置,sqlite3_threadsafe函数可以查看lib是否是线程安全的编译库 使用sqlite3_config函数,配置如下参数 #define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */ #define SQLITE_CONFIG_MULTITHREAD 2 /* nil */ #define SQLITE_CONFIG_SERIALIZED 3 5 /* sqlite3_mem_methods* */ #define SQLITE_CONFIG_SCRATCH 6 /* void*, int sz, int N */

    91410编辑于 2022-05-06
  • 来自专栏知了一笑

    SpringBoot3安全管理

    标签:Security.登录.权限; 一、简介 SpringSecurity组件可以为服务提供安全管理的能力,比如身份验证、授权和针对常见攻击的保护,是保护基于spring应用程序的事实上的标准; 在实际开发中 ,最常用的是登录验证和权限体系两大功能,在登录时完成身份的验证,加载相关信息和角色权限,在访问其他系统资源时,进行权限的验证,保护系统的安全; 二、工程搭建 1、工程结构 2、依赖管理 在starter-security -- 安全组件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security userBaseList.size() > 0){ return userBaseList.get(0) ; } return null ; } } 3、 return userService.getById(id) ; } } 五、参考源码 文档仓库: https://gitee.com/cicadasmile/butte-java-note

    77920编辑于 2023-09-01
领券