64 lines
4.4 KiB
XML
64 lines
4.4 KiB
XML
<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>
|