Create Secure Coding - Unrestricted Access to Sensitive Business Flows.md
This commit is contained in:
parent
b13ed3ca9f
commit
d59e1ca9a5
@ -0,0 +1,194 @@
|
||||
# Unrestricted Access to Sensitive Business Flows (API6:2023)
|
||||
Due to this vulnerability, the attacker has the possibility of exploiting the authorized functions of the program for unauthorized purposes.
|
||||
|
||||
* Example
|
||||
|
||||
POST request for air ticket purchase by providing passenger details:
|
||||
```html
|
||||
POST /api/tickets/buy
|
||||
|
||||
Body:
|
||||
{
|
||||
"passenger_name": "John Doe",
|
||||
"flight_number": "AB123",
|
||||
"departure_date": "2023-07-01"
|
||||
}
|
||||
```
|
||||
|
||||
### Non-compliant code (.NET)
|
||||
```c#
|
||||
[Route("api/orders")]
|
||||
public class OrderController : ApiController
|
||||
{
|
||||
private readonly IOrderService _orderService;
|
||||
public OrderController(IOrderService orderService)
|
||||
{
|
||||
_orderService = orderService;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public IHttpActionResult CreateOrder(OrderRequest request)
|
||||
{
|
||||
// Create a new order without proper validation
|
||||
Order order = _orderService.CreateOrder(request);
|
||||
|
||||
// Return the created order
|
||||
return Ok(order);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("{orderId}")]
|
||||
public IHttpActionResult GetOrder(string orderId)
|
||||
{
|
||||
// Get the order by ID without proper authorization
|
||||
Order order = _orderService.GetOrder(orderId);
|
||||
|
||||
// Return the order
|
||||
return Ok(order);
|
||||
}
|
||||
|
||||
// Other methods...
|
||||
}
|
||||
```
|
||||
|
||||
### Compliant code (.NET)
|
||||
```c#
|
||||
[Route("api/orders")]
|
||||
public class OrderController : ApiController
|
||||
{
|
||||
private readonly IOrderService _orderService;
|
||||
public OrderController(IOrderService orderService)
|
||||
{
|
||||
_orderService = orderService;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Authorize(Roles = "Admin")]
|
||||
public IHttpActionResult CreateOrder(OrderRequest request)
|
||||
{
|
||||
// Validate the request and create a new order with proper authorization
|
||||
Order order = _orderService.CreateOrder(request);
|
||||
|
||||
// Return the created order
|
||||
return Ok(order);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("{orderId}")]
|
||||
[Authorize(Roles = "User")]
|
||||
public IHttpActionResult GetOrder(string orderId)
|
||||
{
|
||||
// Authorize the user's access to the order
|
||||
|
||||
// Only users with the "User" role can access the order
|
||||
Order order = _orderService.GetOrder(orderId);
|
||||
|
||||
// Return the order
|
||||
return Ok(order);
|
||||
}
|
||||
|
||||
// Other methods...
|
||||
}
|
||||
```
|
||||
|
||||
## General prevention suggestions:
|
||||
|
||||
* Implementation of user authentication and validation mechanisms before accessing sensitive business flow.
|
||||
|
||||
* Checking and validating user data and inputs carefully, including validating dates and input formats.
|
||||
|
||||
* Applying logical restrictions and rules to access sensitive business flow.
|
||||
|
||||
* Using logging and monitoring systems to reveal and track suspicious or inappropriate activities in business flows.
|
||||
|
||||
* Providing and using intermediaries (Gateways API) that provide the ability to control and manage access to business flows.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user