Go (net/http and Chi)
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
// Setting a user:
zen.SetUser(r.Context(), id, name)// ...
handler := AikidoMiddleware(mux)
// ...
func AikidoMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
blockResult := zen.ShouldBlockRequest(r.Context())
if blockResult != nil {
switch blockResult.Type {
case "rate-limited":
message := "You are rate limited by Zen."
if blockResult.Trigger == "ip" {
message += " (Your IP: " + *blockResult.IP + ")"
}
http.Error(w, message, http.StatusTooManyRequests)
return
case "blocked":
http.Error(w, "You are blocked by Zen.", http.StatusForbidden)
return
}
}
next.ServeHTTP(w, r)
})
}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?
