aspectj

关于IAST灰盒安全测试技术,看悬镜宁戈这篇就够了~

强颜欢笑 提交于 2020-09-30 06:48:42
点击蓝字 关注我们 悬镜安全作为国内DevSecOps理念的最佳实践者之一,在IAST灰盒安全测试技术方面有着丰富的落地实践经验。2020年9月5日(上周六),悬镜安全技术负责人宁戈受行业媒体安在邀约,参与“安在新媒体网络安全创新沙龙”,并在活动现场做《新一代灰盒安全测试技术与实践》主题演讲,向业界同行与媒体嘉宾详细介绍了DevSecOps和IAST技术核心点,以及在悬镜安全的落地实践案例,获得了现场一致好评! 图|演讲人-悬镜安全技术负责人宁戈 开发安全面临的两个问题 (1) 系统一定有未被发现的安全漏洞 。 程序员每写 1000行代码,就会出现1个逻辑性缺陷。每个逻辑性的缺陷,或者若干个逻辑性缺陷,最终导致一个漏洞;因此“缺陷是天生的,漏洞是必然的”。 (2) 现代应用都是组装的而非纯自研 。 78%-90%的现代应用融入了开源组件,平均每个应用包含147个开源组件,且67%的应用采用了带有已知漏洞的开源组件,软件供应链安全威胁迫在眉睫。 现代应用安全的风险面,主要来自第三方开源组件缺陷(如CNNVD/CNVD/CVD漏洞)和自研代码,Web通用漏洞(SQL注入、命令执行、XXE、XSS等OWASP TOP10)和业务逻辑漏洞(水平/垂直越权、短信轰炸、批量注册、验证码绕过等 )。 因此, 针对现代应用全面风险审查应考虑从第三方开源组件、自研代码通用漏洞

Spring Retry框架——看这篇就够了

自作多情 提交于 2020-09-30 02:44:31
简介 软件架构从当初的单机,演变到后来的集群,再到后来的分布式应用。原本看似可以信任的服务调用,加上了网络因素就变得不再可靠。再考虑到一些调用链路的特殊性,又要保证性能,又要尽可能增加成功率,所以调用方必须肩负起重试的责任。 自己写,怎样实现? 重试并不复杂,首先来分析下重试的调用场景,可以想到业务当中不止一处会需要重试能力,并且业务其实更关乎自己的代码块被重试就可以了,而不在乎如何实现的重试。 所以变化的是一段可以重复执行的代码块,以及重试次数等。 ① 代码块可以用Java8支持的函数式编程解决 ② 次数可以用入参/配置实现 首先定义一个执行的模版,结合上面我们的分析,这个模版需要一个待实行的 方法块 ,以及 配置。 (次数等区分场景,用枚举定义,方便全局管控): @AllArgsConstructor @Getter public enum RetrySceneEnums { QUERY_USER_INFO("查询用户信息", 2), ; private String desc; private int retryTimes; } abstract class MyRetryTemplate<Req, Resp> { /** 配置 */ private IntegrationRetryEnums retryEnum; /** 方法块 */ private Function

面试官:你说你精通SpringBoot,你给我说一下类的自动装配吧

∥☆過路亽.° 提交于 2020-09-26 05:57:40
剖析@SpringBootApplication注解 创建一个SpringBoot工程后,SpringBoot会为用户提供一个Application类,该类负责项目的启动: @SpringBootApplication public class SpringbootSeniorApplication { public static void main(String[] args) { SpringApplication.run(SpringbootSeniorApplication.class, args); } } 这是一个被 @SpringBootApplication 注解的类,该注解完成了SpringBoot中类的自动装配任务: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM,

Does Mojo's AspectJ Maven Plugin work with jdk 9+?

夙愿已清 提交于 2020-08-25 06:59:39
问题 I have a project that uses Mojo's AspectJ Maven Plugin. It works fine with jdk 8. When I try to switch to jdk14, the build fails with the following error: [ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.11:compile (default) on project AspectJDemo: Execution default of goal org.codehaus.mojo:aspectj-maven-plugin:1.11:compile failed: Plugin org.codehaus.mojo:aspectj-maven-plugin:1.11 or one of its dependencies could not be resolved: Could not find artifact com.sun:tools

【Spring】Spring AOP 代理对象生成逻辑源码分析

非 Y 不嫁゛ 提交于 2020-08-20 08:16:23
1. spring aop案例(POJO注入) 1.0 被代理接口 TargetInterface /** * 被代理的接口 * @author Yang ZhiWei */ public interface TargetInterface { void show(); String showName(); } 1.1 被代理对象 @Slf4j public class TargetObject implements TargetInterface { @Override public void show() { log.info("show----->I am a TargetObject!"); } @Override public String showName() { return "showName--->TargetObject !"; } } 1.2 通知 MyAdvice @Slf4j public class MyAdvice { public void takeSeat() { log.info("====> MethodBeforeAdvice:Take Seat!"); } public void turnOffPhone() { log.info("==> MethodBeforeAdvice:turn Off Phone!"); } public

Spring AOP 原理

落爺英雄遲暮 提交于 2020-08-18 21:17:22
一、AOP是什么? AOP的全称是Aspect Orient Programming,即面向切面编程。是对OOP(Object Orient Programming)的一种补充,战门用于处理一些具有横切性质的服务。常常用于日志输出、安全控制等。 上面说到是对OOP的一种补充,具体补充的是什么呢?考虑一种情况,如果我们需要在所有方法执行前打印一句日志,按照OOP的处理思想,我们需要在每个业务方法开始时加入一些语句,但是我们辛辛苦苦加完之后,如果又要求在这句日志打印后再打印一句,那是不是又要加一遍?这时候你一定会想到,在某个类中编写一个日志打印方法,该方法执行这些日志打印操作,然后在每个业务方法之前加入这句方法调用,这就是面向对象编程思想。但是如果要求我们在业务方法结束时再打印一些日志呢,是不是还要去每个业务方法结束时加一遍?这样始终不是办法,而且我们总是在改业务方法,在业务方法里面掺杂了太多的其他操作,侵入性太高。 这时候AOP就起到作用了,我们可以编写一个切面类(Aspect),在其中的方法中来编写横切逻辑(如打印日志),然后通过配置或者注解的方式来声明该横切逻辑起作用的位置。 二、实现技术? AOP(这里的AOP指的是面向切面编程思想,而不是Spring AOP)主要的的实现技术主要有Spring AOP和AspectJ。 1、AspectJ的底层技术。