kb: expand authorized lab coverage and intel automation

这个提交包含在:
hao
2026-03-16 22:04:51 -07:00
父节点 cda31e86c7
当前提交 d0120fbf10
修改 592 个文件,包含 29025 行新增267 行删除

查看文件

@@ -1,4 +1,6 @@
version: '3.8'
# LAB ONLY
# 该编排仅用于本地或隔离测试环境中的授权攻防实验。
# 如需暴露到公网,请确保资产由你方控制且具备明确授权。
services:
dvwa:

29
01-sql-injection/README.md 普通文件
查看文件

@@ -0,0 +1,29 @@
# SQL 注入实验
> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` | `非生产指南`
## 范围元数据
| 字段 | 内容 |
|------|------|
| 适用目标类型 | `lab-local`, `lab-public`, `authorized-third-party` |
| 是否允许公网验证 | 允许,但必须确认资产归属或授权 |
| 推荐最小化验证 | 先做只读参数差异对比,再做最小化布尔/时间验证 |
| 禁止场景 | 无授权第三方网站、生产数据库破坏性写入、泛互联网枚举 |
## 当前内容
- 工具: [sqli-scanner.py](/Users/x/websafe/01-sql-injection/tools/sqli-scanner.py), [blind-sqli.py](/Users/x/websafe/01-sql-injection/tools/blind-sqli.py), [sqli-exploit.go](/Users/x/websafe/01-sql-injection/tools/sqli-exploit.go)
- Payload: [mysql.txt](/Users/x/websafe/01-sql-injection/payloads/mysql.txt), [postgres.txt](/Users/x/websafe/01-sql-injection/payloads/postgres.txt), [mssql.txt](/Users/x/websafe/01-sql-injection/payloads/mssql.txt)
- 利用文档: [dvwa-sqli.md](/Users/x/websafe/01-sql-injection/exploitation/dvwa-sqli.md)
## 当前缺口
- `defense/` 目录目前只有占位说明,后续用于修复代码、参数化查询和实验型检测规则
- 真实世界案例和订阅源尚未单独整理到本目录,统一先在 [08-threat-intel](/Users/x/websafe/08-threat-intel/README.md) 跟踪
## 建议实验路径
1. 在本地靶场验证注入点是否存在。
2. 只在必要时切换到布尔盲注或时间盲注。
3. 将命中的请求、响应差异和环境信息记录到 [测试记录模板](/Users/x/websafe/09-scope-and-targeting/test-record-template.md)。

查看文件

@@ -0,0 +1,5 @@
# SQL 注入防守与修复
> `LAB NOTE` | `修复演示区`
该目录预留给参数化查询、ORM 绑定、错误处理和检测日志对照示例。当前尚未补齐具体样例,避免在主索引中误报为已完成内容。

查看文件

@@ -18,6 +18,11 @@ Usage:
# 提取当前数据库用户
python3 blind-sqli.py -u "http://target.com/page?id=1" -p id --technique time --extract user
授权边界:
- 仅用于自有资产、测试环境或已明确授权的目标
- 建议优先使用最小化验证方式,避免对目标数据造成持久影响
- 不面向无授权第三方网站或泛互联网扫描
"""
import argparse

查看文件

@@ -15,6 +15,11 @@ Usage:
python3 sqli-scanner.py -u "http://target.com/page?id=1"
python3 sqli-scanner.py -u "http://target.com" --data "id=1&name=test"
python3 sqli-scanner.py -u "http://target.com" --cookie "id=1"
授权边界:
- 仅用于自有资产、测试环境或已明确授权的目标
- 允许公网验证,但必须确认资产归属或授权关系
- 不面向无授权第三方网站或泛互联网扫描
"""
import argparse

22
02-xss/README.md 普通文件
查看文件

@@ -0,0 +1,22 @@
# XSS 与浏览器端注入实验
> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` | `非生产指南`
## 范围元数据
| 字段 | 内容 |
|------|------|
| 适用目标类型 | `lab-local`, `lab-public`, `authorized-third-party` |
| 是否允许公网验证 | 允许,但需采用最小化回显验证 |
| 推荐最小化验证 | 优先使用无破坏性 payload、上下文判断和只读回显 |
| 禁止场景 | 对未授权目标执行持久化 XSS、窃取真实用户数据、利用第三方浏览器会话 |
## 当前内容
- 工具: [xss-fuzzer.py](/Users/x/websafe/02-xss/tools/xss-fuzzer.py), [xss-scanner.go](/Users/x/websafe/02-xss/tools/xss-scanner.go)
- 主题扩展: [前端与框架案例](/Users/x/websafe/07-framework-security/frontend-js/README.md)
## 当前缺口
- `defense/`, `exploitation/`, `payloads/` 仍需补充实验专用内容
- CSP、Trusted Types、Token 存储和前端敏感配置暴露已经转入 [07-framework-security/frontend-js](/Users/x/websafe/07-framework-security/frontend-js/README.md)

5
02-xss/defense/README.md 普通文件
查看文件

@@ -0,0 +1,5 @@
# XSS 防守与检测
> `LAB NOTE` | `修复演示区`
该目录后续用于补充 CSP、Trusted Types、输出编码、模版安全与浏览器检测对照示例。当前仅保留占位,防止误读为已具备生产策略。

查看文件

@@ -0,0 +1,5 @@
# XSS 利用实验
> `LAB NOTE` | `规划中`
该目录预留给受控环境中的最小化利用演示、上下文差异说明和复现脚本。当前仅保留占位,避免误报为已完工。

5
02-xss/payloads/README.md 普通文件
查看文件

@@ -0,0 +1,5 @@
# XSS Payload 集合
> `LAB NOTE` | `规划中`
该目录后续用于保存按上下文分类的实验 payload。正式补齐前,统一以工具内建 payload 和案例文档为准。

查看文件

@@ -13,6 +13,11 @@ Usage:
python3 xss-fuzzer.py -u "http://target.com/search?q=test"
python3 xss-fuzzer.py -u "http://target.com/comment" -d "comment=test" -m POST
python3 xss-fuzzer.py -u "http://target.com" --dom-scan
授权边界:
- 仅用于自有资产、测试环境或已明确授权的目标
- 对公网资产执行验证时,应使用最小化回显验证和可审计测试记录
- 不面向无授权第三方网站或公共站点
"""
import argparse

查看文件

@@ -1,4 +1,9 @@
// xss-scanner.go - 高性能 XSS 批量扫描工具
//
// 授权边界:
// - 仅用于自有资产、测试环境或已明确授权的目标
// - 允许公网验证,但必须确认资产归属或授权关系
// - 不面向无授权第三方网站或泛互联网枚举
package main
import (

22
03-authentication/README.md 普通文件
查看文件

@@ -0,0 +1,22 @@
# 认证、会话与 JWT 实验
> `LAB ONLY` | `AUTHORIZED TARGETS ONLY`
## 范围元数据
| 字段 | 内容 |
|------|------|
| 适用目标类型 | `lab-local`, `lab-public`, `authorized-third-party` |
| 是否允许公网验证 | 允许,但必须控制尝试频率和影响面 |
| 推荐最小化验证 | 使用最小字典、最小请求次数、只验证防护是否存在 |
| 禁止场景 | 无授权爆破、撞库、批量验证码规避、真实账户接管 |
## 当前内容
- 暴力破解工具: [web-brute.py](/Users/x/websafe/03-authentication/bruteforce/tools/web-brute.py)
- JWT 工具: [jwt-cracker.py](/Users/x/websafe/03-authentication/jwt/tools/jwt-cracker.py)
- 会话与 Token 风险案例: [福建案例总结](/Users/x/websafe/06-case-studies/fujian-gov-procurement/lessons-learned.md)
## 说明
该目录聚焦“验证控制面是否存在”而不是“最大化拿下账户”。对公网授权目标的验证应优先采用小样本、低频和可审计的实验方法。

查看文件

@@ -0,0 +1,5 @@
# 暴力破解利用说明
> `LAB NOTE` | `规划中`
该目录预留给登录流程、锁定策略和验证码绕过的实验说明,强调最小化验证而非账户接管。

查看文件

@@ -13,6 +13,11 @@ Web 暴力破解工具
Usage:
python3 web-brute.py -u "http://target.com/login" -U usernames.txt -P passwords.txt
python3 web-brute.py -u "http://target.com/login" --user admin -P passwords.txt -d "username=^USER^&password=^PASS^"
授权边界:
- 仅用于自有资产、测试环境或已明确授权的登录入口
- 对公网测试资产执行验证时,应先确认限速、告警和锁定策略
- 不面向无授权第三方网站或公共站点
"""
import argparse

