Web安全漏洞解决方案
1.已解密的登录请求


1.1.1 产生的原因
登录接口,前端传入的密码参数没有经过md5的加密就直接传给了后端
1.1.2 解决方法
前端代码传参的时候做md5加密处理

2.会话标识未更新


2.1.2 产生原因

3.“Content-Security-Policy”,“X-Content-Type-Options”,“X-Content-Type-Options”头缺失或不安全



3.1.1 产生原因
nginx.conf配置里没有添加对应的请求头
3.1.2 解决方法
nginx.conf里配置缺失的请求头

4.垂直越权
4.1.1 漏洞分析

1 @Target(ElementType.METHOD)
2 @Retention(RetentionPolicy.RUNTIME)
3 public @interface SecurityAuth {
4
5 /**
6 * 拥有权限的角色名
7 * @retuen
8 */
9 String roleName();
10 }
1 @Aspect
2 @Component
3 public class SecurityAspect {
4
5 @Autowired
6 private SysRoleUserService sysRoleUserService;
7
8 /**
9 * 自定义注解切点
10 */
11 @Pointcut("@annotation(com.broadu.modules.filter.SecurityAuth)")
12 public void annotationAspect(){}
13
14 /**
15 * 前置通知
16 */
17 @Around("annotationAspect()")
18 public Object doBefore(ProceedingJoinPoint joinPoint) throws Throwable {
19 // 拿到响应
20 HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
21 // 拿到当前登录用户
22 UserDetail user = SecurityUser.getUser();
23 if(null == user){
24 // 未登录
25 throw new RenException(ErrorCode.ACCOUNT_NOT_EXIST,"该用户不存在");
26 }
27 // 从切面织入点处通过反射机制获取织入点处的方法
28 MethodSignature signature = (MethodSignature) joinPoint.getSignature();
29 // 获取切入点所在的方法
30 Method method = signature.getMethod();
31 // 获取注解
32 SecurityAuth auth = method.getAnnotation(SecurityAuth.class);
33 // 获取该方法使用的角色
34 String roleNames = auth.roleName();
35 // 获取该用户的角色列表
36 if(ObjectUtil.notEqual(user.getSuperAdmin(),1)){
37 List<String> roleList = sysRoleUserService.getRoleNameList(user.getId());
38 List<String> list = new ArrayList<>();
39 if(null != roleList && roleList.size() > 0){
40 String[] roleName = roleNames.split(",");
41 for (String str : roleName) {
42 for (String s : roleList){
43 if(ObjectUtil.equal(str,s)){
44 list.add(s);
45 break;
46 }
47 }
48 }
49 if(list.size() == 0){
50 // 没有权限
51 throw new RenException(ErrorCode.ACCOUNT_NOT_PERMISSION,"该用户无权限访问");
52 }
53 }
54 }
55 // 有权限
56 return joinPoint.proceed();
57 }
58
59 }
1 @RestController
2 @Slf4j
3 @RequestMapping("/ftpConfiguration")
4 public class FtpConfigurationController {
5
6 @Autowired
7 FtpConfigurationService ftpConfigurationService;
8
9 @Autowired
10 FactorService factorService;
11
12 @SecurityAuth(roleName = "用户角色")
13 @GetMapping("/page")
14 @ApiOperation("统计报表")
15 public Result<PageData<FtpConfigurationDto>> page(@ApiIgnore @RequestParam Map<String, Object> params) {
16 PageData<FtpConfigurationDto> page = ftpConfigurationService.page(params);
17 List<FtpConfigurationDto> list = page.getList();
18 // 用户密码md5加密
19 list.forEach(item ->{
20 try {
21 item.setPassword(DigestUtils.md5Hex(item.getPassword()));
22 } catch (Exception e) {
23 log.info("加密异常信息:{}"+e.getMessage());
24 }
25 });
26 page.setList(list);
27 return new Result<PageData<FtpConfigurationDto>>().ok(page);
28 }




Web安全漏洞解决方案的更多相关文章
- Java WEB安全问题及解决方案
1.弱口令漏洞 解决方案:最好使用至少6位的数字.字母及特殊字符组合作为密码.数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密. ...
- 针对需要使用T3协议的Weblogic2628漏洞解决方案
针对需要使用T3协议的Weblogic2628漏洞解决方案 前几天用户的服务器中检查到了Weblogic2628l漏洞,并且打过Oracle官方补丁后还是能检测到. 针对此问题,去网上查找了一些资料. ...
- 手把手让你实现开源企业级web高并发解决方案(lvs+heartbeat+varnish+nginx+eAccelerator+memcached)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeze.blog.51cto.com/1846439/677348 此文凝聚 ...
- Web安全漏洞深入分析及其安全编码
摘自:http://blog.nsfocus.net/web-vulnerability-analysis-coding-security/ 超全Web漏洞详解及其对应的安全编码规则,包括:SQL注入 ...
- 基于 burpsuite的web逻辑漏洞插件开发(来自JSRC安全小课堂,柏山师傅)
基于 burpsuite的web逻辑漏洞插件开发 BurpSuite 提供了插件开发接口,支持Java.Python.Ruby语言的扩展.虽然 BApp Store 上面已经提供了很多插件,其中也不乏 ...
- 【OWASP TOP10】2021年常见web安全漏洞TOP10排行
[2021]常见web安全漏洞TOP10排行 应用程序安全风险 攻击者可以通过应用程序中许多的不同的路径方式去危害企业业务.每种路径方法都代表了一种风险,这些风险都值得关注. 什么是 OWASP TO ...
- [web安全]Web应用漏洞攻击分析与防范
网站攻击主要分为以下几类: (1) sql注入攻击 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.它是利 ...
- 宣布发布 Windows Azure 导入/导出服务的预览版以及 Web 和移动解决方案场景的若干增强功能
客户评估基于云的存储解决方案时,面临的挑战之一是以经济高效.安全快速的方式从 Blob 存储区移进和移出大量数据.今天,我们很高兴地宣布发布 Windows Azure 导入/导出的预览版,这款新服务 ...
- 基于Web的漏洞利用
1.Nikto 基于Web的漏洞信息扫描 nikto 自动扫描web服务器上没有打补丁的软件,同时同时也检测驻留在服务器上的危险文件,nikto能够识别出特定的问题,检测服务器的配置问题, 检测某台主 ...
- Web安全测试解决方案
Web安全测试解决方案 介绍常见的Web安全风险,Web安全测试方法.测试基本理论和测试过程中的工具引入
随机推荐
- 2021-09-10:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案
2021-09-10:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标.你可以假设每种输入只会对应一个答案, ...
- Prompt工程师指南[应用篇]:Prompt应用、ChatGPT|Midjouney Prompt Engineering
Prompt工程师指南[应用篇]:Prompt应用.ChatGPT|Midjouney Prompt Engineering 1.ChatGPT Prompt Engineering 主题: 与 Ch ...
- lec-5-Policy Gradients
直接策略微分 Goal: idea:求最大值:直接求导 tip:利用log导数等式进行变换 具体推导: 理解策略梯度 假定开始policy服从高斯分布,采样得到回报,计算梯度,根据reward增加动作 ...
- ABP - 依赖注入(1)
依赖注入实现了系统之间.模块之间和对象之间依赖关系的解耦,基本上是现代应用程序框架必不可少的一个组成部分. ABP的依赖注入系统是基于Microsoft的依赖注入扩展库(Microsoft.Exten ...
- docker 下MySQL主从读写分离配置
主从同步机制: 同步基于耳机子机制,主服务器使用二进制来记录数据库的变动状况,从服务器通过读取和执行日志文件来保存主服务的数据一致 首先要保障主从的版本一致或相近 1 登陆docker,拉取镜像 do ...
- Health Kit文档大变样,一起尝鲜!
Health Kit文档全新升级,开发场景更清晰,聚焦你关心的问题,快来一起尝鲜! 文档入口请戳:文档入口~ 如果你是运动健康的老朋友,可以从旧文档页面上方的提示信息中进入:最新版本哦. 一. 架构调 ...
- [MAUI程序设计] 用Handler实现自定义跨平台控件
@ 目录 Handler 与Xamarin.Forms实现的区别 为什么要用Handler代替Renderer 解耦 生命周期管理 更细粒度的控制 用Effect来实现呢? 自定义手势监听控件 在各平 ...
- 使用 coding.net 发布你的个人博客
微信文章不允许外链,本文章的静态示例站点,可在文章左下角 "阅读原文" 进行预览. 很多人喜欢在 github pages / gitee pages 发布自己的个人博客,前者由于 ...
- 自然语言处理 Paddle NLP - 词法分析技术及其应用
词法分析就是利用计算机对自然语言的形态(morphology) 进行分析,判断词的结构和类别等."简单而言,就是分词并对每个词进行分类,包括:分词.词性标注.实体识别三个任务 问答 知识图谱 ...
- 多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning
代码:https://github.com/haotian-liu/LLaVA 总览 在这篇论文中,作者首次尝试使用纯语言 GPT-4 生成多模态语言图像指令遵循数据(insruction-follo ...