Cybersecurity-Projects/PROJECTS/intermediate/dlp-scanner/src/dlp_scanner/constants.py

172 lines
3.8 KiB
Python

"""
©AngelaMos | 2026
constants.py
"""
from typing import Literal
Severity = Literal["critical", "high", "medium", "low"]
OutputFormat = Literal["console", "json", "sarif", "csv"]
RedactionStyle = Literal["partial", "full", "none"]
ScanTargetType = Literal["file", "database", "network"]
SEVERITY_ORDER: dict[Severity,
int] = {
"critical": 0,
"high": 1,
"medium": 2,
"low": 3,
}
SEVERITY_SCORE_THRESHOLDS: list[tuple[float,
Severity]] = [
(0.85,
"critical"),
(0.65,
"high"),
(0.40,
"medium"),
(0.20,
"low"),
]
COMPLIANCE_FRAMEWORKS: list[str] = [
"HIPAA",
"PCI_DSS",
"GDPR",
"CCPA",
"SOX",
"GLBA",
"FERPA",
]
DEFAULT_CONTEXT_WINDOW_TOKENS: int = 10
DEFAULT_MIN_CONFIDENCE: float = 0.20
DEFAULT_ENTROPY_THRESHOLD: float = 7.2
DEFAULT_DNS_ENTROPY_THRESHOLD: float = 4.0
DEFAULT_MAX_FILE_SIZE_MB: int = 100
DEFAULT_DB_SAMPLE_PERCENTAGE: int = 5
DEFAULT_DB_MAX_ROWS: int = 10000
DEFAULT_DB_TIMEOUT_SECONDS: int = 30
CHECKSUM_BOOST: float = 0.30
CONTEXT_BOOST_MAX: float = 0.35
CONTEXT_BOOST_MIN_FLOOR: float = 0.40
COOCCURRENCE_BOOST: float = 0.15
KNOWN_TEST_VALUES: frozenset[str] = frozenset(
{
"123-45-6789",
"000-00-0000",
"078-05-1120",
"219-09-9999",
"4111111111111111",
"5500000000000004",
"340000000000009",
"6011000000000004",
"test@example.com",
"user@test.com",
}
)
DEFAULT_EXCLUDE_PATTERNS: list[str] = [
"*.pyc",
"__pycache__",
".git",
"node_modules",
".venv",
".env",
"*.egg-info",
]
SCANNABLE_EXTENSIONS: frozenset[str] = frozenset(
{
".pdf",
".docx",
".xlsx",
".xls",
".csv",
".json",
".xml",
".yaml",
".yml",
".txt",
".log",
".cfg",
".ini",
".toml",
".conf",
".eml",
".msg",
".parquet",
".avro",
".md",
".rst",
".html",
".htm",
".tsv",
".py",
".js",
".ts",
".go",
".rb",
".java",
".c",
".cpp",
".h",
".hpp",
".rs",
".env",
".sh",
".bat",
".ps1",
".tf",
".hcl",
}
)
TEXT_DB_COLUMN_TYPES_PG: frozenset[str] = frozenset(
{
"text",
"character varying",
"character",
"json",
"jsonb",
"varchar",
}
)
TEXT_DB_COLUMN_TYPES_MYSQL: frozenset[str] = frozenset(
{
"varchar",
"text",
"mediumtext",
"longtext",
"json",
"char",
"tinytext",
}
)
SEVERITY_COLORS: dict[Severity,
str] = {
"critical": "bold red",
"high": "red",
"medium": "yellow",
"low": "green",
}
SARIF_SEVERITY_MAP: dict[Severity,
str] = {
"critical": "error",
"high": "error",
"medium": "warning",
"low": "note",
}
MAX_ARCHIVE_DEPTH: int = 3
MAX_ARCHIVE_MEMBER_SIZE_MB: int = 50
ZIP_BOMB_RATIO_THRESHOLD: int = 100