查看文件

@@ -0,0 +1,5 @@
# 字典文件说明
> `LAB NOTE` | `规划中`
该目录后续仅用于小规模、可审计的实验字典,不存放来自真实用户或泄露数据的口令集合。

查看文件

@@ -0,0 +1,5 @@
# JWT 利用实验
> `LAB NOTE` | `规划中`
该目录预留给弱密钥、算法降级和 kid 注入的实验复盘,目标是验证控制面,而不是伪造真实第三方令牌。

查看文件

@@ -14,6 +14,11 @@ Usage:
python3 jwt-cracker.py -t "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
python3 jwt-cracker.py -t "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." -w wordlist.txt
python3 jwt-cracker.py -t "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." --attack none
授权边界:
- 仅用于分析你方签发的 JWT、测试环境样本或已明确授权的令牌
- 不应用于来源不明或无授权的第三方生产令牌
- 验证输出应纳入测试记录,避免在共享日志中暴露敏感载荷
"""
import argparse

查看文件

@@ -0,0 +1,5 @@
# 会话实验
> `LAB NOTE` | `规划中`
该目录预留给 Cookie 属性、会话固定、登出失效、Token 轮换与浏览器存储对照实验。当前由 [07-framework-security/frontend-js](/Users/x/websafe/07-framework-security/frontend-js/README.md) 和现有案例文档承担相关内容。

查看文件

@@ -0,0 +1,5 @@
# 会话利用实验
> `LAB NOTE` | `规划中`
该目录后续用于会话固定、Cookie 属性和登出失效对照实验。

查看文件

@@ -0,0 +1,5 @@
# 会话工具说明
> `LAB NOTE` | `规划中`
该目录保留给浏览器存储、Cookie 属性和会话边界相关工具。当前尚未补齐具体脚本。

查看文件

@@ -0,0 +1,26 @@
# 服务器、TLS 与关联面实验
> `LAB ONLY` | `AUTHORIZED TARGETS ONLY`
## 范围元数据
| 字段 | 内容 |
|------|------|
| 适用目标类型 | `lab-local`, `lab-public`, `authorized-third-party` |
| 是否允许公网验证 | 允许,但必须限定为单主机或单服务面验证 |
| 推荐最小化验证 | 先做指纹、证书、响应头和必要端口检查,再做更深验证 |
| 禁止场景 | 泛互联网大范围端口枚举、无授权资产画像、影响服务可用性的 DoS 行为 |
## 当前内容
- 端口与服务指纹: [port-scanner.py](/Users/x/websafe/04-server-security/scanning/tools/port-scanner.py)
- TLS 配置检查: [tls-scanner.py](/Users/x/websafe/04-server-security/tls/tools/tls-scanner.py)
- 关联面分析: [site-scope-mapper.py](/Users/x/websafe/04-server-security/infrastructure/tools/site-scope-mapper.py)
- 实验网关样例: [nginx-hardening.conf](/Users/x/websafe/05-defense/hardening/nginx-hardening.conf)
## 建议实验路径
1. 用 TLS 与响应头检查判断暴露面。
2. 用端口扫描确认最小服务面。
3. 用关联面分析确认同 IP、同证书和同代理边界。
4. 将结果回填到 [资产模板](/Users/x/websafe/09-scope-and-targeting/asset-inventory-template.md) 与 [测试记录模板](/Users/x/websafe/09-scope-and-targeting/test-record-template.md)。

查看文件

@@ -0,0 +1,8 @@
# 基础设施与关联面分析
> `LAB ONLY` | `AUTHORIZED TARGETS ONLY`
该目录用于自有或授权资产的同 IP、同证书、同反向代理和同服务面关联分析。核心目标是减少“只看单站点”的误判,识别共享边界带来的风险传播。
- 工具入口: [site-scope-mapper.py](/Users/x/websafe/04-server-security/infrastructure/tools/site-scope-mapper.py)
- 方法说明: [associated-site-analysis.md](/Users/x/websafe/09-scope-and-targeting/associated-site-analysis.md)

查看文件

@@ -0,0 +1,17 @@
# 关联面分析工具
> `LAB ONLY` | `AUTHORIZED TARGETS ONLY`
## 工具元数据
| 字段 | 内容 |
|------|------|
| 适用目标类型 | `lab-local`, `lab-public`, `authorized-third-party` |
| 是否允许公网验证 | 允许 |
| 所需授权前提 | 明确确认目标主机、站点或 IP 属于你方或已授权 |
| 推荐最小化验证 | 解析 DNS、证书 SAN、响应头和标题,不做大范围扩展扫描 |
| 禁止使用场景 | 大规模互联网枚举、无授权同 IP 资产画像、持续高频探测 |
当前工具:
- [site-scope-mapper.py](/Users/x/websafe/04-server-security/infrastructure/tools/site-scope-mapper.py)

查看文件

@@ -0,0 +1,278 @@
#!/usr/bin/env python3
# LAB ONLY
# AUTHORIZED TARGETS ONLY
"""
Authorized Site Scope Mapper
同 IP / 同证书 / 同反向代理 关联面分析工具
支持:
- 单主机 DNS 解析
- 反向 DNS 查询
- HTTP 响应头、标题与重定向观察
- TLS 证书主题与 SAN 提取
- 基于目标自身信息的关联主机汇总
Usage:
python3 site-scope-mapper.py --target app.example.test --ack-authorized
python3 site-scope-mapper.py --target 203.0.113.10 --ports 80,443,8443 --json --ack-authorized
授权边界:
- 仅用于自有资产、测试环境或已明确授权的目标
- 允许公网验证,但默认只围绕单个目标做最小化关联分析
- 不面向无授权第三方网站或泛互联网枚举
"""
import argparse
import ipaddress
import json
import re
import socket
import ssl
import warnings
from dataclasses import asdict, dataclass, field
from typing import Dict, List, Optional, Set
warnings.filterwarnings("ignore", message="urllib3 v2 only supports OpenSSL")
import requests
DEFAULT_PORTS = [80, 443, 8080, 8443]
@dataclass
class HTTPObservation:
scheme: str
port: int
status_code: Optional[int] = None
location: Optional[str] = None
server: Optional[str] = None
title: Optional[str] = None
final_url: Optional[str] = None
error: Optional[str] = None
@dataclass
class TLSObservation:
port: int
subject_cn: Optional[str] = None
issuer_cn: Optional[str] = None
san: List[str] = field(default_factory=list)
not_before: Optional[str] = None
not_after: Optional[str] = None
error: Optional[str] = None
def is_ip(value: str) -> bool:
try:
ipaddress.ip_address(value)
return True
except ValueError:
return False
def resolve_host(target: str) -> Dict[str, List[str]]:
records = {"ipv4": [], "ipv6": []}
try:
infos = socket.getaddrinfo(target, None)
except socket.gaierror:
return records
for info in infos:
family = info[0]
address = info[4][0]
if family == socket.AF_INET and address not in records["ipv4"]:
records["ipv4"].append(address)
if family == socket.AF_INET6 and address not in records["ipv6"]:
records["ipv6"].append(address)
return records
def reverse_dns(address: str) -> Optional[str]:
try:
host, _, _ = socket.gethostbyaddr(address)
return host
except Exception:
return None
def extract_title(html: str) -> Optional[str]:
match = re.search(r"<title>(.*?)</title>", html, re.IGNORECASE | re.DOTALL)
if not match:
return None
return re.sub(r"\s+", " ", match.group(1)).strip()[:160]
def observe_http(target: str, scheme: str, port: int, timeout: float) -> HTTPObservation:
url = f"{scheme}://{target}:{port}/"
try:
response = requests.get(
url,
timeout=timeout,
allow_redirects=False,
verify=False,
headers={"User-Agent": "websafe-site-scope-mapper/1.0"},
)
title = extract_title(response.text or "")
return HTTPObservation(
scheme=scheme,
port=port,
status_code=response.status_code,
location=response.headers.get("Location"),
server=response.headers.get("Server"),
title=title,
final_url=response.url,
)
except Exception as exc:
return HTTPObservation(scheme=scheme, port=port, error=str(exc))
def observe_tls(target: str, port: int, timeout: float) -> TLSObservation:
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
try:
with socket.create_connection((target, port), timeout=timeout) as sock:
with context.wrap_socket(sock, server_hostname=target) as ssock:
cert = ssock.getpeercert()
san = []
for item in cert.get("subjectAltName", []):
if len(item) == 2:
san.append(item[1])
subject = dict(x[0] for x in cert.get("subject", []))
issuer = dict(x[0] for x in cert.get("issuer", []))
return TLSObservation(
port=port,
subject_cn=subject.get("commonName"),
issuer_cn=issuer.get("commonName"),
san=san,
not_before=cert.get("notBefore"),
not_after=cert.get("notAfter"),
)
except Exception as exc:
return TLSObservation(port=port, error=str(exc))
def parse_ports(value: str) -> List[int]:
ports: List[int] = []
for part in value.split(","):
part = part.strip()
if not part:
continue
port = int(part)
if port not in ports:
ports.append(port)
if len(ports) > 10:
raise ValueError("为避免扩大扫描范围,最多允许 10 个端口")
return ports
def render_text(report: Dict) -> str:
lines = []
lines.append("=" * 68)
lines.append("Authorized Site Scope Mapper")
lines.append("=" * 68)
lines.append(f"Target: {report['target']}")
lines.append(f"Target Type: {report['target_type']}")
lines.append("")
dns_records = report["dns"]
lines.append("DNS:")
lines.append(f" IPv4: {', '.join(dns_records['ipv4']) or '-'}")
lines.append(f" IPv6: {', '.join(dns_records['ipv6']) or '-'}")
lines.append(f" PTR : {', '.join(report['reverse_dns']) or '-'}")
lines.append("")
lines.append("HTTP Observations:")
for item in report["http"]:
lines.append(
f" - {item['scheme']}:{item['port']} status={item.get('status_code') or '-'} "
f"server={item.get('server') or '-'} title={item.get('title') or '-'} "
f"location={item.get('location') or '-'}"
)
lines.append("")
lines.append("TLS Observations:")
for item in report["tls"]:
lines.append(
f" - port {item['port']} subject={item.get('subject_cn') or '-'} "
f"issuer={item.get('issuer_cn') or '-'} SAN={len(item.get('san', []))}"
)
lines.append("")
lines.append("Related Hosts:")
related = report["related_hosts"]
if related:
for host in related:
lines.append(f" - {host}")
else:
lines.append(" - None derived from on-target data")
return "\n".join(lines)
def main() -> int:
parser = argparse.ArgumentParser(description="Authorized Site Scope Mapper")
parser.add_argument("--target", required=True, help="目标主机名或 IP")
parser.add_argument(
"--ports",
default="80,443,8080,8443",
help="需要观察的端口列表,默认 80,443,8080,8443",
)
parser.add_argument("--timeout", type=float, default=4.0, help="请求超时时间")
parser.add_argument("--json", action="store_true", help="输出 JSON")
parser.add_argument(
"--ack-authorized",
action="store_true",
help="确认目标属于自有资产或已明确授权",
)
args = parser.parse_args()
if not args.ack_authorized:
parser.error("必须显式提供 --ack-authorized 以确认目标范围合法")
ports = parse_ports(args.ports)
target_type = "ip" if is_ip(args.target) else "hostname"
dns_records = resolve_host(args.target) if target_type == "hostname" else {"ipv4": [args.target], "ipv6": []}
reverse_hosts: Set[str] = set()
for address in dns_records["ipv4"] + dns_records["ipv6"]:
ptr = reverse_dns(address)
if ptr:
reverse_hosts.add(ptr)
http_results: List[HTTPObservation] = []
tls_results: List[TLSObservation] = []
for port in ports:
schemes = ["https"] if port in (443, 8443) else ["http"]
if port not in (80, 443):
schemes.append("https")
for scheme in schemes:
http_results.append(observe_http(args.target, scheme, port, args.timeout))
if port in (443, 8443):
tls_results.append(observe_tls(args.target, port, args.timeout))
related_hosts: Set[str] = set(reverse_hosts)
for item in tls_results:
related_hosts.update(host for host in item.san if host)
report = {
"target": args.target,
"target_type": target_type,
"dns": dns_records,
"reverse_dns": sorted(reverse_hosts),
"http": [asdict(item) for item in http_results],
"tls": [asdict(item) for item in tls_results],
"related_hosts": sorted(related_hosts),
}
if args.json:
print(json.dumps(report, indent=2, ensure_ascii=True))
else:
print(render_text(report))
return 0
if __name__ == "__main__":
raise SystemExit(main())

查看文件

@@ -0,0 +1,5 @@
# 服务端错误配置实验
> `LAB NOTE` | `规划中`
该目录预留给默认目录列表、错误暴露、调试接口、代理信任链和配置合并问题的实验样例。当前相关内容分散在 [07-framework-security/server-software](/Users/x/websafe/07-framework-security/server-software/README.md) 与已有案例中。

查看文件

@@ -0,0 +1,5 @@
# 错误配置工具说明
> `LAB NOTE` | `规划中`
该目录后续用于默认配置、目录暴露、调试接口和信任边界误配的辅助检查脚本。

查看文件

@@ -0,0 +1,5 @@
# Nmap 脚本目录
> `LAB NOTE` | `规划中`
该目录预留给授权实验环境中的 NSE 脚本示例。当前不放置通用对外枚举脚本。

查看文件

@@ -13,6 +13,11 @@ Usage:
python3 port-scanner.py -H 192.168.1.1 -p 1-1000
python3 port-scanner.py -H 192.168.1.1 -p 80,443,8080
python3 port-scanner.py -H 192.168.1.1 --top-ports 100
授权边界:
- 仅用于自有资产、测试环境或已明确授权的目标
- 允许公网验证,但建议缩小到明确主机和必要端口范围
- 不面向无授权第三方网站或泛互联网枚举
"""
import argparse

