Skip to content

Commit 4a05f7c

Browse files
Demo Broken Function Level Authorization
1 parent 2413e59 commit 4a05f7c

File tree

5 files changed

+96
-3
lines changed

5 files changed

+96
-3
lines changed

‎online-store.persistence/src/main/java/com/itbulls/learnit/onlinestore/persistence/enteties/User.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public interface User {
1212

1313
String getEmail();
1414

15-
int getId();
15+
Integer getId();
1616
void setId(int id);
1717

1818
void setPassword(String newPassword);

‎online-store.persistence/src/main/java/com/itbulls/learnit/onlinestore/persistence/enteties/impl/DefaultUser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public void setEmail(String newEmail) {
107107
}
108108

109109
@Override
110-
public int getId() {
110+
public Integer getId() {
111111
return this.id;
112112
}
113113

‎online-store.persistence/src/main/java/com/itbulls/learnit/onlinestore/persistence/enteties/impl/UserForHashTables.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void setEmail(String newEmail) {
8787
}
8888

8989
@Override
90-
public int getId() {
90+
public Integer getId() {
9191
return this.id;
9292
}
9393

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.itbulls.learnit.onlinestore.web.owasp.bfla.problem;
2+
3+
import jakarta.servlet.*;
4+
import jakarta.servlet.http.*;
5+
import java.io.IOException;
6+
7+
import com.itbulls.learnit.onlinestore.core.facades.UserFacade;
8+
import com.itbulls.learnit.onlinestore.core.facades.impl.DefaultUserFacade;
9+
import com.itbulls.learnit.onlinestore.persistence.enteties.User;
10+
11+
public class BflaProblemUserProfileServlet extends HttpServlet {
12+
13+
private UserFacade userFacade = DefaultUserFacade.getInstance();
14+
15+
@Override
16+
protected void doPost(HttpServletRequest request, HttpServletResponse response)
17+
throws ServletException, IOException {
18+
String action = request.getParameter("action");
19+
Integer userId = Integer.valueOf(request.getParameter("user_id"));
20+
21+
User user = userFacade.getUserById(userId);
22+
if ("updateProfile".equals(action)) {
23+
user.setCreditCard(request.getParameter("credit_card_number"));
24+
user.setEmail(request.getParameter("email"));
25+
26+
// Update profile in the database
27+
userFacade.updateUser(user);
28+
response.sendRedirect("/profile");
29+
} else {
30+
// Handle other actions
31+
response.getWriter().println("Invalid action");
32+
}
33+
}
34+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.itbulls.learnit.onlinestore.web.owasp.bfla.solution;
2+
3+
import jakarta.servlet.*;
4+
import jakarta.servlet.http.*;
5+
import java.io.IOException;
6+
7+
import com.itbulls.learnit.onlinestore.core.facades.UserFacade;
8+
import com.itbulls.learnit.onlinestore.core.facades.impl.DefaultUserFacade;
9+
import com.itbulls.learnit.onlinestore.persistence.enteties.User;
10+
11+
public class BflaSolutionUserProfileServlet extends HttpServlet {
12+
13+
private UserFacade userFacade = DefaultUserFacade.getInstance();
14+
15+
@Override
16+
protected void doPost(HttpServletRequest request, HttpServletResponse response)
17+
throws ServletException, IOException {
18+
String action = request.getParameter("action");
19+
20+
// Ensure the user is logged in and retrieve the logged-in user's ID
21+
HttpSession session = request.getSession();
22+
User loggedInUser = (User) session.getAttribute("user");
23+
24+
if (loggedInUser == null) {
25+
response.sendError(HttpServletResponse.SC_FORBIDDEN,
26+
"You must be logged in to perform this action.");
27+
return;
28+
}
29+
30+
Integer userId = Integer.valueOf(request.getParameter("user_id"));
31+
32+
// Authorization check: Ensure that the user can only update their own profile or ADMIN user
33+
if (!loggedInUser.getId().equals(userId) && !loggedInUser.getRoleName().equals("ROLE_ADMIN")) {
34+
response.sendError(HttpServletResponse.SC_FORBIDDEN, "You are not authorized to update this profile.");
35+
return;
36+
}
37+
38+
if ("updateProfile".equals(action)) {
39+
User user = userFacade.getUserById(userId);
40+
41+
// Ensure that user exists
42+
if (user == null) {
43+
response.sendError(HttpServletResponse.SC_NOT_FOUND, "User not found.");
44+
return;
45+
}
46+
47+
// Update profile information
48+
user.setCreditCard(request.getParameter("credit_card_number"));
49+
user.setEmail(request.getParameter("email"));
50+
51+
// Update profile in the database
52+
userFacade.updateUser(user);
53+
response.sendRedirect("/profile");
54+
} else {
55+
// Handle other actions
56+
response.getWriter().println("Invalid action");
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)