项目经过扫描扫出来36个数据越权的高危漏洞,看了看这些问题和报告中给的修改建议
Access Control: Database (36 issues)
Abstract
如果没有适当的 access control,就会执行一个包含用户控制主键的 SQL 指令,从而允许攻击者访问未经授
权的记录。
Explanation
Database access control 错误在以下情况下发生: 1. 数据从一个不可信赖的数据源进入程序。 2. 这个数据
用来指定 SQL 查询中主键的值。 示例 1: 以下代码使用可转义元字符并防止出现 SQL 注入漏洞的参数化语
句, 以构建和执行用于搜索与指定标识符 [1] 相匹配的清单的 SQL 查询。您可以从与当前被授权用户有关的
所有清单中选择这些标识符。
...
id = Integer.decode(request.getParameter("invoiceID"));
String query = "SELECT * FROM invoices WHERE id = ?";
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setInt(1, id);
ResultSet results = stmt.execute();
...
问题在于开发者没有考虑到所有可能出现的 id 值。虽然界面生成了属于当前用户的清单标识符列表,但是攻
击者可以绕过这个界面,从而获取所需的任何清单。由于此示例中的代码没有执行检查以确保用户具有访问
所请求清单的权限,因此它会显示任何清单,即使此清单不属于当前用户。 有些人认为在移动世界中,典型
的 Web 应用程序漏洞(如 Database access control 错误)是无意义的 -- 为什么用户要攻击自己?但是,谨
记移动平台的本质是从各种来源下载并在相同设备上运行的应用程序。恶意软件在银行应用程序附近运行的
可能性很高,它们会强制扩展移动应用程序的攻击面(包括跨进程通信)。 示例 2: 以下代码会调整
Example

最低0.47元/天 解锁文章
6034

被折叠的 条评论
为什么被折叠?



