什么是逻辑漏洞?
web应用程序中的逻辑漏洞各不相同,有的很明显,有的很微妙。与SQL注入和跨站不同,逻辑漏洞没有共有的“签名”,定义特性是指应用程序执行的逻辑存在某种缺陷。大部分逻辑缺陷表现为开发者在思考过程中做出的特殊假设存在明显或隐含的错误,通俗点来说,有的开发者会这样认为,如果发生A,就会出现B,因此我执行C。没有考虑如果发生X会怎么样,这种错误的假设会造成许多安全漏洞。逻辑漏洞是多样性的,挖掘它们需要从不同的角度思考问题,设法了解设计者和开发者做出的各种假设,然后考虑如何攻击。
常见的逻辑漏洞:
比如,密码找回、交易支付、密码修改、突破限制等。
逻辑漏洞的类别:
登录缺陷
账户认证缺陷
会话管理缺陷
权限管理缺陷
支付逻辑缺陷
api滥用
逻辑漏洞的本质:
主要源于设计者或者开发者在思考过程中做出的特殊假设存在明显或隐含的错误
如何修复逻辑漏洞:
- 确保将应用程序各方面的设计信息都详细的记录在文档中,方便其他人了解设计者做出的每个假设。
- 要求源代码提供清楚的注释,包括每个代码的组件的用途和预计用法以及每个组件对它无法直接控制的内容做出的假设。
- 根据会话确定用户的身份和权限,不要根据请求的其他特性对用户的权限做出假设。
逻辑漏洞的特点:
普遍存在性:由于功能的实现所需要大量的逻辑操作,同事受制与程序员的背景,这类