What are Incidents?
Every time the SeenSecure firewall blocks an incoming request — whether due to SQL injection, XSS, LFI, geoblocking, blacklist, rate limiting, TOR, or any other rule — a unique incident ID is automatically generated. This ID is an alphanumeric identifier that allows you to locate the block precisely in the incident log.
📋 Data contained in each incident
- Incident ID: Unique identifier of the block.
- IP Address: IP from which the blocked request originated.
- Attack type: Block category (SQLi, XSS, LFI, Geo, Blacklist, etc.).
- Reason: Detailed reason for the block (detected payload, triggered rule, etc.).
- URI: The full URL that was blocked.
- User Agent: The browser or HTTP client that made the request.
- Date: Exact date and time of the block.
🔍 Incident Search by ID
The incident search allows you to locate a specific block by entering its unique ID. It is especially useful when a user reports being blocked and provides the ID they saw on the block screen.
📖 How to use the search
- Copy the incident ID provided by the user (e.g.,
98C0B381846F). - Paste the ID into the search field and press Enter or click the search button.
- If the ID exists, all incident details will be displayed. If not, a message will appear indicating it was not found.
🗂️ Incident Categories & Filters
Not every block is the same, and not every admin wants the same level of detail. That's why SeenSecure groups every block into one of five categories, letting you decide which ones should generate a full incident (with IP, user, reason, and date stored in the table) and which should stay only in the general traffic log, without taking up space in your incidents list.
🔑 Login (brute force)
Repeated failed password attempts against the same user. Includes the targeted account's name, useful for alerting the admin which accounts are being actively attacked.
🚦 Rate Limiting
Blocks due to too many requests in a short time, whether from an authenticated user or an anonymous IP. Flags clients or bots overwhelming your server with excessive requests.
🌊 Flood Events
Logged when your site enters or exits resilience mode against massive traffic — one event per transition, never one per individual request, so the table doesn't get overwhelmed during a real traffic spike.
🚨 Escalation / Flagged IP
Repeat-offender IPs attacking in multiple waves and ending up blocked for hours, or that were already flagged as blocked. This is the category that best signals a persistent attacker rather than an isolated attempt.
🛡️ Firewall (remaining protections)
The "catch-all": attacks blocked by the rest of the firewall rules, such as anti-injection (SQLi/XSS), security headers, geo-blocking, TOR exit nodes, blacklisted IPs, or detected bots. Usually the highest-volume category.
🔎 Quick filters in the table
Besides the exact-ID search, the incidents table includes quick filter buttons so you don't have to review all 50 records one by one: All (unfiltered), Users (shows only incidents with an associated username, ideal for spotting attacks against specific accounts), Login (only brute-force blocks), and Events (only flood mode transitions). You can also type a username into the table's search field to see only that account's incidents — very useful when a user reports repeated login problems and you want to review their full history without noise from other accounts.
📊 Incident Statistics
The statistics panel gives you a quick view of your site's security status. It updates in real time and reflects accumulated data since SeenSecure was installed.
Total Incidents
What it means: The total number of blocked requests since the firewall has been active. A high number does not necessarily indicate a problem — it may mean the firewall is doing its job. However, sudden growth may indicate an ongoing attack.
Today's Incidents
What it means: Blocks that occurred in the last 24 hours. Useful for detecting recent malicious activity spikes. If you see an unusually high number, review the incidents table to identify the pattern.
Unique Blocked IPs
What it means: Number of distinct IP addresses that have been blocked at least once. If this number is much lower than the total incidents, it means there are repeat offender IPs attacking repeatedly.
📋 Recent Incidents Table
The table displays the last 50 recorded incidents, sorted from newest to oldest. Each row represents a block with all available information so you can analyze attack patterns.
📌 Table columns
- ID: Unique incident identifier. Click to view full details.
- IP: IP address of the blocked attacker or requester.
- Type: Attack category (SQLi, XSS, LFI, RFI, Geo, Rate Limit, etc.).
- Reason: Detailed description of why the request was blocked.
- URI: The exact URL that was blocked.
- User Agent: HTTP client identification.
- Date: Exact time of the block.
🔎 How to identify attack patterns
Same IP, same type
An IP generating multiple incidents of the same type (e.g., SQLi) indicates a targeted automated attack. Consider permanently blocking that IP.
Same URI, multiple IPs
Many different IPs attacking the same URL suggests a distributed attack (DDoS) or mass scanning. Enable rate limiting if it is not already active.
Multiple types, same IP
An attacker testing different vectors (SQLi, XSS, LFI) against your site. Sign of an experienced attacker. Block the IP and monitor.
🗑️ Clear All Incidents
The 🗑️ Empty List button removes all incident records from the database. This operation is safe: it only deletes historical records and does not affect firewall operation or active rules.
When should you clear incidents?
- Before an audit: To start with a clean slate and measure new incidents accurately.
- After a massive attack: Once analyzed and mitigated, clearing helps detect new threats without historical noise.
- Periodically: Some admins prefer to keep the history clean monthly. The firewall continues to work normally.
🧹 Automatic pruning vs. manual clearing
Besides the "Empty List" button (which erases everything at once), SeenSecure periodically prunes the oldest incidents so the table doesn't grow without limit or slow down your admin panel. Next to "Empty List" you'll find the "Prune >30 days" button, which deletes only records older than that retention window and leaves recent ones intact — unlike "Empty List", which removes absolutely everything regardless of date.