Safe3-uusec-waf/rules/cross-site-script-attack.lua
UUSEC Technology e66cca6014 v7.0.0
### Feature Updates

**Interface & Management**

- Redesigned main program and management interface with improved aesthetics and usability, supports UI language switching (English/Chinese)
- Added Rule Collections functionality: Create custom rule templates for batch configuration
- Introduced whitelist rules that terminate further rule matching upon success
- UUSEC WAF Rules API intelligent suggestions during advanced rule editing:ml-citation
- New plugin management supporting hot-reloaded plugins to extend WAF capabilities

**Protocol & Optimization**

- Supports streaming responses for continuous data push (e.g., LLM stream outputs)
- Enables Host header modification during proxying for upstream service access
- Search engine validation: `waf.searchEngineValid(dns,ip,ua)` prevents high-frequency rules from affecting SEO indexing
- Interception log report generation (HTML/PDF exports)
- Automatic rotation of UUSEC WAF error/access logs to prevent performance issues

**Security & Infrastructure**

- Expanded free SSL certificate support: HTTP-01 & DNS-01 verification across 50+ domain providers
- Customizable advanced WAF settings: HTTP2, GZIP, HTTP Caching, SSL protocols, etc
- Cluster configuration: Manage UUSEC WAF nodes and ML servers via web UI
2025-07-02 09:47:41 +08:00

54 lines
No EOL
1.3 KiB
Lua

--[[
Rule name: Cross Site Script Attack
Filtering stage: Request phase
Threat level: Critical
Rule description: Attackers typically insert JavaScript, VBScript, ActiveX, or Flash into vulnerable programs to deceive users. Once successful, they can steal user accounts, modify user settings, steal/contaminate cookies, create false advertising, and more
--]]
local kvFilter = waf.kvFilter
local checkXSS = waf.checkXSS
local function sMatch(v)
local m = checkXSS(v) or waf.rgxMatch(v,"\\b(?:parent|frames|window|this|self|globalThis|top)\\s*(?:/\\*|\\[\\s*['/\"\\(])|\\.\\s*(?:constructor|getPrototypeOf)\\s*\\(","jos")
if m then
return m, v
end
return false
end
local form = waf.form
if form then
local m, d = kvFilter(form["FORM"], sMatch)
if m then
return m, d, true
end
end
local queryString = waf.queryString
if queryString then
local m, d = kvFilter(queryString, sMatch)
if m then
return m, d, true
end
end
local cookies = waf.cookies
if cookies then
local m, d = kvFilter(cookies, sMatch)
if m then
return m, d, true
end
end
local m, d = sMatch(waf.userAgent)
if m then
return m, d, true
end
m, d = sMatch(waf.urlDecode(waf.referer))
if m then
return m, d, true
end
return false