查看文件

@@ -12,6 +12,11 @@ TLS Scanner - TLS/SSL 安全配置扫描工具
Usage:
python3 tls-scanner.py -u https://example.com
python3 tls-scanner.py -u example.com -p 443
授权边界:
- 仅用于自有资产、测试环境或已明确授权的 TLS 终端
- 允许公网验证,但建议优先使用只读检查
- 不面向无授权第三方网站或泛互联网扫描
"""
import argparse

11
05-defense/README.md 普通文件
查看文件

@@ -0,0 +1,11 @@
# 检测、观测与修复演示
> `LAB ONLY` | `非生产安全基线`
本目录保存的是实验网关、检测规则、代码修复演示和观测型配置。这里的内容主要用于:
- 在实验环境中验证修复是否有效
- 观察浏览器与代理层对安全头、限速和日志的影响
- 对比“脆弱配置”和“较安全配置”的行为差异
如果某个配置包含宽松策略、简化规则或演示性拦截,那是为了实验可观察性,不代表生产推荐。

查看文件

@@ -1,184 +1,76 @@
# Nginx 安全加固配置
# LAB ONLY
# 用途: 授权攻防实验中的实验网关、响应头观测、限速演示和反向代理对照
# 目标范围: 本地实验集群、自有公网测试资产、已授权验证目标
# 风险: 可能影响流量路径、触发告警、改变缓存与安全头表现
# 不适用: 生产安全基线、默认公网部署、未授权第三方站点
## 1. TLS 配置
worker_processes 1;
```nginx
# 仅允许 TLS 1.2 和 1.3
ssl_protocols TLSv1.2 TLSv1.3;
# 强密码套件
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers off;
# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# 会话配置
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
```
## 2. 安全响应头
```nginx
# Content Security Policy
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; connect-src 'self'; frame-ancestors 'self';" always;
# 防止点击劫持
add_header X-Frame-Options "SAMEORIGIN" always;
# 防止 MIME 类型嗅探
add_header X-Content-Type-Options "nosniff" always;
# XSS 保护 (已弃用,建议使用 CSP)
add_header X-XSS-Protection "1; mode=block" always;
# Referrer 策略
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# 权限策略
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
```
## 3. 隐藏版本号
```nginx
server_tokens off;
```
## 4. 请求限制
```nginx
# 限制请求体大小
client_max_body_size 10M;
# 限制请求体缓冲
client_body_buffer_size 128k;
# 连接限制
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
limit_conn conn_limit 100;
# 请求速率限制
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
limit_req zone=req_limit burst=20 nodelay;
```
## 5. 阻止恶意请求
```nginx
# 阻止常见攻击
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
events {
worker_connections 1024;
}
# 阻止可疑 User-Agent
if ($http_user_agent ~* (sqlmap|nikto|nmap|masscan|zap|burp|acunetix|nessus)) {
return 403;
}
# 阻止路径遍历
if ($request_uri ~* \.\.) {
return 403;
}
# 阻止 SQL 注入特征
if ($request_uri ~* (union|select|insert|drop|delete|update|script|alert|document\.cookie)) {
return 403;
}
```
## 6. 日志安全
```nginx
# 不记录敏感路径
location ~* ^/(login|admin|api/auth) {
access_log off;
# ... 其他配置
}
# 自定义日志格式 (不包含敏感信息)
log_format secure '$remote_addr - $remote_user [$time_local] "$request_method $scheme://$host$request_uri" $status $body_bytes_sent "$http_referer"';
```
## 7. Cookie 安全
```nginx
# 仅通过 HTTPS 传输
proxy_cookie_path / "/; Secure; HttpOnly; SameSite=Strict";
```
## 8. Host 头校验
```nginx
# 定义允许的域名
server {
listen 80 default_server;
server_name _;
return 444; # 关闭连接
}
server {
listen 443 ssl default_server;
server_name _;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
return 444;
}
```
## 9. 完整安全配置示例
```nginx
server {
listen 443 ssl http2;
server_name example.com;
# TLS
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
# 安全头
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Content-Security-Policy "default-src 'self'" always;
# 隐藏版本
http {
server_tokens off;
sendfile on;
# 限制
client_max_body_size 10M;
limit_req zone=req_limit burst=20 nodelay;
limit_conn_zone $binary_remote_addr zone=lab_conn_limit:10m;
limit_req_zone $binary_remote_addr zone=lab_req_limit:10m rate=10r/s;
# 应用
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
upstream lab_backend {
server 127.0.0.1:9001;
}
log_format lab_trace
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log logs/access.log lab_trace;
error_log logs/error.log warn;
server {
listen 8088;
server_name lab-gateway.local;
# 实验用途: 便于观察头部、缓存和浏览器保护行为。
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
# 注意:
# 下面的 CSP 仅用于实验演示,故意保留了较宽松的脚本执行能力,
# 便于复现 XSS、CSP 绕过和前端资源加载差异。
# 这不是生产推荐策略。
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https:; frame-ancestors 'self';" always;
client_max_body_size 10M;
client_body_buffer_size 128k;
limit_conn lab_conn_limit 50;
limit_req zone=lab_req_limit burst=20 nodelay;
# 实验用途: 便于观察代理层对异常方法和扫描器指纹的处理。
# 这些规则仅用于教学和日志对照,不是生产推荐的主要防护手段。
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 405;
}
if ($http_user_agent ~* (sqlmap|nikto|nmap|masscan|zap|burp|acunetix|nessus)) {
return 403;
}
if ($request_uri ~* \.\.) {
return 403;
}
location / {
proxy_pass http://lab_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
# HTTP 重定向到 HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
# 阻止非法 Host
server {
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;
return 444;
}
```

查看文件

@@ -0,0 +1,15 @@
# 安全编码修复库
> `LAB ONLY` | 修复主题用于把实验发现映射回代码整改,不代表默认生产基线。
- 语言范围: `javascript-typescript`, `nodejs`, `java`, `php`, `python`, `ruby`, `csharp`, `go`
- 主题范围: 输出编码、DOM sink、CSP / Trusted Types、令牌存储、鉴权复核、SSRF、走私边界、路径穿越、文件上传、插件信任、依赖升级、代理信任、反序列化、模板注入。
- [javascript-typescript](/Users/x/websafe/05-defense/secure-code/javascript-typescript/README.md)
- [nodejs](/Users/x/websafe/05-defense/secure-code/nodejs/README.md)
- [java](/Users/x/websafe/05-defense/secure-code/java/README.md)
- [php](/Users/x/websafe/05-defense/secure-code/php/README.md)
- [python](/Users/x/websafe/05-defense/secure-code/python/README.md)
- [ruby](/Users/x/websafe/05-defense/secure-code/ruby/README.md)
- [csharp](/Users/x/websafe/05-defense/secure-code/csharp/README.md)
- [go](/Users/x/websafe/05-defense/secure-code/go/README.md)

查看文件

@@ -0,0 +1,15 @@
# 安全编码修复库
> `LAB ONLY` | 修复主题用于把实验发现映射回代码整改,不代表默认生产基线。
- 语言范围: `javascript-typescript`, `nodejs`, `java`, `php`, `python`, `ruby`, `csharp`, `go`
- 主题范围: 输出编码、DOM sink、CSP / Trusted Types、令牌存储、鉴权复核、SSRF、走私边界、路径穿越、文件上传、插件信任、依赖升级、代理信任、反序列化、模板注入。
- [javascript-typescript](/Users/x/websafe/05-defense/secure-code/javascript-typescript/README.md)
- [nodejs](/Users/x/websafe/05-defense/secure-code/nodejs/README.md)
- [java](/Users/x/websafe/05-defense/secure-code/java/README.md)
- [php](/Users/x/websafe/05-defense/secure-code/php/README.md)
- [python](/Users/x/websafe/05-defense/secure-code/python/README.md)
- [ruby](/Users/x/websafe/05-defense/secure-code/ruby/README.md)
- [csharp](/Users/x/websafe/05-defense/secure-code/csharp/README.md)
- [go](/Users/x/websafe/05-defense/secure-code/go/README.md)

查看文件

@@ -0,0 +1,20 @@
# csharp
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/csharp/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/csharp/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/csharp/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/csharp/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/csharp/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/csharp/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/csharp/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/csharp/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/csharp/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/csharp/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/csharp/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/csharp/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/csharp/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/csharp/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,20 @@
# csharp
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/csharp/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/csharp/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/csharp/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/csharp/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/csharp/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/csharp/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/csharp/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/csharp/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/csharp/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/csharp/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/csharp/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/csharp/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/csharp/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/csharp/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,67 @@
# authz-server-side-recheck
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `authz-server-side-recheck`
- 说明: 前置代理或 middleware 不能替代服务端最终鉴权。
- 典型场景: 适用于代理层放行、路由守卫和后端最终授权重新确认。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adminer
- Adobe Commerce
- Apache Tomcat
- Astro
- Directus
- Discourse
- Drupal
- Ghost
- GitLab CE
- Gitea
- Grafana
- Jenkins
- Kibana
- Laravel
- Magento Open Source
- Mattermost
- MediaWiki
- Medusa
- Moodle
- NestJS
- Next.js
- Nuxt
- OpenCart
- OpenMage / Mage-OS
- PrestaShop
- Redmine
- Ruby on Rails
- Saleor
- Shopware
- Spring Boot
- Spring Framework
- Spring Security
- Strapi
- SvelteKit
- Symfony
- WooCommerce
- phpMyAdmin

查看文件

@@ -0,0 +1,34 @@
# csp-trusted-types
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `csp-trusted-types`
- 说明: 用 CSP 和 Trusted Types 缩小前端执行面。
- 典型场景: 适用于高风险前端应用、管理端和需要限制脚本执行面的页面。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Angular
- Astro
- Nginx
- React
- Vue

查看文件

@@ -0,0 +1,33 @@
# dependency-upgrade-policy
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `dependency-upgrade-policy`
- 说明: 用自动化升级、锁版本和审查策略降低供应链风险。
- 典型场景: 适用于 lockfile、SBOM、CI 审查和供应链更新节奏治理。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Node.js
- Vite
- esbuild
- webpack

查看文件

@@ -0,0 +1,32 @@
# deserialization-safety
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `deserialization-safety`
- 说明: 避免对不可信数据做危险反序列化。
- 典型场景: 适用于缓存、任务队列、对象恢复和跨服务消息传递。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- GitLab CE
- Jenkins
- Spring Framework

查看文件

@@ -0,0 +1,30 @@
# dom-sink-hardening
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `dom-sink-hardening`
- 说明: 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- 典型场景: 适用于前端模板拼接、Markdown 渲染器和富文本预览逻辑。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- React

查看文件

@@ -0,0 +1,48 @@
# file-upload-validation
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `file-upload-validation`
- 说明: 校验文件类型、名称、存储位置和执行权限。
- 典型场景: 适用于媒体上传、插件安装、主题导入和日志附件接收。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adobe Commerce
- Directus
- Django
- Drupal
- Joomla
- Laravel
- Magento Open Source
- MediaWiki
- Moodle
- OpenCart
- PrestaShop
- Ruby on Rails
- Shopware
- Strapi
- Vite
- WordPress
- esbuild
- webpack

查看文件

@@ -0,0 +1,36 @@
# path-traversal-guard
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `path-traversal-guard`
- 说明: 标准化路径并限制访问根目录。
- 典型场景: 适用于下载、导入、附件预览和主题/模板读取路径。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Apache Tomcat
- Django
- Joomla
- Spring Framework
- Symfony
- phpMyAdmin

查看文件

@@ -0,0 +1,43 @@
# plugin-extension-trust-policy
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `plugin-extension-trust-policy`
- 说明: 限制第三方插件、模块和主题的信任边界。
- 典型场景: 适用于插件市场、主题仓库、第三方扩展和模块化系统。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Adobe Commerce
- Discourse
- Drupal
- Grafana
- Jenkins
- Joomla
- Magento Open Source
- OpenCart
- OpenMage / Mage-OS
- PrestaShop
- Redmine
- Shopware
- WooCommerce
- WordPress

查看文件

@@ -0,0 +1,49 @@
# proxy-trust-boundary
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `proxy-trust-boundary`
- 说明: 只信任明确代理并限制头部透传。
- 典型场景: 适用于真实 IP 透传、认证头转发和反向代理旁路风险。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Caddy
- Echo
- Express
- Fastify
- Gin
- Gitea
- HAProxy
- Hapi
- Kibana
- Koa
- Next.js
- Nginx
- Nuxt
- Spring Boot
- Spring Security
- Traefik
- Undici
- Vite
- Werkzeug

查看文件

@@ -0,0 +1,37 @@
# request-smuggling-boundary
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `request-smuggling-boundary`
- 说明: 统一代理层和应用层的请求边界解释。
- 典型场景: 适用于代理链、WAF、CDN 和应用服务器之间的请求解析边界。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Apache Tomcat
- Caddy
- HAProxy
- Nginx
- Node.js
- Traefik
- Werkzeug

查看文件

@@ -0,0 +1,36 @@
# ssrf-url-validation
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `ssrf-url-validation`
- 说明: 对 URL、协议、IP 和重定向做 allowlist 校验。
- 典型场景: 适用于 webhook、URL 导入、远程图片抓取和插件联动调用。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Express
- Fastify
- Flask
- Koa
- NestJS
- Node.js
- Undici

查看文件

@@ -0,0 +1,31 @@
# template-injection-guard
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `template-injection-guard`
- 说明: 模板上下文中禁用危险表达式执行。
- 典型场景: 适用于 SSR、模板引擎、邮件渲染和后台自定义视图。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Angular
- Vue

查看文件

@@ -0,0 +1,46 @@
# token-cookie-storage
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `token-cookie-storage`
- 说明: 避免把敏感令牌长期暴露在可读浏览器存储中。
- 典型场景: 适用于浏览器端会话、管理接口令牌和单页应用认证态。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Directus
- Echo
- Flask
- Ghost
- GitLab CE
- Gitea
- Hapi
- Mattermost
- Medusa
- NestJS
- Next.js
- Nuxt
- Saleor
- Spring Security
- Strapi
- SvelteKit
- WordPress

查看文件

@@ -0,0 +1,56 @@
# xss-output-encoding
> `LAB ONLY` | 修复主题页
- 语言: `csharp`
- 主题: `xss-output-encoding`
- 说明: 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- 典型场景: 适用于模板输出、服务端渲染片段和后台管理界面回显场景。
## 脆弱示例
```cs
return Content($"<div>{value}</div>", "text/html");
```
## 更安全的写法
```cs
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adminer
- Adobe Commerce
- Angular
- Discourse
- Django
- Drupal
- Express
- Fastify
- Flask
- Ghost
- Gin
- Grafana
- Joomla
- Kibana
- Laravel
- Mattermost
- MediaWiki
- Moodle
- React
- Redmine
- Ruby on Rails
- Symfony
- Vue
- WooCommerce
- WordPress
- phpMyAdmin

查看文件

@@ -0,0 +1,20 @@
# go
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/go/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/go/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/go/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/go/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/go/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/go/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/go/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/go/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/go/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/go/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/go/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/go/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/go/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/go/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,20 @@
# go
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/go/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/go/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/go/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/go/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/go/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/go/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/go/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/go/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/go/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/go/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/go/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/go/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/go/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/go/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,67 @@
# authz-server-side-recheck
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `authz-server-side-recheck`
- 说明: 前置代理或 middleware 不能替代服务端最终鉴权。
- 典型场景: 适用于代理层放行、路由守卫和后端最终授权重新确认。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adminer
- Adobe Commerce
- Apache Tomcat
- Astro
- Directus
- Discourse
- Drupal
- Ghost
- GitLab CE
- Gitea
- Grafana
- Jenkins
- Kibana
- Laravel
- Magento Open Source
- Mattermost
- MediaWiki
- Medusa
- Moodle
- NestJS
- Next.js
- Nuxt
- OpenCart
- OpenMage / Mage-OS
- PrestaShop
- Redmine
- Ruby on Rails
- Saleor
- Shopware
- Spring Boot
- Spring Framework
- Spring Security
- Strapi
- SvelteKit
- Symfony
- WooCommerce
- phpMyAdmin

查看文件

@@ -0,0 +1,34 @@
# csp-trusted-types
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `csp-trusted-types`
- 说明: 用 CSP 和 Trusted Types 缩小前端执行面。
- 典型场景: 适用于高风险前端应用、管理端和需要限制脚本执行面的页面。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Angular
- Astro
- Nginx
- React
- Vue

查看文件

@@ -0,0 +1,33 @@
# dependency-upgrade-policy
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `dependency-upgrade-policy`
- 说明: 用自动化升级、锁版本和审查策略降低供应链风险。
- 典型场景: 适用于 lockfile、SBOM、CI 审查和供应链更新节奏治理。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Node.js
- Vite
- esbuild
- webpack

查看文件

@@ -0,0 +1,32 @@
# deserialization-safety
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `deserialization-safety`
- 说明: 避免对不可信数据做危险反序列化。
- 典型场景: 适用于缓存、任务队列、对象恢复和跨服务消息传递。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- GitLab CE
- Jenkins
- Spring Framework

查看文件

@@ -0,0 +1,30 @@
# dom-sink-hardening
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `dom-sink-hardening`
- 说明: 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- 典型场景: 适用于前端模板拼接、Markdown 渲染器和富文本预览逻辑。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- React

查看文件

@@ -0,0 +1,48 @@
# file-upload-validation
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `file-upload-validation`
- 说明: 校验文件类型、名称、存储位置和执行权限。
- 典型场景: 适用于媒体上传、插件安装、主题导入和日志附件接收。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adobe Commerce
- Directus
- Django
- Drupal
- Joomla
- Laravel
- Magento Open Source
- MediaWiki
- Moodle
- OpenCart
- PrestaShop
- Ruby on Rails
- Shopware
- Strapi
- Vite
- WordPress
- esbuild
- webpack

查看文件

@@ -0,0 +1,36 @@
# path-traversal-guard
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `path-traversal-guard`
- 说明: 标准化路径并限制访问根目录。
- 典型场景: 适用于下载、导入、附件预览和主题/模板读取路径。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Apache Tomcat
- Django
- Joomla
- Spring Framework
- Symfony
- phpMyAdmin

查看文件

@@ -0,0 +1,43 @@
# plugin-extension-trust-policy
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `plugin-extension-trust-policy`
- 说明: 限制第三方插件、模块和主题的信任边界。
- 典型场景: 适用于插件市场、主题仓库、第三方扩展和模块化系统。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Adobe Commerce
- Discourse
- Drupal
- Grafana
- Jenkins
- Joomla
- Magento Open Source
- OpenCart
- OpenMage / Mage-OS
- PrestaShop
- Redmine
- Shopware
- WooCommerce
- WordPress

查看文件

@@ -0,0 +1,49 @@
# proxy-trust-boundary
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `proxy-trust-boundary`
- 说明: 只信任明确代理并限制头部透传。
- 典型场景: 适用于真实 IP 透传、认证头转发和反向代理旁路风险。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Caddy
- Echo
- Express
- Fastify
- Gin
- Gitea
- HAProxy
- Hapi
- Kibana
- Koa
- Next.js
- Nginx
- Nuxt
- Spring Boot
- Spring Security
- Traefik
- Undici
- Vite
- Werkzeug

查看文件

@@ -0,0 +1,37 @@
# request-smuggling-boundary
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `request-smuggling-boundary`
- 说明: 统一代理层和应用层的请求边界解释。
- 典型场景: 适用于代理链、WAF、CDN 和应用服务器之间的请求解析边界。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Apache Tomcat
- Caddy
- HAProxy
- Nginx
- Node.js
- Traefik
- Werkzeug

查看文件

@@ -0,0 +1,36 @@
# ssrf-url-validation
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `ssrf-url-validation`
- 说明: 对 URL、协议、IP 和重定向做 allowlist 校验。
- 典型场景: 适用于 webhook、URL 导入、远程图片抓取和插件联动调用。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Express
- Fastify
- Flask
- Koa
- NestJS
- Node.js
- Undici

查看文件

@@ -0,0 +1,31 @@
# template-injection-guard
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `template-injection-guard`
- 说明: 模板上下文中禁用危险表达式执行。
- 典型场景: 适用于 SSR、模板引擎、邮件渲染和后台自定义视图。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Angular
- Vue

查看文件

@@ -0,0 +1,46 @@
# token-cookie-storage
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `token-cookie-storage`
- 说明: 避免把敏感令牌长期暴露在可读浏览器存储中。
- 典型场景: 适用于浏览器端会话、管理接口令牌和单页应用认证态。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Directus
- Echo
- Flask
- Ghost
- GitLab CE
- Gitea
- Hapi
- Mattermost
- Medusa
- NestJS
- Next.js
- Nuxt
- Saleor
- Spring Security
- Strapi
- SvelteKit
- WordPress

查看文件

@@ -0,0 +1,56 @@
# xss-output-encoding
> `LAB ONLY` | 修复主题页
- 语言: `go`
- 主题: `xss-output-encoding`
- 说明: 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- 典型场景: 适用于模板输出、服务端渲染片段和后台管理界面回显场景。
## 脆弱示例
```go
fmt.Fprintf(w, "<div>%s</div>", value)
```
## 更安全的写法
```go
template.HTMLEscape(w, []byte(value))
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adminer
- Adobe Commerce
- Angular
- Discourse
- Django
- Drupal
- Express
- Fastify
- Flask
- Ghost
- Gin
- Grafana
- Joomla
- Kibana
- Laravel
- Mattermost
- MediaWiki
- Moodle
- React
- Redmine
- Ruby on Rails
- Symfony
- Vue
- WooCommerce
- WordPress
- phpMyAdmin

查看文件

@@ -0,0 +1,20 @@
# java
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/java/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/java/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/java/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/java/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/java/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/java/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/java/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/java/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/java/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/java/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/java/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/java/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/java/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/java/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,20 @@
# java
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/java/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/java/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/java/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/java/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/java/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/java/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/java/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/java/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/java/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/java/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/java/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/java/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/java/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/java/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,67 @@
# authz-server-side-recheck
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `authz-server-side-recheck`
- 说明: 前置代理或 middleware 不能替代服务端最终鉴权。
- 典型场景: 适用于代理层放行、路由守卫和后端最终授权重新确认。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adminer
- Adobe Commerce
- Apache Tomcat
- Astro
- Directus
- Discourse
- Drupal
- Ghost
- GitLab CE
- Gitea
- Grafana
- Jenkins
- Kibana
- Laravel
- Magento Open Source
- Mattermost
- MediaWiki
- Medusa
- Moodle
- NestJS
- Next.js
- Nuxt
- OpenCart
- OpenMage / Mage-OS
- PrestaShop
- Redmine
- Ruby on Rails
- Saleor
- Shopware
- Spring Boot
- Spring Framework
- Spring Security
- Strapi
- SvelteKit
- Symfony
- WooCommerce
- phpMyAdmin

查看文件

@@ -0,0 +1,34 @@
# csp-trusted-types
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `csp-trusted-types`
- 说明: 用 CSP 和 Trusted Types 缩小前端执行面。
- 典型场景: 适用于高风险前端应用、管理端和需要限制脚本执行面的页面。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Angular
- Astro
- Nginx
- React
- Vue

查看文件

@@ -0,0 +1,33 @@
# dependency-upgrade-policy
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `dependency-upgrade-policy`
- 说明: 用自动化升级、锁版本和审查策略降低供应链风险。
- 典型场景: 适用于 lockfile、SBOM、CI 审查和供应链更新节奏治理。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Node.js
- Vite
- esbuild
- webpack

查看文件

@@ -0,0 +1,32 @@
# deserialization-safety
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `deserialization-safety`
- 说明: 避免对不可信数据做危险反序列化。
- 典型场景: 适用于缓存、任务队列、对象恢复和跨服务消息传递。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- GitLab CE
- Jenkins
- Spring Framework

查看文件

@@ -0,0 +1,30 @@
# dom-sink-hardening
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `dom-sink-hardening`
- 说明: 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- 典型场景: 适用于前端模板拼接、Markdown 渲染器和富文本预览逻辑。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- React

查看文件

@@ -0,0 +1,48 @@
# file-upload-validation
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `file-upload-validation`
- 说明: 校验文件类型、名称、存储位置和执行权限。
- 典型场景: 适用于媒体上传、插件安装、主题导入和日志附件接收。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adobe Commerce
- Directus
- Django
- Drupal
- Joomla
- Laravel
- Magento Open Source
- MediaWiki
- Moodle
- OpenCart
- PrestaShop
- Ruby on Rails
- Shopware
- Strapi
- Vite
- WordPress
- esbuild
- webpack

查看文件

@@ -0,0 +1,36 @@
# path-traversal-guard
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `path-traversal-guard`
- 说明: 标准化路径并限制访问根目录。
- 典型场景: 适用于下载、导入、附件预览和主题/模板读取路径。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Apache Tomcat
- Django
- Joomla
- Spring Framework
- Symfony
- phpMyAdmin

查看文件

@@ -0,0 +1,43 @@
# plugin-extension-trust-policy
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `plugin-extension-trust-policy`
- 说明: 限制第三方插件、模块和主题的信任边界。
- 典型场景: 适用于插件市场、主题仓库、第三方扩展和模块化系统。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Adobe Commerce
- Discourse
- Drupal
- Grafana
- Jenkins
- Joomla
- Magento Open Source
- OpenCart
- OpenMage / Mage-OS
- PrestaShop
- Redmine
- Shopware
- WooCommerce
- WordPress

查看文件

@@ -0,0 +1,49 @@
# proxy-trust-boundary
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `proxy-trust-boundary`
- 说明: 只信任明确代理并限制头部透传。
- 典型场景: 适用于真实 IP 透传、认证头转发和反向代理旁路风险。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Caddy
- Echo
- Express
- Fastify
- Gin
- Gitea
- HAProxy
- Hapi
- Kibana
- Koa
- Next.js
- Nginx
- Nuxt
- Spring Boot
- Spring Security
- Traefik
- Undici
- Vite
- Werkzeug

查看文件

@@ -0,0 +1,37 @@
# request-smuggling-boundary
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `request-smuggling-boundary`
- 说明: 统一代理层和应用层的请求边界解释。
- 典型场景: 适用于代理链、WAF、CDN 和应用服务器之间的请求解析边界。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Apache Tomcat
- Caddy
- HAProxy
- Nginx
- Node.js
- Traefik
- Werkzeug

查看文件

@@ -0,0 +1,36 @@
# ssrf-url-validation
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `ssrf-url-validation`
- 说明: 对 URL、协议、IP 和重定向做 allowlist 校验。
- 典型场景: 适用于 webhook、URL 导入、远程图片抓取和插件联动调用。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Express
- Fastify
- Flask
- Koa
- NestJS
- Node.js
- Undici

查看文件

@@ -0,0 +1,31 @@
# template-injection-guard
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `template-injection-guard`
- 说明: 模板上下文中禁用危险表达式执行。
- 典型场景: 适用于 SSR、模板引擎、邮件渲染和后台自定义视图。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Angular
- Vue

查看文件

@@ -0,0 +1,46 @@
# token-cookie-storage
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `token-cookie-storage`
- 说明: 避免把敏感令牌长期暴露在可读浏览器存储中。
- 典型场景: 适用于浏览器端会话、管理接口令牌和单页应用认证态。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Directus
- Echo
- Flask
- Ghost
- GitLab CE
- Gitea
- Hapi
- Mattermost
- Medusa
- NestJS
- Next.js
- Nuxt
- Saleor
- Spring Security
- Strapi
- SvelteKit
- WordPress

查看文件

@@ -0,0 +1,56 @@
# xss-output-encoding
> `LAB ONLY` | 修复主题页
- 语言: `java`
- 主题: `xss-output-encoding`
- 说明: 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- 典型场景: 适用于模板输出、服务端渲染片段和后台管理界面回显场景。
## 脆弱示例
```java
response.getWriter().write("<div>" + value + "</div>");
```
## 更安全的写法
```java
response.getWriter().write("<div>" + HtmlUtils.htmlEscape(value) + "</div>");
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adminer
- Adobe Commerce
- Angular
- Discourse
- Django
- Drupal
- Express
- Fastify
- Flask
- Ghost
- Gin
- Grafana
- Joomla
- Kibana
- Laravel
- Mattermost
- MediaWiki
- Moodle
- React
- Redmine
- Ruby on Rails
- Symfony
- Vue
- WooCommerce
- WordPress
- phpMyAdmin

查看文件

@@ -0,0 +1,20 @@
# javascript-typescript
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/javascript-typescript/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/javascript-typescript/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/javascript-typescript/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/javascript-typescript/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/javascript-typescript/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/javascript-typescript/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/javascript-typescript/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/javascript-typescript/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/javascript-typescript/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/javascript-typescript/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/javascript-typescript/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/javascript-typescript/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/javascript-typescript/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/javascript-typescript/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,20 @@
# javascript-typescript
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/javascript-typescript/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/javascript-typescript/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/javascript-typescript/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/javascript-typescript/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/javascript-typescript/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/javascript-typescript/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/javascript-typescript/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/javascript-typescript/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/javascript-typescript/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/javascript-typescript/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/javascript-typescript/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/javascript-typescript/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/javascript-typescript/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/javascript-typescript/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,67 @@
# authz-server-side-recheck
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `authz-server-side-recheck`
- 说明: 前置代理或 middleware 不能替代服务端最终鉴权。
- 典型场景: 适用于代理层放行、路由守卫和后端最终授权重新确认。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adminer
- Adobe Commerce
- Apache Tomcat
- Astro
- Directus
- Discourse
- Drupal
- Ghost
- GitLab CE
- Gitea
- Grafana
- Jenkins
- Kibana
- Laravel
- Magento Open Source
- Mattermost
- MediaWiki
- Medusa
- Moodle
- NestJS
- Next.js
- Nuxt
- OpenCart
- OpenMage / Mage-OS
- PrestaShop
- Redmine
- Ruby on Rails
- Saleor
- Shopware
- Spring Boot
- Spring Framework
- Spring Security
- Strapi
- SvelteKit
- Symfony
- WooCommerce
- phpMyAdmin

查看文件

@@ -0,0 +1,34 @@
# csp-trusted-types
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `csp-trusted-types`
- 说明: 用 CSP 和 Trusted Types 缩小前端执行面。
- 典型场景: 适用于高风险前端应用、管理端和需要限制脚本执行面的页面。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Angular
- Astro
- Nginx
- React
- Vue

查看文件

@@ -0,0 +1,33 @@
# dependency-upgrade-policy
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `dependency-upgrade-policy`
- 说明: 用自动化升级、锁版本和审查策略降低供应链风险。
- 典型场景: 适用于 lockfile、SBOM、CI 审查和供应链更新节奏治理。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Node.js
- Vite
- esbuild
- webpack

查看文件

@@ -0,0 +1,32 @@
# deserialization-safety
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `deserialization-safety`
- 说明: 避免对不可信数据做危险反序列化。
- 典型场景: 适用于缓存、任务队列、对象恢复和跨服务消息传递。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- GitLab CE
- Jenkins
- Spring Framework

查看文件

@@ -0,0 +1,30 @@
# dom-sink-hardening
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `dom-sink-hardening`
- 说明: 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- 典型场景: 适用于前端模板拼接、Markdown 渲染器和富文本预览逻辑。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- React

查看文件

@@ -0,0 +1,48 @@
# file-upload-validation
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `file-upload-validation`
- 说明: 校验文件类型、名称、存储位置和执行权限。
- 典型场景: 适用于媒体上传、插件安装、主题导入和日志附件接收。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adobe Commerce
- Directus
- Django
- Drupal
- Joomla
- Laravel
- Magento Open Source
- MediaWiki
- Moodle
- OpenCart
- PrestaShop
- Ruby on Rails
- Shopware
- Strapi
- Vite
- WordPress
- esbuild
- webpack

查看文件

@@ -0,0 +1,36 @@
# path-traversal-guard
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `path-traversal-guard`
- 说明: 标准化路径并限制访问根目录。
- 典型场景: 适用于下载、导入、附件预览和主题/模板读取路径。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Apache Tomcat
- Django
- Joomla
- Spring Framework
- Symfony
- phpMyAdmin

查看文件

@@ -0,0 +1,43 @@
# plugin-extension-trust-policy
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `plugin-extension-trust-policy`
- 说明: 限制第三方插件、模块和主题的信任边界。
- 典型场景: 适用于插件市场、主题仓库、第三方扩展和模块化系统。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Adobe Commerce
- Discourse
- Drupal
- Grafana
- Jenkins
- Joomla
- Magento Open Source
- OpenCart
- OpenMage / Mage-OS
- PrestaShop
- Redmine
- Shopware
- WooCommerce
- WordPress

查看文件

@@ -0,0 +1,49 @@
# proxy-trust-boundary
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `proxy-trust-boundary`
- 说明: 只信任明确代理并限制头部透传。
- 典型场景: 适用于真实 IP 透传、认证头转发和反向代理旁路风险。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Caddy
- Echo
- Express
- Fastify
- Gin
- Gitea
- HAProxy
- Hapi
- Kibana
- Koa
- Next.js
- Nginx
- Nuxt
- Spring Boot
- Spring Security
- Traefik
- Undici
- Vite
- Werkzeug

查看文件

@@ -0,0 +1,37 @@
# request-smuggling-boundary
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `request-smuggling-boundary`
- 说明: 统一代理层和应用层的请求边界解释。
- 典型场景: 适用于代理链、WAF、CDN 和应用服务器之间的请求解析边界。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Apache HTTP Server
- Apache Tomcat
- Caddy
- HAProxy
- Nginx
- Node.js
- Traefik
- Werkzeug

查看文件

@@ -0,0 +1,36 @@
# ssrf-url-validation
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `ssrf-url-validation`
- 说明: 对 URL、协议、IP 和重定向做 allowlist 校验。
- 典型场景: 适用于 webhook、URL 导入、远程图片抓取和插件联动调用。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Express
- Fastify
- Flask
- Koa
- NestJS
- Node.js
- Undici

查看文件

@@ -0,0 +1,31 @@
# template-injection-guard
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `template-injection-guard`
- 说明: 模板上下文中禁用危险表达式执行。
- 典型场景: 适用于 SSR、模板引擎、邮件渲染和后台自定义视图。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Angular
- Vue

查看文件

@@ -0,0 +1,46 @@
# token-cookie-storage
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `token-cookie-storage`
- 说明: 避免把敏感令牌长期暴露在可读浏览器存储中。
- 典型场景: 适用于浏览器端会话、管理接口令牌和单页应用认证态。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- Directus
- Echo
- Flask
- Ghost
- GitLab CE
- Gitea
- Hapi
- Mattermost
- Medusa
- NestJS
- Next.js
- Nuxt
- Saleor
- Spring Security
- Strapi
- SvelteKit
- WordPress

查看文件

@@ -0,0 +1,56 @@
# xss-output-encoding
> `LAB ONLY` | 修复主题页
- 语言: `javascript-typescript`
- 主题: `xss-output-encoding`
- 说明: 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- 典型场景: 适用于模板输出、服务端渲染片段和后台管理界面回显场景。
## 脆弱示例
```ts
const output = `<div>${userInput}</div>`;
```
## 更安全的写法
```ts
const output = `<div>${escapeHtml(userInput)}</div>`;
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adminer
- Adobe Commerce
- Angular
- Discourse
- Django
- Drupal
- Express
- Fastify
- Flask
- Ghost
- Gin
- Grafana
- Joomla
- Kibana
- Laravel
- Mattermost
- MediaWiki
- Moodle
- React
- Redmine
- Ruby on Rails
- Symfony
- Vue
- WooCommerce
- WordPress
- phpMyAdmin

查看文件

@@ -0,0 +1,20 @@
# nodejs
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/nodejs/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/nodejs/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/nodejs/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/nodejs/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/nodejs/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/nodejs/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/nodejs/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/nodejs/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/nodejs/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/nodejs/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/nodejs/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/nodejs/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/nodejs/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/nodejs/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,20 @@
# nodejs
> 自动生成修复主题索引
- 语境: 授权攻防实验后的修复映射,不作为生产默认推荐模版。
- [xss-output-encoding](/Users/x/websafe/05-defense/secure-code/nodejs/xss-output-encoding.md) - 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
- [dom-sink-hardening](/Users/x/websafe/05-defense/secure-code/nodejs/dom-sink-hardening.md) - 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
- [csp-trusted-types](/Users/x/websafe/05-defense/secure-code/nodejs/csp-trusted-types.md) - 用 CSP 和 Trusted Types 缩小前端执行面。
- [token-cookie-storage](/Users/x/websafe/05-defense/secure-code/nodejs/token-cookie-storage.md) - 避免把敏感令牌长期暴露在可读浏览器存储中。
- [authz-server-side-recheck](/Users/x/websafe/05-defense/secure-code/nodejs/authz-server-side-recheck.md) - 前置代理或 middleware 不能替代服务端最终鉴权。
- [ssrf-url-validation](/Users/x/websafe/05-defense/secure-code/nodejs/ssrf-url-validation.md) - 对 URL、协议、IP 和重定向做 allowlist 校验。
- [request-smuggling-boundary](/Users/x/websafe/05-defense/secure-code/nodejs/request-smuggling-boundary.md) - 统一代理层和应用层的请求边界解释。
- [path-traversal-guard](/Users/x/websafe/05-defense/secure-code/nodejs/path-traversal-guard.md) - 标准化路径并限制访问根目录。
- [file-upload-validation](/Users/x/websafe/05-defense/secure-code/nodejs/file-upload-validation.md) - 校验文件类型、名称、存储位置和执行权限。
- [plugin-extension-trust-policy](/Users/x/websafe/05-defense/secure-code/nodejs/plugin-extension-trust-policy.md) - 限制第三方插件、模块和主题的信任边界。
- [dependency-upgrade-policy](/Users/x/websafe/05-defense/secure-code/nodejs/dependency-upgrade-policy.md) - 用自动化升级、锁版本和审查策略降低供应链风险。
- [proxy-trust-boundary](/Users/x/websafe/05-defense/secure-code/nodejs/proxy-trust-boundary.md) - 只信任明确代理并限制头部透传。
- [deserialization-safety](/Users/x/websafe/05-defense/secure-code/nodejs/deserialization-safety.md) - 避免对不可信数据做危险反序列化。
- [template-injection-guard](/Users/x/websafe/05-defense/secure-code/nodejs/template-injection-guard.md) - 模板上下文中禁用危险表达式执行。

查看文件

@@ -0,0 +1,67 @@
# authz-server-side-recheck
> `LAB ONLY` | 修复主题页
- 语言: `nodejs`
- 主题: `authz-server-side-recheck`
- 说明: 前置代理或 middleware 不能替代服务端最终鉴权。
- 典型场景: 适用于代理层放行、路由守卫和后端最终授权重新确认。
## 脆弱示例
```js
res.send(`<div>${req.query.q}</div>`);
```
## 更安全的写法
```js
res.send(`<div>${escapeHtml(req.query.q)}</div>`);
```
## 检查清单
- 明确输入边界与不可信来源
- 在服务端或可信封装层统一做校验/转义/约束
- 对关键路径补充自动化测试和依赖升级策略
## 相关系统
- ASP.NET Core
- Adminer
- Adobe Commerce
- Apache Tomcat
- Astro
- Directus
- Discourse
- Drupal
- Ghost
- GitLab CE
- Gitea
- Grafana
- Jenkins
- Kibana
- Laravel
- Magento Open Source
- Mattermost
- MediaWiki
- Medusa
- Moodle
- NestJS
- Next.js
- Nuxt
- OpenCart
- OpenMage / Mage-OS
- PrestaShop
- Redmine
- Ruby on Rails
- Saleor
- Shopware
- Spring Boot
- Spring Framework
- Spring Security
- Strapi
- SvelteKit
- Symfony
- WooCommerce
- phpMyAdmin

某些文件未显示,因为此 diff 中更改的文件太多 显示更多