{"id":503152,"date":"2026-11-13T19:43:27","date_gmt":"2026-11-13T16:43:27","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=503152"},"modified":"2026-11-13T19:43:27","modified_gmt":"2026-11-13T16:43:27","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=503152","title":{"rendered":"\u041a\u0430\u043a \u043c\u043e\u0439 \u0441\u0430\u0439\u0442 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0431\u043e\u0442\u043e\u0432, \u043d\u0435 \u0445\u0440\u0430\u043d\u044f \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e IP: \u0447\u0438\u0441\u0442\u044b\u0439 PHP \u0431\u0435\u0437 \u0431\u0430\u0437\u044b, \u0441\u0442\u0440\u043e\u0433\u0430\u044f CSP \u0438 160 \u0442\u0435\u0441\u0442\u043e\u0432"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/articles\/1106744\/\" rel=\"noopener nofollow\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043f\u0440\u043e SSH-\u043b\u043e\u0432\u0443\u0448\u043a\u0443 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0441\u043f\u0440\u043e\u0441\u0438\u043b\u0438: \u0430 \u0447\u0442\u043e \u0437\u0430 \u0441\u0430\u0439\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u0442\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d. \u041e\u0442\u0432\u0435\u0447\u0430\u044e. \u042d\u0442\u043e \u043d\u0435 \u043e\u0431\u0437\u043e\u0440 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432, \u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439: \u0447\u0442\u043e \u0432\u044b\u0431\u0440\u0430\u043b, \u0432\u043e \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c \u0438 \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u0441\u044f. \u0410 \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u043a\u0430\u043a \u0441\u0430\u0439\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u0451\u043b \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0431\u043e\u0442, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b.<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0446\u0438\u0444\u0440 \u0434\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 \u2014 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026, \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 243 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0438 \u043e\u043a\u043e\u043b\u043e 22 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a PHP, JS \u0438 CSS, \u043f\u043b\u044e\u0441 5 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430 Bash \u0438 Python. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043d\u043e\u043b\u044c: \u043d\u0438 Composer, \u043d\u0438 npm, \u043d\u0438 CDN. \u0421\u0430\u0439\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u043d\u043e\u043b\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0447\u0443\u0436\u0438\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c \u2014 \u0448\u0440\u0438\u0444\u0442\u044b \u043b\u0435\u0436\u0430\u0442 \u0440\u044f\u0434\u043e\u043c.<\/p>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0438 \u0431\u0435\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u044b\u043c \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u044b\u043c. \u0421\u0430\u0439\u0442 \u2014 \u043b\u0438\u0447\u043d\u044b\u0439, \u043f\u0438\u0448\u0435\u0442 \u0432 \u043d\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0447\u0438\u0442\u0430\u044e\u0442 \u0432\u0441\u0435. \u0417\u0430\u043f\u0438\u0441\u0435\u0439 \u2014 \u0441\u043e\u0442\u043d\u0438, \u043d\u0435 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b. \u041f\u043e\u0434 \u0442\u0430\u043a\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u0451\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u043e\u0432\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u043b\u043e\u043c\u0430\u0442\u044c\u0441\u044f: \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0431\u044d\u043a\u0430\u043f\u044b \u0434\u0430\u043c\u043f\u043e\u043c, \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438, \u0443\u0447\u0451\u0442\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u0433\u0434\u0435-\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u2014 \u043e\u0434\u0438\u043d JSON-\u0444\u0430\u0439\u043b. \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"php\">function data_save(array $data): void{    $json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);    if (is_file(DATA_FILE) &amp;&amp; file_get_contents(DATA_FILE) === $json) {        return;                                   \/\/ \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u2014 \u043a\u043e\u043f\u0438\u044e \u043d\u0435 \u043f\u043b\u043e\u0434\u0438\u043c    }    backup_create();                              \/\/ \u043f\u0440\u0435\u0436\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 data\/backups\/, \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f 20 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445    $tmp = DATA_FILE . '.' . new_id() . '.tmp';    file_put_contents($tmp, $json, LOCK_EX);    rename($tmp, DATA_FILE);                      \/\/ \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430: \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u043b\u0438\u0431\u043e \u0441\u0442\u0430\u0440\u044b\u0439 \u0444\u0430\u0439\u043b, \u043b\u0438\u0431\u043e \u043d\u043e\u0432\u044b\u0439}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0417\u0430\u043f\u0438\u0441\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438 <code>rename()<\/code> \u2014 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442 \u00ab\u0431\u0430\u0437\u044b\u00bb \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u0441\u0430\u0439\u0442\u0435: \u0444\u0430\u0439\u043b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c. \u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0436\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u043b\u0430\u0434\u0451\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u043a\u0430\u0442 \u2014 \u044d\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430. \u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u0430\u0439\u0442\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u2014 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438.<\/p>\n<p>\u0426\u0435\u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u041d\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/strong> \u041f\u043e\u0438\u0441\u043a, \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u2014 \u0432\u0441\u0451 \u0440\u0443\u043a\u0430\u043c\u0438, \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u0430 \u0441\u043e\u0442\u043d\u044f\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u044d\u0442\u043e \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u043d\u0430 \u0441\u043e\u0442\u043d\u044f\u0445 \u0442\u044b\u0441\u044f\u0447 \u0431\u044b\u043b\u043e \u0431\u044b \u0431\u043e\u043b\u044c\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c.<\/strong> \u0422\u0430\u043c, \u0433\u0434\u0435 \u043f\u0438\u0448\u0443\u0442 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0432\u043e\u0434\u043a\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 CSP, \u043e \u043d\u0435\u0439 \u043d\u0438\u0436\u0435), \u043d\u0443\u0436\u0435\u043d <code>flock()<\/code> \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440, \u0438\u043d\u0430\u0447\u0435 \u043b\u044e\u0431\u043e\u0439 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0443\u0435\u0442 \u0444\u0430\u0439\u043b \u043c\u0443\u0441\u043e\u0440\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0435\u0442 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u2014 \u043d\u0435\u0442 \u0438 \u0435\u0433\u043e \u0437\u0430\u0449\u0438\u0442\u044b.<\/strong> \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, CSRF, \u0441\u0435\u0441\u0441\u0438\u0438, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432\u0445\u043e\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443. \u042d\u0442\u043e \u0436\u0435 \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0442\u0430\u043a\u0443\u044e\u0442 \u0441\u0430\u0439\u0442 (\u043e \u043d\u0438\u0445 \u0434\u0430\u043b\u044c\u0448\u0435).<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u044f \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u043e \u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435: \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043e\u043a\u043e\u043b\u043e \u0441\u043e\u0440\u043e\u043a\u0430, \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u044d\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u0440\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0437\u0430\u043a\u0440\u044b\u043b \u0431\u044b \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0431\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c.<\/p>\n<h3>\u0421\u0442\u0440\u043e\u0433\u0430\u044f CSP: \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c<\/h3>\n<p>\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0443 \u0441\u0430\u0439\u0442\u0430 \u0442\u0430\u043a\u0430\u044f:<\/p>\n<pre><code class=\"php\">$csp = \"default-src 'self'; \"    . \"script-src 'self' 'nonce-$nonce'; \"    . \"style-src 'self'; font-src 'self'; \"    . \"img-src 'self' data:; connect-src 'self'; object-src 'none'; \"    . \"base-uri 'self'; form-action 'self'; frame-ancestors 'none'\";<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442\u044b \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0441 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u043c <code>nonce<\/code> (16 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0431\u0430\u0439\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442). \u0421\u0442\u0438\u043b\u0438 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b, \u0431\u0435\u0437 <code>'unsafe-inline'<\/code>. \u0417\u0432\u0443\u0447\u0438\u0442 \u043a\u0430\u043a \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435, \u0430 \u043d\u0430 \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u0440\u043e\u0438\u043b\u043e \u0432\u0451\u0440\u0441\u0442\u043a\u0443.<\/p>\n<p><code><strong>style=\"\"<\/strong><\/code><strong> \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d.<\/strong> \u042d\u0442\u043e \u0431\u043e\u043b\u044c\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e. \u041a\u043e\u0433\u0434\u0430 \u0443 \u0442\u0435\u0431\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u043f\u043e\u043b\u043e\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0442\u0435\u043f\u043b\u043e\u0432\u044b\u0435 \u043a\u0430\u0440\u0442\u044b, \u043f\u0435\u0440\u0432\u0430\u044f \u043c\u044b\u0441\u043b\u044c \u2014 <code>style=\"width: 37%\"<\/code>. \u041f\u043e\u0434 \u0442\u0430\u043a\u043e\u0439 CSP \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u044d\u0442\u043e \u043c\u043e\u043b\u0447\u0430 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442. \u0427\u0442\u043e \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e:<\/p>\n<ul>\n<li>\n<p>\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u043f\u043e\u043b\u043e\u0441\u044b \u0440\u0438\u0441\u0443\u044e\u0442\u0441\u044f \u0432 SVG, \u0433\u0434\u0435 \u0448\u0438\u0440\u0438\u043d\u0430 \u0438 \u0432\u044b\u0441\u043e\u0442\u0430 \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b <code>&lt;rect width=\"\u2026\"&gt;<\/code>, \u0430 \u043d\u0435 \u0441\u0442\u0438\u043b\u044c;<\/p>\n<\/li>\n<li>\n<p>\u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u0435\u0442\u0443, JS \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 CSSOM (<a href=\"http:\/\/el.style\" rel=\"noopener nofollow\"><code>el.style<\/code><\/a><code>.setProperty('--glitch-delay', '0s')<\/code>) \u2014 \u044d\u0442\u043e CSP \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442, \u0437\u0430\u043f\u0440\u0435\u0442 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 \u043a\u043b\u0430\u0441\u0441\u044b.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041d\u0438\u043a\u0430\u043a\u0438\u0445 <\/strong><code><strong>onclick<\/strong><\/code><strong>.<\/strong> \u0422\u043e\u043b\u044c\u043a\u043e <code>addEventListener<\/code> \u0432 \u0441\u0432\u043e\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445.<\/p>\n<p><strong>\u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432<\/strong> \u2014 \u043d\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 <code>&lt;script&gt;<\/code>, \u0430 <code>&lt;script type=\"application\/json\"&gt;<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>JSON.parse<\/code>. \u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u043b\u043e\u0432\u0443\u0448\u043a\u0430: \u0435\u0441\u043b\u0438 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0441\u044f <code>&lt;\/script&gt;<\/code>, \u0442\u0435\u0433 \u0437\u0430\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041d\u0430 \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u0441\u0442.<\/p>\n<p><strong>\u0420\u0430\u043d\u043d\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.<\/strong> \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0438 \u043d\u043e\u0447\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0434\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438, \u0438\u043d\u0430\u0447\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430 \u0434\u043e\u043b\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043c\u0438\u0433\u043d\u0451\u0442 \u043d\u0435 \u0442\u043e\u0439 \u0442\u0435\u043c\u043e\u0439. \u042d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0445 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u0438 \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 <code>nonce<\/code>.<\/p>\n<p>\u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u043b\u043e\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0441\u044f\u0446, \u043a\u043e\u0433\u0434\u0430 \u044f \u0437\u0430\u0431\u0443\u0434\u0443 \u0438 \u043d\u0430\u043f\u0438\u0448\u0443 <code>style=<\/code> \u0432 \u043d\u043e\u0432\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435, \u2014 \u0442\u0435\u0441\u0442:<\/p>\n<pre><code class=\"php\">test('CSP: nonce \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u043e\u0432\u044b\u0439, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0431\u0435\u0437 nonce \u0438 style=\"\" \u043d\u0435\u0442', function () use ($hdr) {    [, $h1, $html] = http('GET', '\/');    [, $h2] = http('GET', '\/');    preg_match(\"\/'nonce-([^']+)'\/\", $hdr($h1, 'content-security-policy'), $m1);    preg_match(\"\/'nonce-([^']+)'\/\", $hdr($h2, 'content-security-policy'), $m2);    check(($m1[1] ?? '') !== '' &amp;&amp; $m1[1] !== ($m2[1] ?? ''), 'nonce \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f');    preg_match_all('\/&lt;script\\b[^&gt;]*&gt;\/i', $html, $tags);    foreach ($tags[0] as $tag) {        check(str_contains($tag, 'src=') || str_contains($tag, 'nonce=\"' . $m1[1] . '\"')            || str_contains($tag, 'application\/json') || str_contains($tag, 'application\/ld+json'), \"\u0441\u043a\u0440\u0438\u043f\u0442 \u0431\u0435\u0437 nonce: $tag\");    }    check(!preg_match('\/\\sstyle\\s*=\/i', $html), '\u0435\u0441\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 style=\"\"');});<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0449\u0451 \u0438 \u043e\u0442\u0447\u0451\u0442\u044b \u043e \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f\u0445 (<code>report-uri<\/code> \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432, <code>report-to<\/code> \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445). \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a: \u0437\u0430\u0431\u044b\u0442\u044b\u0439 <code>nonce<\/code> \u0432 \u043d\u043e\u0432\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u0432 \u0441\u0432\u043e\u0434\u043a\u0435 \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u044f \u0435\u0433\u043e \u0437\u0430\u043c\u0435\u0447\u0443 \u0433\u043b\u0430\u0437\u0430\u043c\u0438. \u0425\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0434\u043a\u0430 \u2014 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430, \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0431\u0435\u0437 \u043f\u0443\u0442\u0438, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0441\u0447\u0451\u0442\u0447\u0438\u043a. \u041d\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043d\u0438 User-Agent. \u041e\u0442\u0447\u0451\u0442\u044b \u043e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (<code>chrome-extension:\/\/\u2026<\/code>) \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f: \u044d\u0442\u043e \u0448\u0443\u043c, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u0430\u0439\u0442\u0430. \u0418 \u0435\u0441\u0442\u044c \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0432 200 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u2014 \u0438\u043d\u0430\u0447\u0435 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<h3>\u0422\u0435\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0442\u0430\u043a\u0443\u044e\u0442 \u0441\u0432\u043e\u0439 \u0436\u0435 \u0441\u0430\u0439\u0442<\/h3>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432 \u0434\u0432\u0430 \u043d\u0430\u0431\u043e\u0440\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 <code>php tests\/run.php<\/code>, 160 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0437\u0430 20 \u0441\u0435\u043a\u0443\u043d\u0434 \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 PHP. \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442: <code>test()<\/code>, <code>check()<\/code> \u0438 HTTP-\u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 <code>fsockopen()<\/code> \u2014 \u044d\u0442\u043e \u043e\u043a\u043e\u043b\u043e 50 \u0441\u0442\u0440\u043e\u043a. \u0421\u0430\u0439\u0442 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c PHP \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u2014 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u0430\u0442\u0430\u043a\u0430. \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u043b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442, \u043b\u0435\u0436\u0438\u0442 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435:<\/p>\n<pre><code class=\"php\">const XSS = '&lt;script&gt;alert(1)&lt;\/script&gt;&lt;img src=x&gt;';$data['profile'] = array_merge($data['profile'], [    'name'      =&gt; 'Test ' . XSS,    'bio'       =&gt; \"Bio \\e]0;pwned\\x07\\e[2J\" . XSS,   \/\/ escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u2014 \u0434\u043b\u044f curl-\u0432\u0435\u0440\u0441\u0438\u0438    'specialty' =&gt; '\"&gt;&lt;svg onload=alert(1)&gt;',    \/\/ \u2026]);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0432\u044b\u043b\u0435\u0437\u043b\u043e. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0442\u0435\u0441\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e \u0447\u0451\u043c \u0440\u0435\u0447\u044c:<\/p>\n<ul>\n<li>\n<p>\u00ab\u041e\u0442\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u0439 XSS: \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043a\u0430\u043a HTML\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u00ab\u041f\u043e\u0434\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 Host \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u00abSSRF: \/audit.json \u043d\u0435 \u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u00ab\u041f\u0435\u0440\u0435\u0431\u043e\u0440 \u043f\u0430\u0440\u043e\u043b\u044f: \u043f\u043e\u0441\u043b\u0435 5 \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430, \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u00abCSRF: \u0431\u0435\u0437 \u0442\u043e\u043a\u0435\u043d\u0430 \u0438\u043b\u0438 \u0441 \u0447\u0443\u0436\u0438\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u00abJPEG: EXIF \u0441 GPS \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f JPEG\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u00ab\u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043d\u0435 \u043e\u0442\u0434\u0430\u044e\u0442\u0441\u044f\u00bb \u2014 <code>\/.git\/config<\/code>, <code>\/data\/site.json<\/code>, <code>\/..\/<\/code> \u0438 \u043f\u0440\u043e\u0447\u0435\u0435;<\/p>\n<\/li>\n<li>\n<p>\u00abMarkdown: \u043a\u0430\u0432\u044b\u0447\u043a\u0430 \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u00bb.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u0430\u0436\u0435\u043d \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e Markdown-\u043f\u0430\u0440\u0441\u0435\u0440 \u0443 \u043c\u0435\u043d\u044f \u0442\u043e\u0436\u0435 \u0441\u0432\u043e\u0439, \u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0430 \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 <code>href<\/code> \u0438 \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u2014 \u0442\u0435\u0441\u0442\u044b \u00ab\u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb. \u041a\u043e\u0433\u0434\u0430 \u044f \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u043d\u0430 \u0436\u0438\u0432\u044b\u0445 \u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0445 \u043b\u043e\u0432\u0443\u0448\u043a\u0438, \u0432\u0441\u043f\u043b\u044b\u043b\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0435\u0439, \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 \u043d\u0435 \u0434\u043e\u0434\u0443\u043c\u0430\u043b\u0430\u0441\u044c: \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b\u0430 \u043c\u0435\u0442\u043a\u0430 \u043e\u0447\u0438\u0441\u0442\u043a\u0438, \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0441\u0443\u043c\u043c\u0430 \u0430\u0442\u0430\u043a \u0438 \u0441\u0435\u0441\u0441\u0438\u0439 \u043d\u0435 \u0441\u0445\u043e\u0434\u0438\u043b\u0430\u0441\u044c, \u0432 \u0432\u044b\u0434\u0430\u0447\u0443 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u043c\u0443\u0441\u043e\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u0430 \u0432 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c <code>-0.0<\/code>. \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430.<\/p>\n<p>\u0422\u0435\u0441\u0442\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432 \u0432\u044b\u043a\u043b\u0430\u0434\u043a\u0443: \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u0435\u043f\u043b\u043e\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u0445 \u0441\u0430\u043c \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0443\u043f\u0430\u043b\u043e. \u041e\u0431\u043e\u0439\u0442\u0438 \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0432\u043d\u043e, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u2014 \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0445\u043e\u0434 \u0431\u044b\u043b \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u0430 \u043d\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u043e\u0439.<\/p>\n<h3>\u0411\u044e\u0434\u0436\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u0430\u0445<\/h3>\n<p>PHP-\u0442\u0435\u0441\u0442\u044b \u043d\u0435 \u0432\u0438\u0434\u044f\u0442 \u0432\u0451\u0440\u0441\u0442\u043a\u0443 \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442 JavaScript. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u2014 <code>tests\/browser.py<\/code>: \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 Chromium \u0447\u0435\u0440\u0435\u0437 DevTools Protocol, \u0431\u0435\u0437 Selenium \u0438 Playwright, \u0442\u043e\u043b\u044c\u043a\u043e <code>python3-websocket<\/code>. \u041e\u043d \u043e\u0431\u0445\u043e\u0434\u0438\u0442 35 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u2014 \u0442\u0435\u043b\u0435\u0444\u043e\u043d 375\u00d7812 \u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 1280\u00d7800 \u2014 \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 CSP;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0442 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u2014 \u0441\u0430\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u0430\u044f \u043c\u043e\u044f \u0432\u0451\u0440\u0441\u0442\u043e\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442 \u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0432 \u043e\u0431\u0435\u0438\u0445 \u0442\u0435\u043c\u0430\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0432 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0445\u043e\u0434 \u043a\u043b\u0430\u0432\u0438\u0448\u0435\u0439 Tab: \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0444\u043e\u043a\u0443\u0441\u0435 \u0432\u0438\u0434\u0435\u043d;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0436\u0438\u043c \u00ab\u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u00bb: \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0431\u044e\u0434\u0436\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u044e\u0434\u0436\u0435\u0442 \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043f\u043e\u0440\u043e\u0433\u0430\u043c\u0438:<\/p>\n<pre><code class=\"python\"># \u0421\u0435\u0439\u0447\u0430\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u2248280 \u041a\u0411 \u0438 14\u201319 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432: \u0437\u0430\u043f\u0430\u0441 \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043e\u0434 \u0440\u043e\u0441\u0442,# \u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0442\u044f\u0436\u0451\u043b\u043e\u0435 \u043f\u043e\u043f\u0430\u043b\u043e \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e.BUDGET = {'kb': 400, 'html': 80, 'js': 150, 'req': 25, 'load': 1500}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u0435\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e \u0432\u0441\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u043b\u0430, HTML \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0432\u0440\u0435\u043c\u044f \u0434\u043e <code>load<\/code>. \u0427\u0438\u0441\u043b\u0430 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u0438\u0437 <code>performance.getEntriesByType()<\/code> \u043f\u0440\u044f\u043c\u043e \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u043e\u0442\u044f\u0436\u0435\u043b\u0435\u043b\u0430 \u2014 \u0442\u0435\u0441\u0442 \u043f\u0430\u0434\u0430\u0435\u0442.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043b\u0438\u0447\u043d\u043e\u043c\u0443 \u0441\u0430\u0439\u0442\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u0435\u0437 \u043f\u043e\u0440\u043e\u0433\u0430 \u0432\u0435\u0441 \u0440\u0430\u0441\u0442\u0451\u0442 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e: \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0432\u0430\u044f \u0444\u0438\u0447\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u00ab\u0432\u0441\u0435\u0433\u043e 20 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u00bb. \u0421 \u043f\u043e\u0440\u043e\u0433\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u044f\u0436\u0451\u043b\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u044f\u0432\u043d\u043e.<\/p>\n<p>\u041f\u0440\u043e\u0433\u043e\u043d \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043a\u043e\u043b\u043e \u0442\u0440\u0451\u0445 \u043c\u0438\u043d\u0443\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043a\u043b\u0430\u0434\u043a\u043e\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0434\u0451\u0442 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0422\u0435\u0441\u0442\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448\u043b\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0449\u0438: \u043d\u0430 \u0434\u0432\u0443\u0445 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u2014 \u0442\u0440\u0435\u043d\u0430\u0436\u0451\u0440\u0435 \u0438 \u0444\u043e\u0440\u043c\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0444\u043e\u043a\u0443\u0441\u0435 \u043f\u043e\u0441\u043b\u0435 Tab \u043d\u0435 \u0431\u044b\u043b \u0432\u0438\u0434\u0435\u043d, \u0430 \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0441\u043f\u043b\u044b\u043b\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432.<\/p>\n<h3>\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0434 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439<\/h3>\n<p>\u042d\u0442\u043e \u0447\u0430\u0441\u0442\u044c, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0430\u0439\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d: \u043e\u043d \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0431\u043e\u0442\u044b \u0432 SSH-\u043b\u043e\u0432\u0443\u0448\u043a\u0435. \u041d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u044b\u0440\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0445 \u2014 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f. \u0412 \u043d\u0438\u0445 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u044b, \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u0430\u0442, \u0438\u043d\u043e\u0433\u0434\u0430 \u0447\u0443\u0436\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0440\u0430\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043c\u0430\u043b\u0432\u0430\u0440\u044c \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0435\u0436\u0434\u0443 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u043c \u043b\u043e\u0432\u0443\u0448\u043a\u0438 \u0438 \u0441\u0430\u0439\u0442\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u044d\u043a\u0441\u043f\u043e\u0440\u0442, \u0438 \u043e\u043d \u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u0442\u0435\u043a\u0441\u0442 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0440\u0430\u0436\u0434\u0435\u0431\u0435\u043d. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0447\u0451\u0440\u043d\u044b\u0439:<\/p>\n<pre><code class=\"python\">def show_cmd(raw):    c = re.sub(r'[^\\x20-\\x7e]', '', raw)                                   # \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0447\u0430\u0442\u043d\u044b\u0439 ASCII    c = re.sub(r'\\b[a-z][a-z0-9+.-]*:\/\/\\S+', '&lt;url&gt;', c, flags=re.I)       # \u043b\u044e\u0431\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438    c = re.sub(r'\\b\\d{1,3}(\\.\\d{1,3}){3}(:\\d+)?\\b', '&lt;ip&gt;', c)             # \u0430\u0434\u0440\u0435\u0441\u0430    c = re.sub(r'\"[^\"]*\"|\\'[^\\']*\\'', '&lt;str&gt;', c)                          # \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445    c = re.sub(r'[A-Za-z0-9+\/=]{32,}', '&lt;blob&gt;', c)                        # base64 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u043a\u0443\u0441\u043a\u0438    ...<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0435\u0436\u0435\u0442\u0441\u044f \u043f\u043e <code>;<\/code>, <code>|<\/code>, <code>&amp;&amp;<\/code>, \u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430. \u041d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f <code>&lt;\u0441\u043a\u0440\u044b\u0442\u043e&gt;<\/code>. \u0423 \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0439 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0444\u043b\u0430\u0433\u0438, \u043f\u0443\u0442\u0438 \u0438 \u043f\u0440\u0430\u0432\u0430 (<code>chmod +x<\/code>), \u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432\u0438\u0434\u0430 <code>\/tmp\/x7f3k<\/code> \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 <code>&lt;file&gt;<\/code>. \u0412\u0441\u0451, \u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u2014 \u0432 <code>&lt;arg&gt;<\/code>.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>cd \/tmp; wget &lt;url&gt;; chmod +x .\/&lt;file&gt;; .\/&lt;file&gt;<\/code> \u2014 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0431\u043e\u0442 \u0434\u0435\u043b\u0430\u043b, \u0438 \u043d\u0438\u0447\u0435\u0433\u043e, \u043f\u043e \u0447\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043a\u0443\u0434\u0430-\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e: \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0448\u043b\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u0441 \u0442\u0440\u0451\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u042d\u0442\u043e \u043e\u0442\u0441\u0435\u043a\u0430\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u2014 \u043f\u0430\u0440\u043e\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0442\u043e-\u0442\u043e \u043d\u0430\u0431\u0440\u0430\u043b \u0440\u0443\u043a\u0430\u043c\u0438, \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430. \u0421\u0430\u043c\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u2014 \u043a\u0430\u043a \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0431\u043e\u0442\u043e\u0432, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435.<\/p>\n<p>\u0426\u0435\u043d\u0430: \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f. \u0411\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e\u0435 \u0432 \u0441\u0435\u0441\u0441\u0438\u0438 \u2014 \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0430 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u043d\u0430 <code>&lt;\u0441\u043a\u0440\u044b\u0442\u043e&gt;<\/code>. \u042f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u043d.<\/p>\n<h3>\u041a\u0430\u043a \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u043e\u0442\u0430 \u043e\u0442 \u043c\u043d\u043e\u0433\u0438\u0445, \u0435\u0441\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f<\/h3>\n<p>\u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435: \u00ab\u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0431\u043e\u0442 \u043f\u0440\u0438\u0448\u0451\u043b \u0441 18 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u2014 \u043a\u0430\u043a \u0432\u044b \u044d\u0442\u043e \u043f\u043e\u043d\u044f\u043b\u0438, \u0435\u0441\u043b\u0438 IP \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0435?\u00bb \u041e\u0442\u0432\u0435\u0442 \u0432 \u0442\u043e\u043c, \u0433\u0434\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u0441\u0442\u044c, \u0430 \u0433\u0434\u0435 \u0438\u0445 \u043d\u0435\u0442.<\/p>\n<p><strong>\u0410\u0434\u0440\u0435\u0441\u0430 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u043b\u043e\u0432\u0443\u0448\u043a\u0438.<\/strong> \u041b\u043e\u0432\u0443\u0448\u043a\u0430 \u0431\u0435\u0437 \u043d\u0438\u0445 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0438\u0448\u0435\u0442 \u0432\u0441\u0451. \u0420\u0430\u0437 \u0432 5 \u043c\u0438\u043d\u0443\u0442 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0447\u0438\u0442\u0430\u0435\u0442 \u0436\u0443\u0440\u043d\u0430\u043b \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 7 \u0434\u043d\u0435\u0439 \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0441\u0451 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u0412 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0430\u0439\u0442\u0430 \u0443\u0445\u043e\u0434\u044f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0435 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<p><strong>\u00ab\u0411\u043e\u0442\u00bb \u2014 \u044d\u0442\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u0430 \u043d\u0435 \u0430\u0434\u0440\u0435\u0441.<\/strong> \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0435 12 \u043a\u043e\u043c\u0430\u043d\u0434 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0439 \u0436\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438, \u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0447\u0438\u0441\u043b\u0430 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 <code>N<\/code>, \u0438 \u043e\u0442 \u044d\u0442\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0445\u0435\u0448 \u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"python\"># \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0430 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 uname \u2014 \u043e\u0434\u0438\u043d \u0432\u0438\u0434, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0431\u044b \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0438 \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u043f\u0443\u0442\u0438 \u0435\u0451 \u043d\u0438 \u0432\u044b\u0437\u0432\u0430\u043b\u0438if len(shown) == 1 and re.fullmatch(r'(\\S*\/)?uname( -[a-zA-Z]+)*', shown[0][1]):    sig = hashlib.sha1(b'uname').hexdigest()[:4]else:    sig = hashlib.sha1('\\n'.join(re.sub(r'\\d+', 'N', c) for _, c, _ in shown[:12]).encode()).hexdigest()[:4]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0421\u0435\u0441\u0441\u0438\u0438 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e \u2014 \u043e\u0434\u043d\u043e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e. \u041e\u0441\u043e\u0431\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0441 <code>uname<\/code> \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u044b\u0445 \u0436\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445: \u043e\u0434\u0438\u043d \u0431\u043e\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u043b \u0435\u0451 \u0442\u043e \u043a\u0430\u043a <code>uname -a<\/code>, \u0442\u043e \u043a\u0430\u043a <code>\/bin\/.\/uname -s -v -n -r -m<\/code>, \u0438 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0441\u043f\u0430\u0434\u0430\u043b\u0441\u044f \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u00ab\u0432\u0438\u0434\u043e\u0432\u00bb.<\/p>\n<p><strong>\u00ab18 \u0430\u0434\u0440\u0435\u0441\u043e\u0432\u00bb \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430.<\/strong> \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0448\u043b\u0438 \u0435\u0433\u043e \u0441\u0435\u0441\u0441\u0438\u0438, \u0430 \u043d\u0430\u0440\u0443\u0436\u0443 \u0443\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440. \u0421\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e, \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u0441 \u0442\u0440\u0451\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u0441\u044f \u0432\u043e\u0432\u0441\u0435. \u0421 \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c \u0434\u043b\u044f <code>uname<\/code> \u044d\u0442\u043e\u0442 \u0432\u0438\u0434 \u0437\u0430 \u0434\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u0430\u0431\u0440\u0430\u043b 47 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 30 \u0442\u044b\u0441\u044f\u0447 \u0441\u0435\u0441\u0441\u0438\u0439.<\/p>\n<p><strong>\u0427\u0435\u0441\u0442\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435.<\/strong> \u00ab\u041e\u0434\u0438\u043d \u0431\u043e\u0442\u00bb \u0437\u043d\u0430\u0447\u0438\u0442 \u00ab\u043e\u0434\u0438\u043d \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u00bb, \u0430 \u043d\u0435 \u043e\u0434\u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430 \u0438 \u043d\u0435 \u043e\u0434\u0438\u043d \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446. \u041e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043b\u044e\u0434\u0438, \u0430 \u043e\u0434\u0438\u043d \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0433\u043e\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0445\u043e\u0434 \u0438\u0434\u0443\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<ul>\n<li>\n<p><strong>\u041e\u0442\u043f\u0435\u0447\u0430\u0442\u043e\u043a SSH-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 (HASSH)<\/strong> \u2014 \u0445\u0435\u0448 \u043e\u0442 \u043d\u0430\u0431\u043e\u0440\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438. \u0421\u0442\u0440\u043e\u043a\u0443 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u043e\u0442 \u043f\u0438\u0448\u0435\u0442 \u043a\u0430\u043a\u0443\u044e \u0445\u043e\u0447\u0435\u0442, \u0430 \u043d\u0430\u0431\u043e\u0440 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0432\u044b\u0434\u0430\u0451\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443. \u0422\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e \u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0431\u044f <a href=\"http:\/\/SSH-2.0-internetdata.io\" rel=\"noopener nofollow\"><code>SSH-2.0-internetdata.io<\/code><\/a>, \u0442\u043e\u0442 \u0436\u0435 \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043e\u043a, \u0447\u0442\u043e \u0443 \u0447\u0430\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 <code>SSH-2.0-Go<\/code>: \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u044b\u0432\u0435\u0441\u043a\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0430\u0441\u043f\u043e\u0440\u0442 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430<\/strong> \u2014 \u0447\u0430\u0441\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u043f\u0430\u0440\u043e\u043b\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u043e\u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u0435\u043d\u0442 \u0438 \u043e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u0438, \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u044d\u0442\u043e \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043e \u043a\u0430\u043a \u00ab\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0434\u0438\u043d \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u00bb. \u0418\u043c\u0435\u043d\u043d\u043e \u00ab\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u00bb: \u044d\u0442\u043e \u043f\u043e\u0432\u043e\u0434 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f, \u0430 \u043d\u0435 \u0432\u044b\u0432\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u043e\u0434\u043e\u0441\u043b\u043e\u0432\u043d\u0430\u044f.<\/strong> \u041d\u043e\u0432\u043e\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c, \u0435\u0441\u043b\u0438 \u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0445\u043e\u0442\u044f \u0431\u044b \u043d\u0430 60% (<code>difflib.SequenceMatcher<\/code> \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434). \u0422\u0430\u043a \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0434\u0432\u0430 \u0432\u0438\u0434\u0430 \u0441 \u043e\u0431\u0449\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u043e\u043c 75%: \u043e\u0434\u0438\u043d \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c \u0447\u0435\u0440\u0435\u0437 <code>passwd<\/code>, \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u0447\u0435\u0440\u0435\u0437 <code>chpasswd<\/code> \u0438 \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u0443\u0431\u0438\u0432\u0430\u0435\u0442 \u0447\u0443\u0436\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432 <code>\/tmp<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u044b\u0433\u043e\u043d\u044f\u0435\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0435\u0442\u0438.<\/strong> \u041f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0432\u0438\u0434\u043e\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u043d\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0438\u0437 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432 \u0438 \u043e\u0431\u043b\u0430\u043a\u043e\u0432, \u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432: \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043e\u0442 \u0437\u0430\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u0445 \u0440\u043e\u0443\u0442\u0435\u0440\u043e\u0432 \u0438 \u043a\u0430\u043c\u0435\u0440. \u041f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u043b \u044d\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0433\u0435\u043e\u043b\u043e\u043a\u0430\u0446\u0438\u0438. \u0422\u0430\u043a \u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b: \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u00ab\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u2192 \u0441\u0435\u0442\u044c\u00bb \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0437 \u0432 \u043c\u0435\u0441\u044f\u0446, \u0438 \u043f\u043e\u0438\u0441\u043a \u0438\u0434\u0451\u0442 \u043f\u043e \u043d\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e. \u041f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a, \u043a\u0441\u0442\u0430\u0442\u0438, \u0438\u0437 \u0420\u043e\u0441\u0441\u0438\u0438 \u043e\u0442\u0434\u0430\u0432\u0430\u043b \u043f\u043e 4 \u041a\u0411 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443 \u2014 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0431\u0440\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u043c\u0443. \u041f\u0435\u0440\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0443\u0434\u0438\u0432\u0438\u043b\u0438: \u0438 \u0442\u043e\u0442 \u0440\u0430\u0437\u0432\u0435\u0434\u0447\u0438\u043a \u0441 <code>uname<\/code>, \u0438 \u0441\u0430\u043c\u044b\u0439 \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0439 \u0432\u0438\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 SSH-\u043a\u043b\u044e\u0447, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 \u0442\u0440\u0438 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0438 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0436\u0438\u0432\u0443\u0442 \u0432 \u0441\u0435\u0442\u044f\u0445 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0430 \u043d\u0435 \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445. \u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0437\u0430\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0447\u0435\u043c \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u043a. \u041e\u0433\u043e\u0432\u043e\u0440\u043a\u0430: \u00ab\u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0438\u043b\u0438 \u043d\u0435\u0442\u00bb \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0441\u0435\u0442\u0438, \u0438 \u0447\u0430\u0441\u0442\u044c \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0441 \u043d\u0435\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u00ab\u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b\u00bb, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0446\u0435\u043d\u043a\u0430, \u0430 \u043d\u0435 \u0442\u043e\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0441\u0447\u0451\u0442.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041e\u0434\u0438\u043d \u0430\u0434\u0440\u0435\u0441 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u043e\u0432\u0443\u0448\u043a\u0430\u0445.<\/strong> \u041a\u0440\u043e\u043c\u0435 SSH-\u043b\u043e\u0432\u0443\u0448\u043a\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0435\u0441\u0442\u044c \u0441\u043c\u043e\u043b\u044f\u043d\u0430\u044f \u044f\u043c\u0430, \u043f\u0440\u0438\u043c\u0430\u043d\u043a\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043b\u043e\u0432\u0443\u0448\u043a\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0441\u0430\u0439\u0442\u0435. \u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0430\u0434\u0440\u0435\u0441 \u043e\u0431\u043e\u0448\u0451\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043d\u0438\u0445, \u043a\u0430\u0436\u0434\u0430\u044f \u0445\u0440\u0430\u043d\u0438\u0442 \u043d\u0435 \u0430\u0434\u0440\u0435\u0441, \u0430 HMAC \u043e\u0442 \u043d\u0435\u0433\u043e \u0441 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c. \u0421\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0445\u0435\u0448\u0435\u0439 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u00ab\u044d\u0442\u043e \u0442\u043e\u0442 \u0436\u0435 \u0430\u0434\u0440\u0435\u0441\u00bb, \u0430 \u0441\u0430\u043c \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u0445\u0435\u0448\u0430 \u043d\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0435\u0437 \u043a\u043b\u044e\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 30 \u0434\u043d\u0435\u0439 \u043b\u043e\u0432\u0443\u0448\u043a\u0438 \u0432\u0438\u0434\u0435\u043b\u0438 2986 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, 274 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u043f\u0430\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0432 \u043e\u0434\u043d\u0443. \u0421\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u043f\u0443\u0442\u044c \u2014 \u0441\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430 \u043d\u0430 \u0444\u0430\u043b\u044c\u0448\u0438\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0445\u043e\u0434\u0430 WordPress, \u0431\u0435\u0437 \u043f\u0430\u0443\u0437\u044b: \u0441\u043a\u0430\u043d\u0435\u0440 \u043d\u0430\u0448\u0451\u043b <code>\/wp-login.php<\/code> \u0438 \u0442\u0443\u0442 \u0436\u0435 \u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u0438. \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 \u0438\u0437 SSH-\u043b\u043e\u0432\u0443\u0448\u043a\u0438 \u0432 \u0441\u043c\u043e\u043b\u044f\u043d\u0443\u044e \u044f\u043c\u0443, \u0442\u043e\u0436\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443: \u0431\u043e\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b \u0441 \u043e\u0434\u043d\u0438\u043c \u043f\u043e\u0440\u0442\u043e\u043c \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0439.<\/p>\n<h3>\u041e\u0448\u0438\u0431\u043a\u0438<\/h3>\n<h4>\u0412\u0442\u043e\u0440\u043e\u0439 \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440<\/h4>\n<p>\u042f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u043c\u043e\u043b\u044f\u043d\u0443\u044e \u044f\u043c\u0443 \u0438 \u043f\u0440\u0438\u043c\u0430\u043d\u043a\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0442\u043a\u0440\u044b\u043b \u043f\u043e\u0440\u0442\u044b \u0432 <code>ufw<\/code> \u2014 \u0438 \u0434\u0432\u0430 \u0434\u043d\u044f \u043d\u0430 \u043d\u0438\u0445 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e. <code>tcpdump<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 SYN, \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u0430 <code>ufw<\/code> \u0440\u043e\u0441, \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e.<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0451\u043d <code>firewalld<\/code>, \u0438 \u0435\u0433\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0432 nftables \u0438\u0434\u0451\u0442 \u043f\u043e\u0441\u043b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 <code>ufw<\/code>. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u0435\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c. \u041d\u0430\u0448\u0451\u043b \u0447\u0435\u0440\u0435\u0437 <code>nft list ruleset | grep -nE '^table|hook '<\/code> \u2014 \u0442\u0430\u043c \u0432\u0438\u0434\u043d\u043e \u0432\u0441\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u043d\u0438 \u0446\u0435\u043f\u043b\u044f\u044e\u0442\u0441\u044f \u043a \u0445\u0443\u043a\u0430\u043c.<\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u2014 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440\u0430\u0445 \u0441\u0440\u0430\u0437\u0443, \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0434\u043b\u044f \u0441\u0435\u0431\u044f: \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c <code>firewall-cmd --reload<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0434\u0435\u0442\u044c \u0441\u0435\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<h4>\u041b\u043e\u0436\u043d\u0430\u044f \u0442\u0440\u0435\u0432\u043e\u0433\u0430 \u0441\u0442\u043e\u0440\u043e\u0436\u0430<\/h4>\n<p>\u0421\u0442\u043e\u0440\u043e\u0436 \u0440\u0430\u0437 \u0432 10 \u043c\u0438\u043d\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0432\u044f\u0437\u044c \u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u044b\u0432\u0430 \u043f\u0438\u0448\u0435\u0442 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u2014 \u043f\u043e\u043b\u043e\u0441\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0440\u0430\u0441\u043d\u0435\u0435\u0442. 5 \u043d\u043e\u044f\u0431\u0440\u044f \u043e\u043d \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b \u043e\u0431\u0440\u044b\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u043d\u0435 \u0431\u044b\u043b\u043e: \u043e\u0442\u0432\u0430\u043b\u0438\u043b\u0441\u044f DNS \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445, \u0430 \u0441\u0430\u0439\u0442 \u0432 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u043b.<\/p>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438: \u00ab\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0439\u0442\u0438 \u043d\u0430\u0440\u0443\u0436\u0443\u00bb \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u00ab\u0441\u0430\u0439\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d\u00bb. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0434 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u043e\u043c \u0441\u0442\u043e\u0440\u043e\u0436 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0436\u0443\u0440\u043d\u0430\u043b \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430: \u0435\u0441\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 10-\u043c\u0438\u043d\u0443\u0442\u043d\u044b\u0445 \u043e\u0442\u0440\u0435\u0437\u043a\u043e\u0432 \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u0430, \u0441\u0430\u0439\u0442 \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043f\u0443\u0448 \u0441 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c.<\/p>\n<pre><code class=\"python\">if start &lt;= ts &lt; end and ip.is_global:    seen.add(int(ts - start) \/\/ 600)          # \u043d\u043e\u043c\u0435\u0440 10-\u043c\u0438\u043d\u0443\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430, \u0433\u0434\u0435 \u0431\u044b\u043b \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441print(100 * len(seen) \/\/ max(1, -(-(end - start) \/\/ 600)))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h4>\u0424\u043b\u0435\u0448\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0432\u0430\u0436\u0434\u044b \u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0430 \u0441\u0435\u0440\u0432\u0435\u0440<\/h4>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443 \u043d\u0435\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u0444\u043b\u0435\u0448-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0435. 27 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u0438 8 \u043d\u043e\u044f\u0431\u0440\u044f \u0444\u043b\u0435\u0448\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u043b\u0430 \u043f\u043e\u0434 \u0437\u0430\u043f\u0438\u0441\u044c\u044e, \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u0442\u043e\u044f\u043b \u043e\u0442 7 \u0434\u043e 16 \u0447\u0430\u0441\u043e\u0432.<\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u2014 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u043e\u0439 \u0442\u0430\u0439\u043c\u0435\u0440 \u043d\u0435 \u043f\u043e\u043c\u043e\u0433. \u042f\u0434\u0440\u043e \u0431\u044b\u043b\u043e \u0436\u0438\u0432\u043e \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e \u0435\u0433\u043e \u00ab\u043a\u043e\u0440\u043c\u0438\u043b\u043e\u00bb, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u0435\u043d \u0431\u044b\u043b \u0434\u0438\u0441\u043a, \u0432\u0438\u0441\u0435\u043b\u0438. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0432\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435.<\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u0432\u0430:<\/p>\n<ol>\n<li>\n<p><strong>\u042f\u0434\u0440\u043e \u0441\u0430\u043c\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u0432\u0438\u0441\u0448\u0435\u043c \u0434\u0438\u0441\u043a\u0435.<\/strong> <code>kernel.hung_task_timeout_secs = 300<\/code>, <code>hung_task_panic = 1<\/code>, <code>panic = 30<\/code>: \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0436\u0434\u0451\u0442 \u0434\u0438\u0441\u043a \u0434\u043e\u043b\u044c\u0448\u0435 5 \u043c\u0438\u043d\u0443\u0442, \u044f\u0434\u0440\u043e \u043f\u0430\u043d\u0438\u043a\u0443\u0435\u0442 \u0438 \u0447\u0435\u0440\u0435\u0437 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f. \u0427\u0430\u0441\u044b \u043f\u0440\u043e\u0441\u0442\u043e\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u0438\u043d\u0443\u0442\u044b. \u0420\u0438\u0441\u043a \u043f\u043e\u043d\u044f\u0442\u0435\u043d \u2014 \u0437\u0430\u043a\u043e\u043d\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043e\u043b\u044c\u0448\u0435 \u043f\u044f\u0442\u0438 \u043c\u0438\u043d\u0443\u0442 \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u0442\u043e\u0436\u0435 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443, \u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0442\u0430\u043a\u0438\u0445 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442. \u0421\u043b\u0435\u0434 \u043f\u0430\u043d\u0438\u043a\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 <code>pstore<\/code>, \u0438 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0423\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u0444\u043b\u0435\u0448\u043a\u0438.<\/strong> \u0413\u043b\u0430\u0432\u043d\u044b\u043c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u043c\u0441\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u0438 \u0431\u044b\u043b\u0430 \u0431\u0430\u0437\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a. \u0415\u0451 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0451\u043d \u043d\u0430 \u0434\u0438\u0441\u043a \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0447\u0435\u0440\u0435\u0437 bind \u0432 <code>\/etc\/fstab<\/code> \u2014 \u043f\u0443\u0442\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c. \u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0448\u0430\u0433 \u0438 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0451, \u0435\u0441\u043b\u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u043d\u0435 \u043f\u043e\u0434\u043d\u044f\u043b\u0430\u0441\u044c. \u041d\u0430 \u043d\u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0442\u0435\u0441\u0442.<\/p>\n<\/li>\n<\/ol>\n<h3>\u0427\u0442\u043e \u0431\u044b \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0438\u043d\u0430\u0447\u0435<\/h3>\n<ul>\n<li>\n<p><strong>\u0422\u0435\u0441\u0442\u044b \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0434\u043d\u044f.<\/strong> \u0421\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b. \u0416\u0438\u0432\u044b\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u0431\u043e\u0442\u044b, \u0430 \u043e\u043d\u0438 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>CSP \u2014 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0432\u0451\u0440\u0441\u0442\u043a\u0438.<\/strong> \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u043d\u0430 \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0451 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u043e\u0440\u043e\u0436\u0443 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0430 \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0438\u0442 \u0441\u0435\u0440\u0432\u0435\u0440.<\/strong> \u041b\u043e\u0436\u043d\u0430\u044f \u0442\u0440\u0435\u0432\u043e\u0433\u0430 \u043e\u0431\u043e\u0448\u043b\u0430\u0441\u044c \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0439, \u043d\u043e \u0434\u043e\u0432\u0435\u0440\u0438\u0435 \u043a \u043f\u043e\u043b\u043e\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043e\u043d\u0430 \u043f\u043e\u0434\u0442\u043e\u0447\u0438\u043b\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u0435\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0437\u0430 \u0442\u0440\u0438 \u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043d\u0438\u043c. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u2014 \u0447\u0442\u043e\u0431\u044b \u0442\u0435\u0441\u0442\u044b \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0440\u0430\u043d\u044c\u0448\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u0430 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435.<\/p>\n<p>\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0441\u0430\u0439\u0442 \u0438 \u0438\u0437 \u0447\u0435\u0433\u043e \u043e\u043d \u0441\u0434\u0435\u043b\u0430\u043d \u2014 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 <a href=\"https:\/\/ogurexxx.ru\/colophon\" rel=\"noopener nofollow\">\u00ab\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u044d\u0442\u043e\u0442 \u0441\u0430\u0439\u0442\u00bb<\/a>, \u043a\u0430\u043a \u043e\u043d \u0437\u0430\u0449\u0438\u0449\u0451\u043d \u2014 <a href=\"https:\/\/ogurexxx.ru\/audit\" rel=\"noopener nofollow\">\u00ab\u0410\u0443\u0434\u0438\u0442\u00bb<\/a>, \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0432\u0441\u0435\u0445 \u0432\u0438\u0434\u043e\u0432 \u0431\u043e\u0442\u043e\u0432 \u0441 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430\u043c\u0438, \u0440\u043e\u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u0438 \u0441\u0435\u0442\u044f\u043c\u0438 \u2014 <a href=\"https:\/\/ogurexxx.ru\/bestiary\" rel=\"noopener nofollow\">\u0431\u0435\u0441\u0442\u0438\u0430\u0440\u0438\u0439<\/a>, \u0430 \u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0441\u0431\u043e\u0435\u0432 \u2014 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 <a href=\"https:\/\/ogurexxx.ru\/incidents\" rel=\"noopener nofollow\">\u00ab\u0418\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b\u00bb<\/a>.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1107674\/\">https:\/\/habr.com\/ru\/articles\/1107674\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043f\u0440\u043e SSH-\u043b\u043e\u0432\u0443\u0448\u043a\u0443 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0441\u043f\u0440\u043e\u0441\u0438\u043b\u0438: \u0430 \u0447\u0442\u043e \u0437\u0430 \u0441\u0430\u0439\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u0442\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d. \u041e\u0442\u0432\u0435\u0447\u0430\u044e. \u042d\u0442\u043e \u043d\u0435 \u043e\u0431\u0437\u043e\u0440 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432, \u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439: \u0447\u0442\u043e \u0432\u044b\u0431\u0440\u0430\u043b, \u0432\u043e \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c \u0438 \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u0441\u044f. \u0410 \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u043a\u0430\u043a \u0441\u0430\u0439\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u0451\u043b \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0431\u043e\u0442, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b.\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0446\u0438\u0444\u0440 \u0434\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 \u2014 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026, \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 243 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0438 \u043e\u043a\u043e\u043b\u043e 22 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a PHP, JS \u0438 CSS, \u043f\u043b\u044e\u0441 5 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430 Bash \u0438 Python. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043d\u043e\u043b\u044c: \u043d\u0438 Composer, \u043d\u0438 npm, \u043d\u0438 CDN. \u0421\u0430\u0439\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u043d\u043e\u043b\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0447\u0443\u0436\u0438\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c \u2014 \u0448\u0440\u0438\u0444\u0442\u044b \u043b\u0435\u0436\u0430\u0442 \u0440\u044f\u0434\u043e\u043c.\u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0438 \u0431\u0435\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u044b\u043c \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u044b\u043c. \u0421\u0430\u0439\u0442 \u2014 \u043b\u0438\u0447\u043d\u044b\u0439, \u043f\u0438\u0448\u0435\u0442 \u0432 \u043d\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0447\u0438\u0442\u0430\u044e\u0442 \u0432\u0441\u0435. \u0417\u0430\u043f\u0438\u0441\u0435\u0439 \u2014 \u0441\u043e\u0442\u043d\u0438, \u043d\u0435 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b. \u041f\u043e\u0434 \u0442\u0430\u043a\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u0451\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u043e\u0432\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u043b\u043e\u043c\u0430\u0442\u044c\u0441\u044f: \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0431\u044d\u043a\u0430\u043f\u044b \u0434\u0430\u043c\u043f\u043e\u043c, \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438, \u0443\u0447\u0451\u0442\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u0433\u0434\u0435-\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u2014 \u043e\u0434\u0438\u043d JSON-\u0444\u0430\u0439\u043b. \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:function data_save(array $data): void{    $json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);    if (is_file(DATA_FILE) &amp;&amp; file_get_contents(DATA_FILE) === $json) {        return;                                   \/\/ \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u2014 \u043a\u043e\u043f\u0438\u044e \u043d\u0435 \u043f\u043b\u043e\u0434\u0438\u043c    }    backup_create();                              \/\/ \u043f\u0440\u0435\u0436\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 data\/backups\/, \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f 20 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445    $tmp = DATA_FILE . &#8216;.&#8217; . new_id() . &#8216;.tmp&#8217;;    file_put_contents($tmp, $json, LOCK_EX);    rename($tmp, DATA_FILE);                      \/\/ \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430: \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u043b\u0438\u0431\u043e \u0441\u0442\u0430\u0440\u044b\u0439 \u0444\u0430\u0439\u043b, \u043b\u0438\u0431\u043e \u043d\u043e\u0432\u044b\u0439}\u0417\u0430\u043f\u0438\u0441\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438 rename() \u2014 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442 \u00ab\u0431\u0430\u0437\u044b\u00bb \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u0441\u0430\u0439\u0442\u0435: \u0444\u0430\u0439\u043b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c. \u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0436\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u043b\u0430\u0434\u0451\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u043a\u0430\u0442 \u2014 \u044d\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430. \u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u0430\u0439\u0442\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u2014 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438.\u0426\u0435\u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f:\u041d\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u043e\u0438\u0441\u043a, \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u2014 \u0432\u0441\u0451 \u0440\u0443\u043a\u0430\u043c\u0438, \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u0430 \u0441\u043e\u0442\u043d\u044f\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u044d\u0442\u043e \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u043d\u0430 \u0441\u043e\u0442\u043d\u044f\u0445 \u0442\u044b\u0441\u044f\u0447 \u0431\u044b\u043b\u043e \u0431\u044b \u0431\u043e\u043b\u044c\u043d\u043e.\u041a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c. \u0422\u0430\u043c, \u0433\u0434\u0435 \u043f\u0438\u0448\u0443\u0442 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0432\u043e\u0434\u043a\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 CSP, \u043e \u043d\u0435\u0439 \u043d\u0438\u0436\u0435), \u043d\u0443\u0436\u0435\u043d flock() \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440, \u0438\u043d\u0430\u0447\u0435 \u043b\u044e\u0431\u043e\u0439 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0443\u0435\u0442 \u0444\u0430\u0439\u043b \u043c\u0443\u0441\u043e\u0440\u043e\u043c.\u041d\u0435\u0442 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u2014 \u043d\u0435\u0442 \u0438 \u0435\u0433\u043e \u0437\u0430\u0449\u0438\u0442\u044b. \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, CSRF, \u0441\u0435\u0441\u0441\u0438\u0438, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432\u0445\u043e\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443. \u042d\u0442\u043e \u0436\u0435 \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0442\u0430\u043a\u0443\u044e\u0442 \u0441\u0430\u0439\u0442 (\u043e \u043d\u0438\u0445 \u0434\u0430\u043b\u044c\u0448\u0435).\u0411\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u044f \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u043e \u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435: \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043e\u043a\u043e\u043b\u043e \u0441\u043e\u0440\u043e\u043a\u0430, \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u044d\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u0440\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0437\u0430\u043a\u0440\u044b\u043b \u0431\u044b \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0431\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c.\u0421\u0442\u0440\u043e\u0433\u0430\u044f CSP: \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0443 \u0441\u0430\u0439\u0442\u0430 \u0442\u0430\u043a\u0430\u044f:$csp = &#171;default-src &#8216;self&#8217;; &#187;    . &#171;script-src &#8216;self&#8217; &#8216;nonce-$nonce&#8217;; &#187;    . &#171;style-src &#8216;self&#8217;; font-src &#8216;self&#8217;; &#187;    . &#171;img-src &#8216;self&#8217; data:; connect-src &#8216;self&#8217;; object-src &#8216;none&#8217;; &#187;    . &#171;base-uri &#8216;self&#8217;; form-action &#8216;self&#8217;; frame-ancestors &#8216;none'&#187;;\u0421\u043a\u0440\u0438\u043f\u0442\u044b \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0441 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u043c nonce (16 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0431\u0430\u0439\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442). \u0421\u0442\u0438\u043b\u0438 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b, \u0431\u0435\u0437 &#8216;unsafe-inline&#8217;. \u0417\u0432\u0443\u0447\u0438\u0442 \u043a\u0430\u043a \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435, \u0430 \u043d\u0430 \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u0440\u043e\u0438\u043b\u043e \u0432\u0451\u0440\u0441\u0442\u043a\u0443.style=&#187;&#187; \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d. \u042d\u0442\u043e \u0431\u043e\u043b\u044c\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e. \u041a\u043e\u0433\u0434\u0430 \u0443 \u0442\u0435\u0431\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u043f\u043e\u043b\u043e\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0442\u0435\u043f\u043b\u043e\u0432\u044b\u0435 \u043a\u0430\u0440\u0442\u044b, \u043f\u0435\u0440\u0432\u0430\u044f \u043c\u044b\u0441\u043b\u044c \u2014 style=&#187;width: 37%&#187;. \u041f\u043e\u0434 \u0442\u0430\u043a\u043e\u0439 CSP \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u044d\u0442\u043e \u043c\u043e\u043b\u0447\u0430 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442. \u0427\u0442\u043e \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e:\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u043f\u043e\u043b\u043e\u0441\u044b \u0440\u0438\u0441\u0443\u044e\u0442\u0441\u044f \u0432 SVG, \u0433\u0434\u0435 \u0448\u0438\u0440\u0438\u043d\u0430 \u0438 \u0432\u044b\u0441\u043e\u0442\u0430 \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b &lt;rect width=&#187;\u2026&#187;&gt;, \u0430 \u043d\u0435 \u0441\u0442\u0438\u043b\u044c;\u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u0435\u0442\u0443, JS \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 CSSOM (el.style.setProperty(&#8216;&#8212;glitch-delay&#8217;, &#8216;0s&#8217;)) \u2014 \u044d\u0442\u043e CSP \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442, \u0437\u0430\u043f\u0440\u0435\u0442 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435;\u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 \u043a\u043b\u0430\u0441\u0441\u044b.\u041d\u0438\u043a\u0430\u043a\u0438\u0445 onclick. \u0422\u043e\u043b\u044c\u043a\u043e addEventListener \u0432 \u0441\u0432\u043e\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445.\u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u2014 \u043d\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 &lt;script&gt;, \u0430 &lt;script type=&#187;application\/json&#187;&gt;, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 JSON.parse. \u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u043b\u043e\u0432\u0443\u0448\u043a\u0430: \u0435\u0441\u043b\u0438 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0441\u044f &lt;\/script&gt;, \u0442\u0435\u0433 \u0437\u0430\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041d\u0430 \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u0441\u0442.\u0420\u0430\u043d\u043d\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0438 \u043d\u043e\u0447\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0434\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438, \u0438\u043d\u0430\u0447\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430 \u0434\u043e\u043b\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043c\u0438\u0433\u043d\u0451\u0442 \u043d\u0435 \u0442\u043e\u0439 \u0442\u0435\u043c\u043e\u0439. \u042d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0445 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u0438 \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 nonce.\u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u043b\u043e\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0441\u044f\u0446, \u043a\u043e\u0433\u0434\u0430 \u044f \u0437\u0430\u0431\u0443\u0434\u0443 \u0438 \u043d\u0430\u043f\u0438\u0448\u0443 style= \u0432 \u043d\u043e\u0432\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435, \u2014 \u0442\u0435\u0441\u0442:test(&#8216;CSP: nonce \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u043e\u0432\u044b\u0439, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0431\u0435\u0437 nonce \u0438 style=&#187;&#187; \u043d\u0435\u0442&#8217;, function () use ($hdr) {    [, $h1, $html] = http(&#8216;GET&#8217;, &#8216;\/&#8217;);    [, $h2] = http(&#8216;GET&#8217;, &#8216;\/&#8217;);    preg_match(&#171;\/&#8217;nonce-([^&#8217;]+)&#8217;\/&#187;, $hdr($h1, &#8216;content-security-policy&#8217;), $m1);    preg_match(&#171;\/&#8217;nonce-([^&#8217;]+)&#8217;\/&#187;, $hdr($h2, &#8216;content-security-policy&#8217;), $m2);    check(($m1[1] ?? &#187;) !== &#187; &amp;&amp; $m1[1] !== ($m2[1] ?? &#187;), &#8216;nonce \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f&#8217;);    preg_match_all(&#8216;\/&lt;script\\b[^&gt;]*&gt;\/i&#8217;, $html, $tags);    foreach ($tags[0] as $tag) {        check(str_contains($tag, &#8216;src=&#8217;) || str_contains($tag, &#8216;nonce=&#187;&#8216; . $m1[1] . &#8216;&#187;&#8216;)            || str_contains($tag, &#8216;application\/json&#8217;) || str_contains($tag, &#8216;application\/ld+json&#8217;), &#171;\u0441\u043a\u0440\u0438\u043f\u0442 \u0431\u0435\u0437 nonce: $tag&#187;);    }    check(!preg_match(&#8216;\/\\sstyle\\s*=\/i&#8217;, $html), &#8216;\u0435\u0441\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 style=&#187;&#187;&#8216;);});\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0449\u0451 \u0438 \u043e\u0442\u0447\u0451\u0442\u044b \u043e \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f\u0445 (report-uri \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432, report-to \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445). \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a: \u0437\u0430\u0431\u044b\u0442\u044b\u0439 nonce \u0432 \u043d\u043e\u0432\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u0432 \u0441\u0432\u043e\u0434\u043a\u0435 \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u044f \u0435\u0433\u043e \u0437\u0430\u043c\u0435\u0447\u0443 \u0433\u043b\u0430\u0437\u0430\u043c\u0438. \u0425\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0434\u043a\u0430 \u2014 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430, \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0431\u0435\u0437 \u043f\u0443\u0442\u0438, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0441\u0447\u0451\u0442\u0447\u0438\u043a. \u041d\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043d\u0438 User-Agent. \u041e\u0442\u0447\u0451\u0442\u044b \u043e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (chrome-extension:\/\/\u2026) \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f: \u044d\u0442\u043e \u0448\u0443\u043c, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u0430\u0439\u0442\u0430. \u0418 \u0435\u0441\u0442\u044c \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0432 200 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u2014 \u0438\u043d\u0430\u0447\u0435 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f\u043c\u0438.\u0422\u0435\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0442\u0430\u043a\u0443\u044e\u0442 \u0441\u0432\u043e\u0439 \u0436\u0435 \u0441\u0430\u0439\u0442\u0422\u0435\u0441\u0442\u043e\u0432 \u0434\u0432\u0430 \u043d\u0430\u0431\u043e\u0440\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 php tests\/run.php, 160 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0437\u0430 20 \u0441\u0435\u043a\u0443\u043d\u0434 \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 PHP. \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442: test(), check() \u0438 HTTP-\u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 fsockopen() \u2014 \u044d\u0442\u043e \u043e\u043a\u043e\u043b\u043e 50 \u0441\u0442\u0440\u043e\u043a. \u0421\u0430\u0439\u0442 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c PHP \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u044e\u0442\u0441\u044f.\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u2014 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u0430\u0442\u0430\u043a\u0430. \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u043b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442, \u043b\u0435\u0436\u0438\u0442 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435:const XSS = &#8216;&lt;script&gt;alert(1)&lt;\/script&gt;&lt;img src=x&gt;&#8217;;$data[&#8216;profile&#8217;] = array_merge($data[&#8216;profile&#8217;], [    &#8216;name&#8217;      =&gt; &#8216;Test &#8216; . XSS,    &#8216;bio&#8217;       =&gt; &#171;Bio \\e]0;pwned\\x07\\e[2J&#187; . XSS,   \/\/ escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u2014 \u0434\u043b\u044f curl-\u0432\u0435\u0440\u0441\u0438\u0438    &#8216;specialty&#8217; =&gt; &#8216;&#187;&gt;&lt;svg onload=alert(1)&gt;&#8217;,    \/\/ \u2026]);\u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0432\u044b\u043b\u0435\u0437\u043b\u043e. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0442\u0435\u0441\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e \u0447\u0451\u043c \u0440\u0435\u0447\u044c:\u00ab\u041e\u0442\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u0439 XSS: \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043a\u0430\u043a HTML\u00bb;\u00ab\u041f\u043e\u0434\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 Host \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\u00bb;\u00abSSRF: \/audit.json \u043d\u0435 \u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u00bb;\u00ab\u041f\u0435\u0440\u0435\u0431\u043e\u0440 \u043f\u0430\u0440\u043e\u043b\u044f: \u043f\u043e\u0441\u043b\u0435 5 \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430, \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f\u00bb;\u00abCSRF: \u0431\u0435\u0437 \u0442\u043e\u043a\u0435\u043d\u0430 \u0438\u043b\u0438 \u0441 \u0447\u0443\u0436\u0438\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u00bb;\u00abJPEG: EXIF \u0441 GPS \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f JPEG\u00bb;\u00ab\u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043d\u0435 \u043e\u0442\u0434\u0430\u044e\u0442\u0441\u044f\u00bb \u2014 \/.git\/config, \/data\/site.json, \/..\/ \u0438 \u043f\u0440\u043e\u0447\u0435\u0435;\u00abMarkdown: \u043a\u0430\u0432\u044b\u0447\u043a\u0430 \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u00bb.\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u0430\u0436\u0435\u043d \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e Markdown-\u043f\u0430\u0440\u0441\u0435\u0440 \u0443 \u043c\u0435\u043d\u044f \u0442\u043e\u0436\u0435 \u0441\u0432\u043e\u0439, \u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0430 \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 href \u0438 \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f.\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u2014 \u0442\u0435\u0441\u0442\u044b \u00ab\u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb. \u041a\u043e\u0433\u0434\u0430 \u044f \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u043d\u0430 \u0436\u0438\u0432\u044b\u0445 \u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0445 \u043b\u043e\u0432\u0443\u0448\u043a\u0438, \u0432\u0441\u043f\u043b\u044b\u043b\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0435\u0439, \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430 \u043d\u0435 \u0434\u043e\u0434\u0443\u043c\u0430\u043b\u0430\u0441\u044c: \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b\u0430 \u043c\u0435\u0442\u043a\u0430 \u043e\u0447\u0438\u0441\u0442\u043a\u0438, \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0441\u0443\u043c\u043c\u0430 \u0430\u0442\u0430\u043a \u0438 \u0441\u0435\u0441\u0441\u0438\u0439 \u043d\u0435 \u0441\u0445\u043e\u0434\u0438\u043b\u0430\u0441\u044c, \u0432 \u0432\u044b\u0434\u0430\u0447\u0443 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u043c\u0443\u0441\u043e\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u0430 \u0432 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c -0.0. \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430.\u0422\u0435\u0441\u0442\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432 \u0432\u044b\u043a\u043b\u0430\u0434\u043a\u0443: \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u0435\u043f\u043b\u043e\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u0445 \u0441\u0430\u043c \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0443\u043f\u0430\u043b\u043e. \u041e\u0431\u043e\u0439\u0442\u0438 \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0432\u043d\u043e, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u2014 \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0445\u043e\u0434 \u0431\u044b\u043b \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u0430 \u043d\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u043e\u0439.\u0411\u044e\u0434\u0436\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u0430\u0445PHP-\u0442\u0435\u0441\u0442\u044b \u043d\u0435 \u0432\u0438\u0434\u044f\u0442 \u0432\u0451\u0440\u0441\u0442\u043a\u0443 \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442 JavaScript. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u2014 tests\/browser.py: \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 Chromium \u0447\u0435\u0440\u0435\u0437 DevTools Protocol, \u0431\u0435\u0437 Selenium \u0438 Playwright, \u0442\u043e\u043b\u044c\u043a\u043e python3-websocket. \u041e\u043d \u043e\u0431\u0445\u043e\u0434\u0438\u0442 35 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u2014 \u0442\u0435\u043b\u0435\u0444\u043e\u043d 375\u00d7812 \u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 1280\u00d7800 \u2014 \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442:\u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 CSP;\u043d\u0435\u0442 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u2014 \u0441\u0430\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u0430\u044f \u043c\u043e\u044f \u0432\u0451\u0440\u0441\u0442\u043e\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430;\u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442 \u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0432 \u043e\u0431\u0435\u0438\u0445 \u0442\u0435\u043c\u0430\u0445;\u0432 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430;\u043f\u0440\u043e\u0445\u043e\u0434 \u043a\u043b\u0430\u0432\u0438\u0448\u0435\u0439 Tab: \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0444\u043e\u043a\u0443\u0441\u0435 \u0432\u0438\u0434\u0435\u043d;\u0440\u0435\u0436\u0438\u043c \u00ab\u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u00bb: \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f;\u0431\u044e\u0434\u0436\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.\u0411\u044e\u0434\u0436\u0435\u0442 \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043f\u043e\u0440\u043e\u0433\u0430\u043c\u0438:# \u0421\u0435\u0439\u0447\u0430\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u2248280 \u041a\u0411 \u0438 14\u201319 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432: \u0437\u0430\u043f\u0430\u0441 \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043e\u0434 \u0440\u043e\u0441\u0442,# \u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0442\u044f\u0436\u0451\u043b\u043e\u0435 \u043f\u043e\u043f\u0430\u043b\u043e \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e.BUDGET = {&#8216;kb&#8217;: 400, &#8216;html&#8217;: 80, &#8216;js&#8217;: 150, &#8216;req&#8217;: 25, &#8216;load&#8217;: 1500}\u0412\u0435\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e \u0432\u0441\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u043b\u0430, HTML \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0432\u0440\u0435\u043c\u044f \u0434\u043e load. \u0427\u0438\u0441\u043b\u0430 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u0438\u0437 performance.getEntriesByType() \u043f\u0440\u044f\u043c\u043e \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u043e\u0442\u044f\u0436\u0435\u043b\u0435\u043b\u0430 \u2014 \u0442\u0435\u0441\u0442 \u043f\u0430\u0434\u0430\u0435\u0442.\u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043b\u0438\u0447\u043d\u043e\u043c\u0443 \u0441\u0430\u0439\u0442\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u0435\u0437 \u043f\u043e\u0440\u043e\u0433\u0430 \u0432\u0435\u0441 \u0440\u0430\u0441\u0442\u0451\u0442 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e: \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0432\u0430\u044f \u0444\u0438\u0447\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u00ab\u0432\u0441\u0435\u0433\u043e 20 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u00bb. \u0421 \u043f\u043e\u0440\u043e\u0433\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u044f\u0436\u0451\u043b\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u044f\u0432\u043d\u043e.\u041f\u0440\u043e\u0433\u043e\u043d \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043a\u043e\u043b\u043e \u0442\u0440\u0451\u0445 \u043c\u0438\u043d\u0443\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043a\u043b\u0430\u0434\u043a\u043e\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0434\u0451\u0442 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.\u0422\u0435\u0441\u0442\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448\u043b\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0449\u0438: \u043d\u0430 \u0434\u0432\u0443\u0445 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u2014 \u0442\u0440\u0435\u043d\u0430\u0436\u0451\u0440\u0435 \u0438 \u0444\u043e\u0440\u043c\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0444\u043e\u043a\u0443\u0441\u0435 \u043f\u043e\u0441\u043b\u0435 Tab \u043d\u0435 \u0431\u044b\u043b \u0432\u0438\u0434\u0435\u043d, \u0430 \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0441\u043f\u043b\u044b\u043b\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432.\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0434 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439\u042d\u0442\u043e \u0447\u0430\u0441\u0442\u044c, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0430\u0439\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d: \u043e\u043d \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0431\u043e\u0442\u044b \u0432 SSH-\u043b\u043e\u0432\u0443\u0448\u043a\u0435. \u041d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u044b\u0440\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0445 \u2014 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f. \u0412 \u043d\u0438\u0445 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u044b, \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u0430\u0442, \u0438\u043d\u043e\u0433\u0434\u0430 \u0447\u0443\u0436\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0440\u0430\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043c\u0430\u043b\u0432\u0430\u0440\u044c \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0435\u0436\u0434\u0443 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u043c \u043b\u043e\u0432\u0443\u0448\u043a\u0438 \u0438 \u0441\u0430\u0439\u0442\u043e\u043c \u0441\u0442\u043e\u0438\u0442 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-503152","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/503152","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=503152"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/503152\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=503152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=503152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=503152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}