oscar999
毕业于中国科学技术大学,具备数据库四级、系统设计师、系统分析师、信息系统项目管理师资格、国际项目管理(IPMP)认证。
- 出版《Spring+Spring MVC+MyBatis整合开发实战》,撰写《Ext JS开发大全》,《Git极简教程》,《Web应用开发安全》等系列电子书籍。
- 超20年软件开发和项目管理经验,精通Java、Web相关技术(包括Spring系列、Ext JS等)、AI应用;熟悉PHP、Python、C#、Vue等开发技术。目前专注大型软件系统架构及AI增强软件开发全流程领域。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OAuth 完全指南:从“代客泊车钥匙”到现代互联网的授权基石
打开某个新网站,看到“使用微信登录”或“使用 Google 账号登录”的按钮,点击、确认授权、完成登录——整个过程大概只需要三秒钟。很少有人在这一刻停下来想:这个第三方网站并没有索要密码,却拿到了账户信息。它凭什么?背后的答案,就是 OAuth。过去近二十年里,OAuth 从一个解决 Twitter 具体技术问题的内部方案,成长为互联网世界最核心的授权协议之一。原创 2026-05-20 21:43:27 · 283 阅读 · 0 评论 -
OpenID 简史:一个身份协议的理想、挫败与重生
在这个每个人平均拥有上百个在线账号的时代,“密码疲劳”已经成了一种无声的公共情绪。而早在2005年,就有一个年轻人试图解决这个问题。他叫布拉德·菲茨帕特里克(Brad Fitzpatrick),大型博客社区LiveJournal的创办人。同年6月27日,他发布了一套身份识别系统的雏形,后来被称为OpenID。这个协议的初心极其朴素:用户只需要在一个地方注册一个身份,就能用它登录互联网上所有支持OpenID的网站,不再需要为每个网站分别创建账号和记住密码。这种想法在当时看来几乎称得上浪漫。原创 2026-05-20 21:27:40 · 138 阅读 · 0 评论 -
OAuth、OpenID Connect 与 JWT 的前世今生
本文厘清了OAuth、OpenID Connect和JWT三个常被混淆的概念。OAuth 2.0是授权协议,解决应用代表用户访问资源的问题;OpenID Connect在OAuth基础上添加身份认证层,提供ID Token确认用户身份;JWT则是一种自包含的数据格式,常用于承载令牌信息。三者协同工作:OAuth定义授权流程,OIDC处理认证,JWT作为信息载体。理解它们各自的功能和关系,有助于在开发中正确实现登录和授权系统。原创 2026-03-24 22:28:56 · 297 阅读 · 0 评论 -
微服务安全实战指南:从授权到日志,全面解析核心模式与最佳实践
微服务安全并非一蹴而就的“配置项”,而是一系列贯穿设计、开发、运维全生命周期的决策。如何让系统在默认不安全的环境里,依然值得信赖。原创 2026-02-12 21:43:21 · 344 阅读 · 0 评论 -
自动参数绑定的风险:Mass Assignment漏洞[高风险]
摘要: Mass Assignment(大规模赋值)漏洞是现代Web框架中因自动参数绑定功能引发的安全隐患,允许攻击者通过构造恶意请求篡改未授权的敏感字段(如isAdmin、role等)。该漏洞在各类框架中名称不同(如Spring的Autobinding、PHP的Object injection),但本质相同。典型案例包括GitHub 2012年的安全事件。防御核心是采用DTO模式或参数白名单(推荐)而非黑名单。主流框架(Spring、NodeJS、Laravel等)均提供防护机制,需严格限制可绑定字段,尤原创 2026-02-12 20:59:35 · 211 阅读 · 0 评论 -
gRPC 安全完全指南
gRPC安全实践指南 本文系统梳理了gRPC服务的安全控制措施,涵盖传输安全、认证授权、输入验证、限流熔断等关键方面。主要内容包括: 传输安全:必须启用TLS加密,推荐使用mTLS实现双向认证,采用短生命周期证书并自动轮换。 认证与授权: 通过拦截器实现JWT令牌和API Key认证 基于RBAC模型进行精细化权限控制 记录详细审计日志 输入验证: 使用protoc-gen-validate进行自动校验 采用白名单验证防范注入攻击 设置消息大小限制防止DoS攻击 速率限制:基于客户端特征实施请求限流,保护后原创 2026-02-11 21:11:32 · 122 阅读 · 0 评论 -
SQL注入与盲SQL注入漏洞解析及防御指南
摘要: 本文解析了SQL注入与盲SQL注入的原理、攻击手法及防御策略。SQL注入通过恶意SQL语句篡改数据库查询,导致数据泄露或系统控制;盲SQL注入则通过布尔判断或时间延迟无回显窃取数据。防御措施首选参数化查询,避免动态拼接SQL,并需警惕黑名单过滤、存储过程滥用等误区。OWASP推荐预处理语句、输入过滤、最小权限原则等策略,强调自动化工具(如sqlmap)的局限性和开发者的安全意识。原创 2026-02-11 21:10:50 · 118 阅读 · 0 评论 -
深入解析不安全反序列化漏洞与防护[高风险]
本文探讨了不安全反序列化漏洞的原理、风险及防护策略。反序列化过程若未严格校验输入,攻击者可注入恶意序列化数据执行任意代码。文章针对PHP、Python、Java和.NET等语言提供了具体防护建议:优先使用JSON等安全格式,实施严格的白名单控制,避免原生反序列化机制。关键防护措施包括输入验证、最小权限配置、代码审计和运行时监控。核心思路是"最小化"和"显式控制",采用纯数据格式、数据签名验证,并使用专业工具检测加固,从根本上降低反序列化漏洞风险。原创 2026-02-09 20:51:22 · 105 阅读 · 0 评论 -
Command Injection(命令注入)漏洞及其防御策略
摘要: 命令注入是一种高危漏洞,允许攻击者通过注入恶意指令操纵系统执行任意命令。典型场景包括:未过滤用户输入的C程序拼接cat命令后被注入;ls,PHP脚本直接执行rm $file导致参数注入,以及环境变量滥用引发的恶意脚本执行。防御核心在于避免直接调用系统命令,必须调用时应采用参数化结构(如Java的ProcessBuilder)、白名单验证输入,并遵循最小权限原则。工具如Coverity可通过静态分析识别危险函数调用链。开发者需牢记:永远不信任外部输入,安全应贯穿开发全流程。 (150字)原创 2026-02-09 20:45:58 · 388 阅读 · 0 评论 -
Sigma配置完全指南
《SIGMA配置完全指南》摘要:本文详细介绍了静态代码分析工具Black Duck Sigma的配置体系。主要内容包括:1) 配置基础与核心概念,说明Sigma默认配置与定制化需求的差异;2) 核心配置选项详解,涵盖全局设置、输出控制及环境变量;3) 配置文件实战,介绍YAML配置文件的创建与CI/CD集成;4) 高级定制,重点讲解严重性级别覆盖机制;5) 配置工作流建议,提供从初始扫描到渐进配置的最佳实践。通过灵活配置,Sigma可深度融入团队开发流程,成为专属安全分析伙伴。原创 2026-01-15 22:52:23 · 124 阅读 · 0 评论 -
Sigma:轻量快速的代码安全“侦察兵”
摘要:Sigma是一款轻量快速的静态代码分析工具,专为现代开发流程设计。作为Black Duck旗下的"侦察兵",它能快速扫描代码漏洞,无缝集成CI/CD流程。Sigma通过模块化"检查器"定位各类安全问题,支持自定义策略,并与Coverity形成互补组合。提供命令行和Docker两种使用方式,适合嵌入开发各环节。获取需Coverity许可证,是追求效率与安全平衡的团队理想选择。(149字)原创 2026-01-15 22:33:41 · 209 阅读 · 0 评论 -
SSE(Server-Sent Events)完整使用示例
本篇使用Node.js 作为服务端,在浏览器客户端演示SSE的完整实例和演示。实现了一个基于 Server-Sent Events (SSE) 的实时数据推送功能。原创 2025-05-04 09:55:18 · 667 阅读 · 0 评论 -
一篇撸清 Http,SSE 与 WebSocket
特性HTTPWebSocket通信模式请求-响应(客户端主动发起)单向推送(仅服务器到客户端)全双工(客户端与服务器双向通信)协议基础基于 HTTP基于 HTTP 长连接独立协议(握手阶段依赖 HTTP)连接类型短连接(默认)或长连接(HTTP/1.1)长连接(持久性)长连接(持久性)数据格式任意格式(文本、二进制等)仅文本(UTF-8)文本和二进制延迟高(依赖轮询或长轮询)低(服务器主动推送)极低(双向即时通信)自动重连不支持支持(内置重连机制)原创 2025-05-04 09:54:25 · 966 阅读 · 0 评论 -
Java高风险之在用户界面(UI)中显示敏感数据(Display of sensitive data in the user interface)
Display of sensitive data in the user interface,在用户界面(UI)中显示敏感数据可能带来多种风险,这可能导致信息泄露和不必要的风险,因为敏感数据可能会被截屏、监控软件捕获、或者被旁观者看到。这些风险涉及数据泄露、身份盗用、经济损失和法律处罚等。数据泄露如果敏感数据(如个人身份信息、财务数据、业务信息等)在UI中未受保护地显示,任何能够访问该界面的用户或恶意第三方都可能获取这些信息。身份盗用。原创 2024-07-13 11:13:33 · 648 阅读 · 0 评论 -
软件代码漏洞风险等级
代码漏洞的风险等级通常根据漏洞的潜在影响、利用难易程度以及可能造成的损害程度来划分。不同的组织或机构可能会采用不同的标准或评分系统来评估漏洞的风险等级。原创 2024-07-09 22:14:00 · 1369 阅读 · 0 评论 -
Java高风险漏洞与修复之——LDAP injection(LDAP注入)
LDAP注入是一种攻击技术,它可以利用应用程序中的安全漏洞对LDAP(轻量级目录访问协议)服务进行恶意查询或修改操作。当应用程序未能适当地清理用户的输入内容,将其嵌入到LDAP查询中时,就可能发生LDAP注入。攻击者通过注入未经授权的指令或条件来操纵查询结果,可能导致敏感数据的泄露、未授权的数据修改或者删除。与SQL注入类似,LDAP注入可以使攻击者修改LDAP查询的逻辑,对LDAP树目录进行不合法的搜索和修改。例如,攻击者可以修改一个查询,绕过登录验证,或者获取无权访问的用户信息。原创 2024-07-02 22:39:08 · 1082 阅读 · 0 评论 -
Java代码高风险弱点与修复之——弱密码哈希漏洞-Very weak password hashing (WEAK_PASSWORD_HASH)
在安全性方面,此代码的一个主要问题在于,它依赖于使用SHA-256哈希函数直接处理密码以产生密钥。弱密码哈希漏洞指的是在密码存储和验证过程中,由于使用了不安全的哈希算法或哈希函数的错误使用,导致攻击者能够更容易地破解或绕过密码验证机制。以上代码结合了安全的随机盐值、密钥衍生函数和迭代次数等多个安全机制,大大提升了密码到密钥转换过程的安全性。这意味着相同的密码将始终生成相同的密钥,降低了安全性。:若用户选择的密码复杂度不高,如普通单词或常见短语,即使经过SHA-256哈希,生成的密钥也容易遭受彩虹表攻击。原创 2024-06-29 21:50:43 · 874 阅读 · 0 评论 -
日志注入风险与解决-Log injection (LOG_INJECTION)
例如,如果将用户提供的恶意字符作为日志输出内容时,就可能会导致日志文件中出现不安全的语句,从而攻击系统。总之,在使用日志记录器(Logger)时,应该避免将用户提供的数据直接作为日志输出内容,可以使用占位符的方式来代替用户提供的数据,以避免黑客攻击。为了避免这个警告,应该避免将用户提供的数据直接作为日志输出内容,可以使用占位符(placeholder)的方式来代替用户提供的数据,以避免黑客攻击。在这个修改后的示例代码中,使用占位符的方式,将用户提供的数据作为参数传递给日志记录器的方法,从而避免了黑客攻击。原创 2024-06-29 11:41:52 · 965 阅读 · 0 评论 -
Java路径操纵漏洞示例与解决赏析之一
这里涉及到文件系统的操作,因此可能存在路径遍历(也称为目录遍历)漏洞。这类漏洞使得攻击者通过修改路径输入(例如包含。这段代码的作用是用于查找路径下 ,某个包的所有类文件。之类的序列),访问不应被访问的文件系统目录。原创 2024-06-27 22:18:38 · 1018 阅读 · 0 评论 -
Spring Boot 3 极速搭建OAuth2认证框架
使用 Spring Authorization Server 的较高版本,简单的状况只需要在 application.yml 配置就可以实现认证服务器, 如果要更详细的配置,也可以定义 SecurityConfig.java 进行配置。Spring Authorization Server支持四种授权方式, 简单起见,这里使用 客户端模式(Client Credentials),这种模式使用在API调用的授权上,这里使用 Postman进行验证。定义一个REST的控制器,并且写一个简单的映射方法。原创 2024-03-22 07:11:22 · 2444 阅读 · 7 评论 -
Java代码弱点与修复之——INT: Suspicious integer expression
"INT: Suspicious integer expression" ,可疑的整数表达式。该类型的漏洞指的是代码使用了不恰当的整数表达式。原创 2023-07-23 11:59:22 · 378 阅读 · 0 评论 -
Java代码弱点与修复之——Risky cryptographic hashing function (RISKY_CRYPTO)
Risky cryptographic就是指代码中使用了哪些不够安全的加密算法,也就是弱哈希算法。 RIPEMD、MD2、MD4、MD5、SHA0 和 SHA1 加密哈希算法不具有抗冲突性。 此外,这些算法还遭受长度扩展攻击:在不知道原始未散列消息的情况下,攻击者可以为以原始消息作为前缀的消息生成有效散列。原创 2023-07-22 10:39:00 · 520 阅读 · 0 评论 -
Coverity 概述
Coverity是一款代码静态扫描的工具, 可以检查的问题有:* 质量问题* 安全漏洞* 测试问题 , Test Advisor* Java 运行时缺陷原创 2023-07-12 22:00:43 · 2792 阅读 · 1 评论 -
Java高风险弱点与修复之——SQL injection(SQL注入)
SQL 注入(SQL injection)是一种常见的安全漏洞,指的是通过在应用程序的输入中注入恶意的 SQL 代码,从而能够执行未经授权的数据库查询。攻击者可以利用这个漏洞来读取、修改或删除数据库中的数据,或者通过应用程序的身份验证机制获得未经授权的访问权限。原创 2023-05-26 07:20:47 · 1686 阅读 · 0 评论 -
Java代码弱点与修复之——LI: Unsynchronized Lazy Initialization
如果懒加载的初始化操作没有被正确地同步,就可能导致多线程访问时的不一致,从而导致程序错误和异常。原创 2023-05-20 08:30:27 · 725 阅读 · 0 评论 -
Java代码弱点与修复之——Unintended regular expression(非期望的正则表达式)
意外的正则表达式(正则表达式混淆)附带某些输入的字符串操作返回了不正确的结果。原创 2023-05-19 21:04:35 · 896 阅读 · 0 评论 -
Java代码弱点与修复之——RC: Questionable use of reference equality rather than calling equals
"RC" 表示 "Questionable use of reference equality rather than calling equals",翻译的意思是: 使用了引用相等性(reference equality)而没有调用 equals 方法的方式进行两个对象比较,这种用法有可能有问题。这种问题可能会导致程序错误或不稳定的行为。原创 2023-05-11 21:31:14 · 481 阅读 · 0 评论 -
使用Eclipse +SpotBugs 检测代码弱点
SpotBugs 是分析Java代码弱点的静态分析工具,SpotBugs提供了Eclipse的插件使用方式,在Eclipse 中安装插件之后就可以坚持Java代码的弱点了。原创 2023-05-10 06:50:52 · 1605 阅读 · 0 评论 -
Java代码弱点与修复之——STCAL: Static use of type Calendar or DateFormat
避免静态使用 Calendar 和 DateFormat 类型可以提高程序的健壮性和可维护性,以及避免多线程环境下可能出现的错误。原创 2023-05-08 21:58:48 · 1304 阅读 · 0 评论 -
Spring Boot项目之伪Masked Field弱点解决
在上面一篇也提到了, 即使没有实际存在Masked Field 弱点的状况下, 有时候扫描工具也会扫到该弱点,场景就是:如果一个私有字段可以在外部被访问或者修改,无论是直接使用还是通过复杂的方法来修改,都可能会导致数据不一致或者安全问题的出现。这里的“伪Masked Field” 指的不是真正的“掩码字段”漏洞,但是却被代码扫描工具扫描出来具有该类型的弱点。对于这里而言, 在子类和父类中同时注入了 EntityManager , 会被扫描工具认为这个字段会被修改,导致不一致 ,所以提示这个风险。原创 2023-05-08 20:47:00 · 727 阅读 · 0 评论 -
Java代码弱点与修复之——Masked Field(掩码字段)
“掩码字段”的代码弱点出现在一个类中包含了一个私有字段和一个返回该字段的方法,该法通过掩码或其他方式来设置该私有字段的一部分,以便进行其他操作。这种方式可能会导致数据的不一致性或者安全漏洞,例如在数据持久化时出现问题,或者在应用层被篡改敏感数据的值导致出现安全问题等。原创 2023-05-05 22:02:59 · 829 阅读 · 0 评论 -
Java代码弱点与修复之——Se: Incorrect definition of Serializable class(可序列化类的定义不正确)
Se: Incorrect definition of Serializable class,可序列化类的定义不正确。 该弱点属于低风险。原创 2023-04-24 21:43:40 · 855 阅读 · 0 评论 -
Web之DOM-based cross-site scripting漏洞处理
DOM-based cross-site scripting,基于DOM的跨站脚本攻击。在使用Coverity静态扫描工具扫描可以发现这类型的风险。原创 2023-04-02 20:07:13 · 649 阅读 · 0 评论 -
Java非空判断相关的弱点类型汇总与比较
缺少非空判断可能会导致`NullPointerException`异常,严重会发生程序崩溃或出现其他异常, 而编码过程中非空判断的类型也有多种。原创 2023-03-08 06:59:53 · 688 阅读 · 0 评论 -
Java代码弱点与修复之——Explicit null dereferenced(显式空间接引用)
Explicit null dereferenced, 显示空间接引用。是 Coverity 静态代码分析工具检测到的一种中风险缺陷。这种缺陷通常发生在尝试使用空指针引用调用对象上的方法或访问属性时。Explicit null dereferenced的缺陷可能会导致程序崩溃或产生不可预测的结果。原创 2023-03-07 21:21:18 · 1074 阅读 · 0 评论 -
Java代码弱点与修复之——Dereference null return value(间接引用空返回值)
Dereference null return value,间接引用空返回值。是Coverity Scan静态代码分析工具中的一个警告,表示代码中有对可能为空(null)的方法或函数返回值进行间接引用(Dereference)操作。该类型的漏洞可能会导致 `NullPointerException` 异常,并且会导致程序崩溃或出现其他异常。原创 2023-03-06 22:38:00 · 1616 阅读 · 0 评论 -
Java代码弱点与修复之——BC: Bad casts of object references(错误的强制类型转换)
Bad casts of object references: 错误的强制类型转换。在Coverity中,属于低风险漏洞。在FindBugs中, 该类型错误的编号是FB.BC_UNCONFIRMED_CAST,它表示存在可能存在不安全的类型转换。在Java中,如果在将一个对象转换为另一个类型时出错,会抛出ClassCastException异常。这个警告就是为了防止这种情况发生。原创 2023-03-05 20:46:22 · 620 阅读 · 0 评论 -
Java代码弱点与修复之——Copy-paste error(复制粘贴错误)
Copy-paste error,复制粘贴错误。是指在复制和粘贴代码时产生的错误。这种错误通常是由于程序员在复制代码时未正确编辑所复制的代码或编辑复制后的代码时忘记更改一些值或参数而导致的。复制粘贴错误可能会导致程序逻辑错误、编译错误或运行时错误。原创 2023-03-04 09:21:39 · 1780 阅读 · 0 评论 -
Java代码弱点与修复之——Open redirect(开放重定向)
Open redirect , 开放重定向,是一种常见的安全漏洞,也被称为“重定向漏洞”。该漏洞通常出现在 Web 应用程序中,攻击者可以利用它将用户重定向到恶意站点,从而进行钓鱼攻击、恶意软件传播、诱骗等活动。原创 2023-03-03 22:24:33 · 2529 阅读 · 0 评论 -
Java代码弱点与修复之——Dereference after null check-空检查后间接引用
Dereference after null check-空检查后间接引用。 在Java语言中,通俗点的说明就是: 对于一个可能为空的变量,前面使用的时候进行了非空判断,后面使用的时候又没有进行非空判断。是指在复制和粘贴代码时产生的错误。这种错误通常是由于程序员在复制代码时未正确编辑所复制的代码或编辑复制后的代码时忘记更改一些值或参数而导致的。复制粘贴错误可能会导致程序逻辑错误、编译错误或运行时错误。原创 2023-03-02 22:19:32 · 1451 阅读 · 0 评论
分享