Fortify漏洞之Access Control: Database(数据越权)

  继续对Fortify的漏洞进行总结,本篇主要针对 Access Control: Database(数据越权)的漏洞进行总结,如下:

1、Access Control: Database(数据越权)

1.1、产生原因:

Database access control 错误在以下情况下发生:

1.      数据从一个不可信赖的数据源进入程序。

2.      这个数据用来指定 SQL 查询中主键的值。

示例 1:以下代码使用可转义元字符并防止出现 SQL 注入漏洞的参数化语句,以构建和执行用于搜索与指定标识符相匹配的清单的 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 值。虽然接口生成了一个当前用户的标识符清单,但是攻击者可以绕过这个接口,从而获取所需的任何清单。因为此例中的代码没有执行检查,确保用户有权访问需要的清单,所以代码会显示所有清单,即使这些清单并不属于当前用户。

1.2、修复方案:

  与其靠表示层来限制用户输入的值,还不如在应用程序和数据库层上进行 access control。任何情况下都不允许用户在没有取得相应权限的情况下获取或修改数据库中的记录。每个涉及数据库的查询都必须遵守这个原则,这可以通过把当前被授权的用户名作为查询语句的一部分来实现。

:以下代码实施了与例 1 相同的功能,但是附加了一个限制,即为当前被授权的用户指定某一特定的获取清单的方式。

...

userName = ctx.getAuthenticatedUserName();

id = Integer.decode(request.getParameter("invoiceID"));

String query =

"SELECT * FROM invoices WHERE id = ? AND user = ?";

PreparedStatement stmt = conn.prepareStatement(query);

stmt.setInt(1, id);

stmt.setString(2, userName);

ResultSet results = stmt.execute();

  总之,要防止数据越权的漏洞问题,需要做到以下两个要点:

  a、对需要查询的数据,给sql语句加上数据权限的限定条件,限定数据所属角色。

  b、对于这个加上的数据权限的限定条件,最好是从后台获取,而不是通过前台传入。

原文地址:https://www.cnblogs.com/meInfo/p/9004667.html

时间: 2024-10-12 22:00:43

Fortify漏洞之Access Control: Database(数据越权)的相关文章

CISSP AIO 3th: Access Control

This chapter presents the following: • Identification methods and technologies • Authentication methods, models, and technologies • Discretionary, mandatory, and nondiscretionary models • Accountability, monitoring, and auditing practices • Emanation

转:Oracle R12 多组织访问的控制 - MOAC(Multi-Org Access Control)

什么是MOAC MOAC(Multi-Org Access Control)为多组织访问控制,是Oracle EBS R12的重要新功能,它可以实现在一个Responsibility下对多个Operation Unit(OU)进行操作.MOAC允许用户在不切换responsibility的情况下,在一个responsibility下处理多个OU组织的事务. User --> Responsibilities --> Single Operation Unit Mode  /  Multiple

Access control differentiation in trusted computer system

A trusted computer system that offers Linux? compatibility and supports contemporary hardware speeds. It is designed to require no porting of common applications which run on Linux, to be easy to develop for, and to allow the use of a wide variety of

A GUIDE TO UNDERSTANDINGDISCRETIONARY ACCESS CONTROL INTRUSTED SYSTEMS

1. INTRODUCTION ? The main goal of the National Computer Security Center is to encourage the widespread availability of trusted computer systems. In support of that goal a metric was created, the Department of Defense Trusted Computer System Evaluati

Exclusive access control to a processing resource

A data processing system is provided with multiple processors that share a main memory. Semaphore values associated with data elements within the memory system, including the main memory, are used to establish exclusive access permissions to those da

RBAC(Role-Based Access Control)基于角色的访问控制

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用户-角色-权限"的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.(如下图) 角色是什么?可以理解为一定数量的权限的集合,权限的载体.例如:一个论坛系统,"超级管理员"."版主"都是角色.版主可管理版内的帖子.可管理版内的用户等,

Phalcon 訪问控制列表 ACL(Access Control Lists ACL)

Phalcon在权限方面通过 Phalcon\Acl 提供了一个轻量级的 ACL(訪问控制列表). Access Control Lists (ACL) 同意系统对用户的訪问权限进行控制,比方同意訪问某些资源而不同意訪问其他资源等. 这里我们建议开发人员了解一些关于ACL的技术. ACL有两部分组成即角色和资源. 资源即是ACL定义的权限所依附的对象. 角色即是ACL所字义的请求者的身份,ACL决定了角色对资源的訪问权限.同意訪问或拒绝訪问. 创建 ACL(Creating an ACL)? 这

Risk Adaptive Information Flow Based Access Control

Systems and methods are provided to manage risk associated with access to information within a given organization. The overall risk tolerance for the organization is determined and allocated among a plurality of subjects within the organization. Allo

WebGoat系列のAccess Control Flaws(访问控制缺陷)

Using an Access Control Matrix 用户权限: Moe--> public share Larry--> Time Card Entry,Performance Review,Time Card Approval,Account Manager Curly--> public share,Performance Review,Time Card Approval Shemp->Site Manager,Account Manager Bypass a Pa