Skip to content

Commit 5d791c3

Browse files
authored
ID Validation (#196)
1 parent f5741fa commit 5d791c3

File tree

3 files changed

+60
-6
lines changed

3 files changed

+60
-6
lines changed

internal/handlers/agent.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,15 @@ func (h *Handler) GetSessions(c *fiber.Ctx) error {
2121

2222
func (h *Handler) GetSession(c *fiber.Ctx) error {
2323
session := models.AgentSession{}
24-
res := h.db.First(&session, c.Params("id"))
24+
id := c.Params("id")
25+
if id == "" {
26+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "session id is required"})
27+
}
28+
29+
if _, err := strconv.Atoi(id); err != nil {
30+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid session id"})
31+
}
32+
res := h.db.First(&session, id)
2533
if res.Error != nil {
2634
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": res.Error.Error()})
2735
}
@@ -51,7 +59,15 @@ func (h *Handler) CreateSession(c *fiber.Ctx) error {
5159

5260
func (h *Handler) DeleteSession(c *fiber.Ctx) error {
5361
session := models.AgentSession{}
54-
res := h.db.Delete(&session, c.Params("id"))
62+
id := c.Params("id")
63+
if id == "" {
64+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "session id is required"})
65+
}
66+
67+
if _, err := strconv.Atoi(id); err != nil {
68+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid session id"})
69+
}
70+
res := h.db.Delete(&session, id)
5571
if res.RowsAffected == 0 {
5672
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "session not found"})
5773
}

internal/handlers/domain.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,16 @@ func (h *Handler) GetDomains(c *fiber.Ctx) error {
2626

2727
func (h *Handler) GetDomain(c *fiber.Ctx) error {
2828
domain := models.Domain{}
29-
res := h.db.First(&domain, c.Params("id"))
29+
id := c.Params("id")
30+
if id == "" {
31+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "domain id is required"})
32+
}
33+
34+
if _, err := strconv.Atoi(id); err != nil {
35+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid domain id"})
36+
}
37+
38+
res := h.db.First(&domain, id)
3039
if res.Error != nil {
3140
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": res.Error.Error()})
3241
}
@@ -87,7 +96,16 @@ func (h *Handler) UpdateDomain(c *fiber.Ctx) error {
8796

8897
func (h *Handler) DeleteDomain(c *fiber.Ctx) error {
8998
domain := models.Domain{}
90-
res := h.db.Delete(&domain, c.Params("id"))
99+
id := c.Params("id")
100+
if id == "" {
101+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "domain id is required"})
102+
}
103+
104+
if _, err := strconv.Atoi(id); err != nil {
105+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid domain id"})
106+
}
107+
108+
res := h.db.Delete(&domain, id)
91109
if res.RowsAffected == 0 {
92110
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "domain not found"})
93111
}

internal/handlers/report.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package handlers
22

33
import (
4+
"strconv"
5+
46
"github.com/gofiber/fiber/v2"
57

68
"github.com/ghostsecurity/reaper/internal/database/models"
@@ -16,7 +18,16 @@ func (h *Handler) GetReports(c *fiber.Ctx) error {
1618

1719
func (h *Handler) GetReport(c *fiber.Ctx) error {
1820
report := models.Report{}
19-
err := h.db.First(&report, c.Params("id")).Error
21+
id := c.Params("id")
22+
if id == "" {
23+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "report id is required"})
24+
}
25+
26+
if _, err := strconv.Atoi(id); err != nil {
27+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid report id"})
28+
}
29+
30+
err := h.db.First(&report, id).Error
2031
if err != nil {
2132
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": err.Error()})
2233
}
@@ -56,7 +67,16 @@ func (h *Handler) CreateReport(c *fiber.Ctx) error {
5667

5768
func (h *Handler) DeleteReport(c *fiber.Ctx) error {
5869
report := models.Report{}
59-
res := h.db.Delete(&report, c.Params("id"))
70+
id := c.Params("id")
71+
if id == "" {
72+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "report id is required"})
73+
}
74+
75+
if _, err := strconv.Atoi(id); err != nil {
76+
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid report id"})
77+
}
78+
79+
res := h.db.Delete(&report, id)
6080
if res.RowsAffected == 0 {
6181
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "report not found"})
6282
}

0 commit comments

Comments
 (0)