Go (Echo)
Requirements
Installation & Configuration
1
Install Zen Firewall by Aikido
go run github.com/AikidoSec/firewall-go/cmd/zen-go@latest init
go mod tidyimport "github.com/AikidoSec/firewall-go/zen"
func main() {
err := zen.Protect()
if err != nil {
panic(err)
}
// your existing setup
}go install github.com/AikidoSec/firewall-go/cmd/zen-go@latest
go build -toolexec="zen-go" -o bin/appexport AIKIDO_TOKEN=AIK_RUNTIME_2
4
Enable Rate limiting and User blocking
e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
userHeader := c.Request().Header.Get("user")
if userHeader != "" {
_, err := zen.SetUser(c.Request().Context(), userHeader, "John Doe")
if err != nil {
return err
}
}
return next(c)
}
})
e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
blockResult := zen.ShouldBlockRequest(c.Request().Context())
if blockResult != nil {
if blockResult.Type == "rate-limited" {
message := "You are rate limited by Zen."
if blockResult.Trigger == "ip" {
message += " (Your IP: " + *blockResult.IP + ")"
}
return c.String(http.StatusTooManyRequests, message)
}
if blockResult.Type == "blocked" {
return c.String(http.StatusForbidden, "You are blocked by Zen.")
}
}
return next(c)
}
})5
Setup rate limiting in the dashboard



You are rate limited by Aikido firewall. (Your IP: 1.2.3.4)Last updated
Was this helpful?
