Files
progcode/web/public/assets/editorial/2020/security-baseline-diagnosis-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

64 lines
4.4 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1500" role="img" aria-labelledby="title desc">
<title id="title">Диагностика учебного security baseline</title>
<desc id="desc">Вертикальная схема показывает для четырёх симптомов причину, безопасную проверку и действие: foreign origin, пустой token, недостаточное permission и неполный ответный контракт.</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; }
.title2 { fill: #f8fafc; font-family: Arial, sans-serif; font-size: 30px; font-weight: 700; }
.symptom { fill: #991b1b; font-family: Arial, sans-serif; font-size: 25px; font-weight: 700; }
.label { fill: #475569; font-family: Arial, sans-serif; font-size: 19px; font-weight: 700; letter-spacing: 1px; }
.body { fill: #0f172a; font-family: Arial, sans-serif; font-size: 22px; font-weight: 600; }
.action { fill: #166534; font-family: Arial, sans-serif; font-size: 22px; font-weight: 700; }
.num { fill: #ffffff; font-family: Arial, sans-serif; font-size: 21px; font-weight: 700; text-anchor: middle; }
</style>
<rect width="720" height="1500" fill="#f8fafc"/>
<rect x="0" y="0" width="720" height="190" fill="#0f172a"/>
<text x="48" y="70" class="title">Диагностика без сканера</text>
<text x="48" y="112" class="title2">симптом → причина → проверка → действие</text>
<text x="48" y="156" class="subtitle">Учебные request objects в памяти</text>
<rect x="48" y="226" width="624" height="268" rx="18" fill="#fff1f2"/>
<circle cx="84" cy="264" r="20" fill="#dc2626"/>
<text x="84" y="272" class="num">1</text>
<text x="122" y="270" class="symptom">Foreign origin проходит</text>
<text x="76" y="316" class="label">ПРИЧИНА</text>
<text x="76" y="348" class="body">origin gate отсутствует или поздно</text>
<text x="76" y="388" class="label">ПРОВЕРКА</text>
<text x="76" y="420" class="body">other.example.test должен дать 403</text>
<text x="76" y="460" class="label">ДЕЙСТВИЕ</text>
<text x="76" y="492" class="action">вернуть gate до update</text>
<rect x="48" y="528" width="624" height="268" rx="18" fill="#fff7ed"/>
<circle cx="84" cy="566" r="20" fill="#ea580c"/>
<text x="84" y="574" class="num">2</text>
<text x="122" y="572" class="symptom">Пустой token проходит</text>
<text x="76" y="618" class="label">ПРИЧИНА</text>
<text x="76" y="650" class="body">form field не связан с controller</text>
<text x="76" y="690" class="label">ПРОВЕРКА</text>
<text x="76" y="722" class="body">пустая строка должна дать 403</text>
<text x="76" y="762" class="label">ДЕЙСТВИЕ</text>
<text x="76" y="794" class="action">сравнить token до effect</text>
<rect x="48" y="830" width="624" height="268" rx="18" fill="#fefce8"/>
<circle cx="84" cy="868" r="20" fill="#ca8a04"/>
<text x="84" y="876" class="num">3</text>
<text x="122" y="874" class="symptom">Read-роль меняет профиль</text>
<text x="76" y="920" class="label">ПРИЧИНА</text>
<text x="76" y="952" class="body">session ошибочно заменяет permission</text>
<text x="76" y="992" class="label">ПРОВЕРКА</text>
<text x="76" y="1024" class="body">profile:read должен дать 403</text>
<text x="76" y="1064" class="label">ДЕЙСТВИЕ</text>
<text x="76" y="1096" class="action">поставить profile:write gate</text>
<rect x="48" y="1132" width="624" height="298" rx="18" fill="#ecfdf5"/>
<circle cx="84" cy="1170" r="20" fill="#16a34a"/>
<text x="84" y="1178" class="num">4</text>
<text x="122" y="1176" class="symptom">Response contract неполон</text>
<text x="76" y="1222" class="label">ПРИЧИНА</text>
<text x="76" y="1254" class="body">policy не привязана к route</text>
<text x="76" y="1294" class="label">ПРОВЕРКА</text>
<text x="76" y="1326" class="body">CSP и Set-Cookie есть в карте</text>
<text x="76" y="1366" class="label">ДЕЙСТВИЕ</text>
<text x="76" y="1398" class="action">сверить server version на стенде</text>
</svg>