Skip to content

Commit 6f7f9cc

Browse files
Broken Object Level Authorization Examples
1 parent 3f1ec49 commit 6f7f9cc

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

‎.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
.classpath
55
*/.project
66
*/.classpath
7+
*/.factorypath
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.itbulls.learnit.onlinestore.web.owasp.bola;
2+
3+
import java.io.IOException;
4+
5+
import com.itbulls.learnit.onlinestore.core.facades.ProductFacade;
6+
import com.itbulls.learnit.onlinestore.core.facades.impl.DefaultProductFacade;
7+
import com.itbulls.learnit.onlinestore.persistence.dto.RoleDto;
8+
import com.itbulls.learnit.onlinestore.persistence.enteties.Product;
9+
import com.itbulls.learnit.onlinestore.persistence.enteties.User;
10+
import com.itbulls.learnit.onlinestore.web.controllers.SignInServlet;
11+
12+
import jakarta.servlet.ServletException;
13+
import jakarta.servlet.annotation.WebServlet;
14+
import jakarta.servlet.http.HttpServlet;
15+
import jakarta.servlet.http.HttpServletRequest;
16+
import jakarta.servlet.http.HttpServletResponse;
17+
18+
@WebServlet("/bola-product-demo-solution")
19+
public class SecureProductServlet extends HttpServlet {
20+
21+
private ProductFacade productFacade = DefaultProductFacade.getInstance();
22+
23+
@Override
24+
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
25+
String productGuid = req.getParameter("productGuid");
26+
User loggedInUser = (User)req.getSession().getAttribute(SignInServlet.LOGGED_IN_USER_ATTR);
27+
Product product = productFacade.getProductByGuid(productGuid);
28+
29+
if (product != null && product.getProductName() != null) {
30+
if (loggedInUser != null && loggedInUser.getRoleName().equals(RoleDto.ADMIN_ROLE_NAME)) {
31+
resp.getWriter().write("Product: " + product);
32+
} else {
33+
resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized access to read product");
34+
}
35+
} else {
36+
resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Product not found");
37+
}
38+
}
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.itbulls.learnit.onlinestore.web.owasp.bola;
2+
3+
import java.io.IOException;
4+
5+
import com.itbulls.learnit.onlinestore.core.facades.ProductFacade;
6+
import com.itbulls.learnit.onlinestore.core.facades.impl.DefaultProductFacade;
7+
import com.itbulls.learnit.onlinestore.persistence.enteties.Product;
8+
9+
import jakarta.servlet.ServletException;
10+
import jakarta.servlet.annotation.WebServlet;
11+
import jakarta.servlet.http.HttpServlet;
12+
import jakarta.servlet.http.HttpServletRequest;
13+
import jakarta.servlet.http.HttpServletResponse;
14+
15+
@WebServlet("/bola-product-demo-problem")
16+
public class VulnerableProductServlet extends HttpServlet {
17+
18+
private ProductFacade productFacade = DefaultProductFacade.getInstance();
19+
20+
@Override
21+
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
22+
Integer productId = Integer.valueOf(req.getParameter("productId"));
23+
Product product = productFacade.getProductById(productId);
24+
25+
if (product != null) {
26+
resp.getWriter().write("Product: " + product);
27+
} else {
28+
resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Product not found");
29+
}
30+
}
31+
32+
}

0 commit comments

Comments
 (0)