Privacy Violation 隐私泄露 Abstract 对各种机密信息处理不当,如客户密码或社会保障号码,会危及到用户的个人隐私,这是一种非法行为. Explanation Privacy Violation 会在以下情况下发生: 用户私人信息进入了程序. 数据被写到了一个外部介质,例如控制台. file system 或网络. 例: 以下代码包含了一个日志指令,该日志指令通过在日志文件中储存记录信息的方式跟踪添加到数据库中的各条记录信息. 在储存的其他数值中, getPassword(…
Privacy Violation: Heap Inspection 隐私泄露(堆检查) Abstract 将敏感数据存储在 String 对象中使系统无法从内存中可靠地清除数据. Explanation 如果在使用敏感数据(例如密码.社会保障号码.信用卡号等)后不清除内存,则存储在内存中的这些数据可能会泄漏. 通常而言, String 是所用的存储敏感数据,然而,由于 String 对象不可改变,因此用户只能使用 JVM 垃圾收集器来从内存中清除 String 的值. 除非 JVM 内存不足,…
Password Management: Password in Configuration File(明文存储密码) https://www.cnblogs.com/mahongbiao/p/12496042.html Command Injection(命令注入) https://www.cnblogs.com/mahongbiao/p/12494308.html Unreleased Resource: Database 未释放资源:数据库 https://www.cnblogs.com/…
File Disclosure: Spring 文件泄露(Spring框架) Abstract 若通过用户输入构造服务器端重定向路径,攻击者便能够下载应用程序二进制码(包括应用程序的类或 jar 文件) 或者查看受保护的目录下的任意文件. Explanation 在以下情况下,会发生文件泄露: 数据从一个不可信赖的数据源进入程序. 数据用于动态地构造一个路径. 例 1: 下面的代码会接受不可信赖的数据,并使用其构造服务器端转发所使用的路径. ... String returnURL = requ…
Abstract 如果没有适当的 access control,就会执行一个包含用户控制主键的 SQL 指令,从而允许攻击者访问未经授权的记录. Explanation Database access control 错误在以下情况下发生: 数据从一个不可信赖的数据源进入程序. 这个数据用来指定 SQL 查询中主键的值. 例 1: 以下代码用到一个参数化指令,这个指令转义了元字符,以防止SQL injection 漏洞,并构建和执行一个 SQL 查询.该 SQL 查询指令可以搜索与指定标识符 […
Cross-Site Scripting: Persistent Abstract 向 Web 浏览器发送非法数据会导致浏览器执行恶意代码. Explanation Cross-Site Scripting (XSS) 漏洞在以下情况下发生: 数据通过一个不可信赖的数据源进入 Web 应用程序. 对于 Persistent(也称为 Stored) XSS,不可信赖的源通常为数据库或其他后端数据存储,而对于Reflected XSS,该源通常为 Web 请求. 2. 在未检验包含数据的动态内容是否…
Unreleased Resource: Database 未释放资源:数据库 Abstract 程序可能无法成功释放某一项系统资源. Explanation 程序可能无法成功释放某一项系统资源. 资源泄露至少有两种常见的原因: - 错误状况及其他异常情况. - 未明确程序的哪一部份负责释放资源. 大部分 Unreleased Resource 问题只会导致一般的软件可靠性问题, 但如果攻击者能够故意触发资源泄漏,该攻击者就有可能通过耗尽资源池的方式发起 denial of service 攻…
Header Manipulation Abstract HTTP 响应头文件中包含未验证的数据会引发 cache-poisoning. cross-site scripting. cross-user defacement. page hijacking. cookie manipulation 或 open redirect. Explanation 以下情况中会出现 Header Manipulation 漏洞: 数据通过一个不可信赖的数据源进入 Web 应用程序,最常见的是 HTTP 请…
SQL Injection SQL注入 Abstract 通过不可信来源的输入构建动态 SQL 指令,攻击者就能够修改指令的含义或者执行任意 SQL 命令. Explanation SQL injection 错误在以下情况下发生: 数据从一个不可信赖的数据源进入程序. 数据用于动态地构造一个 SQL 查询. 例1: 以下代码动态地构造并执行了一个SQL查询,该查询可以搜索与指定名称相匹配的项. 该查询仅会显示条目所有者与被授予权限的当前用户一致的条目. ... String userName…
Password Management: Password in Configuration File(明文存储密码) Abstract 在配置文件中存储明文密码,可能会危及系统安全. Explanation 在配置文件中存储明文密码会使所有能够访问该文件的人都能访问那些用密码保护的资源. 程序员有时候认为, 他们不可能阻止应用程序被那些能够访问配置文件的攻击者入侵,但是这种想法会导致攻击者发动攻击变得更加容易. 健全的 password management 方针从来不会允许以明文形式存储密码…