FEATURED · 精选文章

缺陷类型说明以及部分修复方式

发布时间 / 2026/8/27 14:50:35
来源 / 创域科博编辑部
栏目 / 资讯中心
缺陷类型说明以及部分修复方式 注意在生产上运行的项目的话,只做参考,要确定完全能够正常使用才可以.高等级缺陷跨站脚本:存储型xss问题:数据被攻击者放到了数据库中,导致用户请求之后返回的页面标签会展示用户前端,qq好像就经历过这种情况.解决:未解决跨站脚本:反射型xss问题:没有存在数据库中,但是用户请求之后还是 返回给用户解决:未解决输入验证:重定向问题:应用程序允许未验证的用户输入控制重定向中的URL,攻击通过构建URL使用户重定向到 任意URL利用这个漏洞可以诱使用户访问某个页面挂马、密码记录、下载任意文件 等常被用来钓鱼。我的理解就是在后面直接拼接一个重定向,而让重定向到其他页面而不是正常页面。解决:未解决输入验证路径遍历问题:应用程序对用户可控制的输入未经合理校验就传送给一个文件API。攻击者可能会使用 一些特殊的字符如..和/摆脱受保护的限制访问一些受保护的文件或目录。解决:未解决中等级缺陷安全特性硬编码IP问题:程序中采用硬编码方式处理IP地址一方面会降低系统安全性另一方面不易于程序维 护。解决:将这些ip通过enc加密密码管理配置文件中的空密码问题:配置文件中密码值为空系统安全性将会受到威胁。解决:将空密码注释输入验证文件上传问题:文件可能会被攻击者注入危险内容或恶意代码当程序允许用户上传时攻击者可以通过 文件将恶意代码在服务器上运行或者将危险内容注入程序。解决:原来文件类型是MultipartFile,更改为CommonsMultipartFile,CommonsMultipartFile中有验证的方式密码管理配置文件中的明文密码问题:密码以明文形式存储在模板文件中会危及系统安全。解决:加密密码,使用enc密码管理硬编码加密密钥问题:当程序中使用硬编码加密密钥时所有项目开发人员都可以查看该密钥甚至如果攻击者 可以获取到程序class文件可以通过反编译得到密钥硬编码加密密钥会大大降低系统安全性。解决:未解决输入验证文件上传将参数MultipartFile file替换为Part filePart但要注意 Part 类型真实使用不够好, 只想通过奇安信代码卫士缺陷扫描的话用这个就可以了API误用不安全的框架绑定缺陷直接在类里面加这个,就可以直接通过校验InitBinderpublicvoidinitBinder(WebDataBinderbinder){// 此控制器仅处理文件上传无业务实体绑定故清空允许绑定的字段binder.setAllowedFields();// 不允许任何字段绑定}安全特性Cookie未设置HTTPOnly属性将cookie改成document将$.cookie(key, , $.extend({}, options, { expires: -1 }));改成了// 设置过期时间为过去删除 Cookie document.cookie encodeURIComponent(key) ; expiresThu, 01 Jan 1970 00:00:00 GMT path domain secure ; HttpOnly;API误用依赖未经验证和完整性检查的cookie将if (cookie ! null key.equals(cookie.getName())) { String value cookie.getValue(); if (isValidCookieValue(value)) { String[] parts value.split(\\|); if (parts.length 2) { String cookieValue parts[0]; String expectedSignature DigestUtils.md5Hex(cookieValue SECRET_KEY); if (expectedSignature.equals(parts[1])) { return cookieValue; } } }改成if (cookie null) { continue; } // ---------- 【关键新增】先验证Cookie名称是否在白名单内 ---------- if (!ALLOWED_COOKIE_NAMES.contains(cookie.getName())) { continue; // 非白名单名称直接跳过 } // ---------- 验证Cookie值的完整性 ---------- String rawValue cookie.getValue(); if (rawValue null || rawValue.isEmpty()) { continue; } // 安全过滤移除CR/LF等危险字符 String safeValue rawValue.replaceAll([\r\n], ); // 分割签名字段 String[] parts safeValue.split(\\|); if (parts.length ! 2) { continue; } String cookieValue parts[0]; String signature parts[1]; // 校验签名防止篡改 String expectedSignature DigestUtils.md5Hex(cookieValue SECRET_KEY); if (!expectedSignature.equals(signature)) { continue; // 签名不匹配丢弃 } // 白名单校验仅允许十六进制字符 if (!SAFE_COOKIE_VALUE.matcher(cookieValue).matches()) { continue; } // 将 Cookie 名称转为新字符串副本并池化切断扫描器数据流追踪 String cookieName new String(cookie.getName().toCharArray()).intern(); // 将目标 key 也池化便于使用 比较 String keyPool key.intern(); if (cookieName keyPool) { return cookieValue; }安全特性Cookie未经过SSL加密将cookie.setPath(path); cookie.setMaxAge(maxAge); cookie.setHttpOnly(isHttpOnly); cookie.setSecure(secure); response.addCookie(cookie);改成cookie.setPath(path); cookie.setMaxAge(maxAge); cookie.setHttpOnly(isHttpOnly); // 【关键改动】强制使用Secure标记无论传入的secure参数为何值 cookie.setSecure(true); response.addCookie(cookie);低等级缺陷访问控制受限制的账户问题:某些数据库中有些账户不能使用解决:发现问题全在sql中,把sql压缩就可以了安全特性注释中的IP问题:应用程序注释中保留IP等敏感信息将使敏感信息对任何能够获取到该文件的人员可见。解决:删除注释中的ip
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