Files
progcode/web/public/assets/editorial/2027/security-capstone-2027-attack-path-contract.svg
T
2026-07-31 22:26:56 +03:00

18 lines
2.5 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" width="750" height="500" viewBox="0 0 750 500" role="img" aria-labelledby="title desc">
<title id="title">Проверка URL до сети</title>
<desc id="desc">URL проходит parse, схему, hostname, порт и egress-контроль до вызова клиента.</desc>
<rect width="750" height="500" rx="24" fill="#f8fafc"/>
<text x="38" y="50" font-family="Arial,sans-serif" font-size="26" font-weight="700" fill="#172033">URL не должен сразу стать fetch</text>
<g font-family="Arial,sans-serif">
<rect x="38" y="120" width="120" height="120" rx="16" fill="#e0f2fe" stroke="#0284c7" stroke-width="3"/><text x="98" y="168" text-anchor="middle" font-size="22" font-weight="700" fill="#075985">parse</text><text x="98" y="202" text-anchor="middle" font-size="18" fill="#0c4a6e">URL</text>
<path d="M170 180h30" stroke="#475569" stroke-width="4"/><path d="m200 180-12-8v16z" fill="#475569"/>
<rect x="212" y="120" width="120" height="120" rx="16" fill="#ede9fe" stroke="#7c3aed" stroke-width="3"/><text x="272" y="168" text-anchor="middle" font-size="22" font-weight="700" fill="#5b21b6">scheme</text><text x="272" y="202" text-anchor="middle" font-size="18" fill="#4c1d95">https</text>
<path d="M344 180h30" stroke="#475569" stroke-width="4"/><path d="m374 180-12-8v16z" fill="#475569"/>
<rect x="386" y="120" width="120" height="120" rx="16" fill="#fef3c7" stroke="#d97706" stroke-width="3"/><text x="446" y="168" text-anchor="middle" font-size="22" font-weight="700" fill="#92400e">host</text><text x="446" y="202" text-anchor="middle" font-size="18" fill="#78350f">allowlist</text>
<path d="M518 180h30" stroke="#475569" stroke-width="4"/><path d="m548 180-12-8v16z" fill="#475569"/>
<rect x="560" y="120" width="150" height="120" rx="16" fill="#dcfce7" stroke="#16a34a" stroke-width="3"/><text x="635" y="168" text-anchor="middle" font-size="22" font-weight="700" fill="#166534">egress</text><text x="635" y="202" text-anchor="middle" font-size="18" fill="#14532d">fetch</text>
<rect x="100" y="320" width="550" height="78" rx="15" fill="#fee2e2" stroke="#dc2626" stroke-width="3"/><text x="375" y="368" text-anchor="middle" font-size="22" font-weight="700" fill="#991b1b">redirect и новый host → повторить проверки</text>
</g>
<text x="38" y="455" font-family="Arial,sans-serif" font-size="20" fill="#475569">Credentials и неожиданный порт останавливают путь.</text>
</svg>