Files
progcode/web/public/assets/editorial/2020/security-baseline-asset-threat-control-2020.svg
T
huncode 41c3aca967
Build and deploy / deploy (push) Successful in 15s
revise November 2020 security articles
2026-07-31 11:59:30 +03:00

56 lines
4.0 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1528" role="img" aria-labelledby="title desc">
<title id="title">Учебная матрица минимальной защиты веб-приложения</title>
<desc id="desc">Вертикальная схема связывает четыре актива учебной админки с угрозой, контролем и наблюдаемым доказательством. Это не отчёт о реальном приложении.</desc>
<style>
.title { fill: #f8fafc; font-family: Arial, sans-serif; font-size: 34px; font-weight: 700; }
.subtitle { fill: #cbd5e1; font-family: Arial, sans-serif; font-size: 22px; }
.label { fill: #475569; font-family: Arial, sans-serif; font-size: 20px; font-weight: 700; letter-spacing: 1px; }
.body { fill: #0f172a; font-family: Arial, sans-serif; font-size: 24px; font-weight: 600; }
.small { fill: #334155; font-family: Arial, sans-serif; font-size: 21px; }
.step { fill: #ffffff; font-family: Arial, sans-serif; font-size: 22px; font-weight: 700; text-anchor: middle; }
</style>
<rect width="720" height="1528" fill="#f8fafc"/>
<rect x="0" y="0" width="720" height="198" fill="#0f172a"/>
<text x="48" y="70" class="title">Минимальный baseline</text>
<text x="48" y="112" class="title">актив → угроза → контроль → evidence</text>
<text x="48" y="156" class="subtitle">Учебная админка, ноябрь 2020</text>
<rect x="48" y="232" width="624" height="70" rx="14" fill="#e2e8f0"/>
<circle cx="82" cy="267" r="20" fill="#2563eb"/>
<text x="82" y="275" class="step">1</text>
<text x="120" y="275" class="label">АКТИВ: ИЗМЕНЕНИЕ ПРОФИЛЯ</text>
<rect x="48" y="320" width="624" height="116" rx="16" fill="#dbeafe"/>
<text x="76" y="360" class="body">Угроза: post приходит не из</text>
<text x="76" y="392" class="body">ожидаемого контекста формы</text>
<rect x="48" y="452" width="624" height="116" rx="16" fill="#dcfce7"/>
<text x="76" y="492" class="body">Контроль: origin + CSRF token</text>
<text x="76" y="524" class="body">до server-side update</text>
<rect x="48" y="584" width="624" height="92" rx="16" fill="#fef3c7"/>
<text x="76" y="625" class="body">Evidence: foreign origin → 403</text>
<text x="76" y="655" class="small">в учебной fixture</text>
<rect x="48" y="710" width="624" height="70" rx="14" fill="#e2e8f0"/>
<circle cx="82" cy="745" r="20" fill="#2563eb"/>
<text x="82" y="753" class="step">2</text>
<text x="120" y="753" class="label">АКТИВ: СЕССИЯ АДМИНИСТРАТОРА</text>
<rect x="48" y="798" width="624" height="102" rx="16" fill="#dbeafe"/>
<text x="76" y="838" class="body">Угроза: cookie доступен script</text>
<text x="76" y="870" class="body">или не привязан к HTTPS-сценарию</text>
<rect x="48" y="916" width="624" height="102" rx="16" fill="#dcfce7"/>
<text x="76" y="956" class="body">Контроль: Secure + HttpOnly</text>
<text x="76" y="988" class="body">и узкий Path=/admin</text>
<rect x="48" y="1034" width="624" height="82" rx="16" fill="#fef3c7"/>
<text x="76" y="1084" class="body">Evidence: Set-Cookie contract</text>
<rect x="48" y="1150" width="624" height="70" rx="14" fill="#e2e8f0"/>
<circle cx="82" cy="1185" r="20" fill="#2563eb"/>
<text x="82" y="1193" class="step">3</text>
<text x="120" y="1193" class="label">АКТИВ: РАЗМЕТКА ADMIN PAGE</text>
<rect x="48" y="1238" width="624" height="70" rx="16" fill="#dbeafe"/>
<text x="76" y="1282" class="body">Угроза: неожиданный content</text>
<rect x="48" y="1322" width="624" height="70" rx="16" fill="#dcfce7"/>
<text x="76" y="1366" class="body">Контроль: encoding + CSP policy</text>
<rect x="48" y="1406" width="624" height="82" rx="16" fill="#fef3c7"/>
<text x="76" y="1456" class="body">Evidence: CSP response contract</text>
</svg>