{"id":500764,"date":"2026-10-29T07:24:21","date_gmt":"2026-10-29T04:24:21","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=500764"},"modified":"2026-10-29T07:24:21","modified_gmt":"2026-10-29T04:24:21","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=500764","title":{"rendered":"\u0427\u0451\u0440\u043d\u044b\u0439 \u043e\u043a\u0442\u044f\u0431\u0440\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439: \u0447\u0442\u043e \u0437\u0430\u0434\u0435\u043b\u043e \u043c\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u0430\u043a \u044f \u0437\u0430\u043a\u0440\u044b\u043b \u0434\u044b\u0440\u044b \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0443\u0448\u0451\u043b \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u043a\u0443 \u0431\u0435\u0437 \u0438\u043d\u043b\u0430\u0439\u043d-\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0423 \u043c\u0435\u043d\u044f \u043a\u0440\u0443\u0433\u043b\u043e\u0441\u0443\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0430\u0433\u0435\u043d\u0442\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430: \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u043a\u0440\u0443\u0433\u0443 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043c\u043e\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0431\u044e\u043b\u043b\u0435\u0442\u0435\u043d\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0438 \u0441\u0432\u0435\u0440\u044f\u044e\u0442 \u0438\u0445 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043a\u0440\u0443\u0433\u0435 \u043e\u043d\u0438 \u043f\u043e\u0434\u043d\u044f\u043b\u0438 \u043e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0443\u044e \u0441\u0432\u043e\u0434\u043a\u0443: 15 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0437\u0430 \u043c\u0435\u0441\u044f\u0446, \u0432\u0441\u0435 \u00abcritical\u00bb \u0438 \u00abhigh\u00bb \u2014 PHP, Nginx, Node.js, Next.js, Java, GitLab. \u0422\u0430\u043a\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u043b\u0438\u0441\u0442\u044b\u0432\u0430\u044e\u0442. \u042f \u0441\u0435\u043b \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0440\u0443\u043a\u0430\u043c\u0438: \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0437\u0430\u0434\u0435\u0432\u0430\u0435\u0442 \u043b\u0438 \u043c\u0435\u043d\u044f \u0438 \u0447\u0435\u043c \u044d\u0442\u043e \u043b\u0435\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0418\u0442\u043e\u0433 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430:<\/p>\n<ul>\n<li>\n<p>\u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0432\u043e\u0434\u043a\u0438 \u043c\u0435\u043d\u044f <strong>\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0435\u043b\u0438<\/strong>: Node.js \u0431\u044b\u043b \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d \u0447\u0435\u0442\u044b\u0440\u0435 \u0434\u043d\u044f, \u0430 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0438 Nginx \u0435\u0449\u0451 \u043d\u0435 \u0441\u0442\u043e\u044f\u043b\u0438 \u0432 \u0442\u043e\u0442 \u0432\u0435\u0447\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u044f \u0441\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u2014 \u0445\u043e\u0442\u044f \u044f \u0441\u0447\u0438\u0442\u0430\u043b, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u2014 \u043d\u0435 \u0442\u043e, \u0447\u0435\u043c \u043a\u0430\u0436\u0443\u0442\u0441\u044f: \u00abcritical\u00bb \u0443 Nginx \u2014 \u044d\u0442\u043e \u043e\u0446\u0435\u043d\u043a\u0430 CVSS, \u0430 \u0441\u0430\u043c nginx.org \u0441\u0442\u0430\u0432\u0438\u0442 \u00abmedium\u00bb; \u0430 \u043e\u0434\u043d\u0430 \u00ab\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c Next.js\u00bb \u043d\u0430 \u0434\u0435\u043b\u0435 \u0441\u0438\u0434\u0438\u0442 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0434\u043b\u044f SVG, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0433\u0434\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u2014 \u0441 Next.js \u0438\u043b\u0438 \u0431\u0435\u0437;<\/p>\n<\/li>\n<li>\n<p>PHP-\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044f \u043d\u0435 \u0437\u0430\u0434\u0435\u043b\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435: PHP \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u2014 \u043d\u0435 \u0432\u0435\u0437\u0435\u043d\u0438\u0435. \u0412 \u0438\u044e\u043d\u0435 \u044f \u043f\u0438\u0441\u0430\u043b \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u0441\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435\u043c \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 <a href=\"https:\/\/easylinklife.com\/\" rel=\"noopener nofollow\">easylinklife.com<\/a> \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 (<a href=\"https:\/\/habr.com\/ru\/articles\/1042228\/\" rel=\"noopener nofollow\">\u00abLighthouse 100\/100\u2026\u00bb<\/a>). \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u044f \u0441\u043d\u044f\u043b \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043d\u0430 132 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043d\u043b\u0430\u0439\u043d-\u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u043e\u0448\u0451\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043b\u043e\u0448\u043d\u044b\u0445 \u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0445\u043e\u0434\u0438\u043b \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u00ab\u043f\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u043c\u0435\u0441\u0442\u0430\u043c\u00bb.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u0442\u0440\u0438 \u0447\u0430\u0441\u0442\u0438. \u041f\u0435\u0440\u0432\u0430\u044f \u2014 \u0440\u0430\u0437\u0431\u043e\u0440 \u00ab\u0447\u0451\u0440\u043d\u043e\u0433\u043e \u043e\u043a\u0442\u044f\u0431\u0440\u044f\u00bb \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0442\u043e \u0436\u0435 \u0443 \u0441\u0435\u0431\u044f. \u0412\u0442\u043e\u0440\u0430\u044f \u2014 \u0447\u0442\u043e \u044f \u0443\u0431\u0440\u0430\u043b \u0441 \u0441\u0430\u0439\u0442\u0430 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443. \u0422\u0440\u0435\u0442\u044c\u044f \u2014 \u0434\u044b\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0430\u0448\u0451\u043b \u0443 \u0441\u0435\u0431\u044f \u0437\u0430 \u0434\u0432\u0430 \u043c\u0435\u0441\u044f\u0446\u0430, \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0445 \u043d\u0430\u0439\u0442\u0438 \u0443 \u0432\u0430\u0441. \u0421\u0442\u0435\u043a: Astro 7 (\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430), Strapi 5 \u043a\u0430\u043a CMS \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438, Nginx, Ubuntu 24.04, \u043e\u0434\u0438\u043d VPS.<\/p>\n<hr\/>\n<h3>\u0427\u0430\u0441\u0442\u044c 1. \u0427\u0451\u0440\u043d\u044b\u0439 \u043e\u043a\u0442\u044f\u0431\u0440\u044c \u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0439<\/h3>\n<h4>\u0421\u0432\u043e\u0434\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0427\u0442\u043e<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 (\u043f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a)<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041c\u0435\u043d\u044f \u0437\u0430\u0434\u0435\u043b\u043e?<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">PHP CVE-2026-109618, 109619<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430, CVSS 9.2; PHP 8.5.12 \/ 8.4.27 \/ 8.3.36 \/ 8.2.35 \u043e\u0442 21.10<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 \u2014 PHP \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Nginx CVE-2026-15176<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u0440\u0438 <code>alias<\/code> + <code>rewrite<\/code> \u0432 \u043e\u0434\u043d\u043e\u043c location<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438; \u043f\u0430\u043a\u0435\u0442 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u044b\u043b \u0441\u0442\u0430\u0440\u044b\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Nginx CVE-2026-93479<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445; \u043f\u043e nginx.org \u2014 \u0432\u0435\u0442\u043a\u0438 1.30\u20131.31, Ubuntu \u0437\u0430\u043a\u0440\u044b\u043b\u0430 \u0438 \u0432 1.24<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0431\u044b\u043b \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Nginx CVE-2026-97205<\/p>\n<\/td>\n<td>\n<p align=\"left\">use-after-free \u043f\u0440\u0438 <code>aio<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 <code>aio<\/code>; \u043f\u0430\u043a\u0435\u0442 \u0431\u044b\u043b \u0441\u0442\u0430\u0440\u044b\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Node CVE-2026-111497<\/p>\n<\/td>\n<td>\n<p align=\"left\">Brotli \u0432 zlib Node, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0431\u044b\u043b \u043e\u0442\u043a\u0440\u044b\u0442 4 \u0434\u043d\u044f<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0442\u0430 \u0436\u0435 CVE \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c <code>libbrotli1<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 Brotli; Ubuntu \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0443 25.10<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0431\u044b\u043b\u0430 \u0441\u0442\u0430\u0440\u0430\u044f \u2014 \u043e\u0431\u043d\u043e\u0432\u0438\u043b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Nginx<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Node CVE-2026-105482, 106069<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0432 <code>dns.resolve<\/code>, \u043d\u0435\u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 IP \u0432 TLS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0437\u0430\u043a\u0440\u044b\u0442\u043e \u0442\u0435\u043c \u0436\u0435 22.23.4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Node CVE-2026-105483<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 IP \u0432 TLS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442: \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0442\u043a\u0438 24 \u0438 26<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u00abNext.js\u00bb CVE-2026-96889<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>librsvg<\/strong> (SVG) \u0432\u043d\u0443\u0442\u0440\u0438 sharp; Next.js \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u0441\u0432\u043e\u0439 critical GHSA-2464-fhr4-w9xw \u043d\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b: sharp 0.35.5 \u0441 librsvg 2.63.2 \u2014 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Next.js GHSA-673q-mjm6-r5xr<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 <code>use cache<\/code> (16.0\u201316.4.0)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 Next.js<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Next.js GHSA-p3m5-59mp-jv5r<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0442\u043a\u0430\u0437 \u0432 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 Server Actions<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 Next.js<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Java CVE-2026-91403<\/p>\n<\/td>\n<td>\n<p align=\"left\">JSSE (TLS \u0432 Java), CVSS 9.1, \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u043f\u043e \u0441\u0435\u0442\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 Java<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">GitLab CVE-2026-110264<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, CVSS 10, \u0432\u0435\u0440\u0441\u0438\u0438 \u0441 7.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 GitLab<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">GitLab CVE-2026-97229<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u043e \u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0443 \u0432 CI\/CD, CVSS 10, 19.2\u201319.4<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 GitLab<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0438 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043f\u0440\u043e \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<h4>\u041f\u0440\u0430\u0432\u0438\u043b\u043e, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e: \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 \u0432\u0440\u0451\u0442<\/h4>\n<p>\u041d\u0430 Ubuntu 24.04 <code>php -v<\/code> \u043f\u043e\u043a\u0430\u0436\u0435\u0442 <code>8.3.6<\/code>, <code>nginx -v<\/code> \u2014 <code>1.24.0<\/code>. \u041f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u044d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u0432\u0443\u0445\u043b\u0435\u0442\u043d\u0435\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438, \u0438 \u043b\u044e\u0431\u043e\u0439 \u0441\u043a\u0430\u043d\u0435\u0440 \u00ab\u043f\u043e \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u00bb \u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0442 \u0438\u0445 \u0432 \u043a\u0440\u0430\u0441\u043d\u044b\u0439. \u041d\u043e Ubuntu \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e \u2014 \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0438 \u0432 \u0441\u0442\u0430\u0440\u0443\u044e. \u0422\u0430\u043a, \u043f\u0430\u043a\u0435\u0442 <code>php8.3<\/code> \u0432\u0435\u0440\u0441\u0438\u0438 <code>8.3.6-0ubuntu0.24.04.13<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0435\u0438\u0445 \u043e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0445 RCE, \u0445\u043e\u0442\u044f \u043d\u043e\u043c\u0435\u0440 \u0443 \u043d\u0435\u0433\u043e 8.3.6.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u043b\u0438 CVE\u00bb \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435 \u043d\u043e\u043c\u0435\u0440\u0443 \u0432\u0435\u0440\u0441\u0438\u0438, \u0430 \u0436\u0443\u0440\u043d\u0430\u043b\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0430\u043a\u0435\u0442\u0430:<\/p>\n<pre><code class=\"bash\"># \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f CVE \u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435apt-get changelog php8.3-fpm | grep -m1 -E \"CVE-2026-109618|CVE-2026-109619\"apt-get changelog nginx     | grep -oE \"CVE-2026-[0-9]+\" | sort -u# \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0438 \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044fapt-cache policy nginx php8.3-fpm<\/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>\u0415\u0441\u043b\u0438 \u0432 <code>Candidate<\/code> \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u043e\u0432\u0435\u0435 <code>Installed<\/code>, \u0430 \u0432 \u0435\u0451 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u0435\u0441\u0442\u044c \u0432\u0430\u0448\u0430 CVE \u2014 \u0432\u044b \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b. \u0420\u043e\u0432\u043d\u043e \u0442\u0430\u043a \u044f \u0438 \u043d\u0430\u0448\u0451\u043b \u0443 \u0441\u0435\u0431\u044f Nginx.<\/p>\n<h4>PHP2Shell: CVE-2026-109618 \u0438 109619<\/h4>\n<p>\u041d\u0430 php.net 21 \u043e\u043a\u0442\u044f\u0431\u0440\u044f: \u00abfix two critical vulnerabilities that can allow unauthenticated remote code execution\u00bb \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430. \u041e\u0431\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a PHP \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (\u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, <code>longjmp<\/code>): \u0447\u0430\u0441\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0443\u0436\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. 26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f CISA \u0432\u043d\u0435\u0441\u043b\u0430 \u043e\u0431\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 <strong>\u0443\u0436\u0435 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f<\/strong> (Known Exploited Vulnerabilities), \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0443\u0433\u0440\u043e\u0437\u0430.<\/p>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c:<\/strong><\/p>\n<pre><code class=\"bash\">php -vdpkg -l | grep -E \"^ii  php[0-9.]+-(fpm|cli|common)\" | awk '{print $2, $3}'# Ubuntu\/Debian, \u043f\u0430\u043a\u0435\u0442\u044b \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u2014 \u0438\u0449\u0435\u043c CVE \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435:apt-get changelog php8.3-fpm | grep -m1 CVE-2026-109618# \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a (\u0438\u043c\u044f \u0441\u043b\u0443\u0436\u0431\u044b \u2014 \u043f\u043e \u0432\u0430\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438):sudo apt-get update &amp;&amp; sudo apt-get install --only-upgrade 'php8.3*'sudo systemctl restart php8.3-fpm# PHP \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f ondrej\/php \u0438\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0441\u0430\u043c \u2014 \u043d\u0443\u0436\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0435 \u043d\u0438\u0436\u0435 8.5.12 \/ 8.4.27 \/ 8.3.36 \/ 8.2.35<\/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 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438: \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 FPM \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u043c \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u2014 <code>sudo lsof -n | grep -E \"php.*(deleted)\"<\/code>: \u043f\u0443\u0441\u0442\u043e \u2014 \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e.<\/p>\n<p><strong>\u0415\u0441\u043b\u0438 \u0441\u0430\u0439\u0442 \u0431\u044b\u043b \u043e\u0442\u043a\u0440\u044b\u0442 \u0434\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u2014 \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u044b.<\/strong> \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 PHP-\u0441\u0430\u0439\u0442\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u043c-\u0448\u0435\u043b\u043b\u043e\u043c. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0441\u043c\u043e\u0442\u0440:<\/p>\n<pre><code class=\"bash\"># PHP-\u0444\u0430\u0439\u043b\u044b, \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0435 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0442\u0440\u0438 \u043d\u0435\u0434\u0435\u043b\u0438 (\u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0432\u044b\u043a\u0430\u0442\u0430\u043c\u0438)sudo find \/var\/www -type f -name \"*.php\" -newermt \"2026-10-07\" -printf \"%TY-%Tm-%Td %p\\n\" | sort# PHP \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0433\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043esudo find \/var\/www -path \"*\/uploads\/*\" -name \"*.php*\"# \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0448\u0435\u043b\u043b\u043e\u0432 (\u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u2014 \u0447\u0438\u0442\u0430\u0442\u044c \u0433\u043b\u0430\u0437\u0430\u043c\u0438)sudo grep -rlE --include=\"*.php\" \"eval\\(\\s*(base64_decode|gzinflate|str_rot13)|assert\\(\\s*\\\\\\$_(POST|GET|REQUEST)|preg_replace\\(.*\/e\" \/var\/www<\/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\u043b\u044f WordPress \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u0434\u0451\u0436\u043d\u0435\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c \u2014 \u0441\u0432\u0435\u0440\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c\u0438 \u0441\u0443\u043c\u043c\u0430\u043c\u0438 \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 (WP-CLI):<\/p>\n<pre><code class=\"bash\">wp core verify-checksumswp plugin verify-checksums --allwp user list --role=administrator --fields=ID,user_login,user_registered<\/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\u043e\u0432\u044b\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438, \u2014 \u044d\u0442\u043e \u043d\u0435 \u00ab\u0431\u0430\u0433\u00bb, \u0430 \u0432\u0437\u043b\u043e\u043c: \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u043a\u043b\u044e\u0447\u0438 \u0438\u0437 <code>wp-config.php<\/code>, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<h4>Nginx: \u00abcritical\u00bb \u0432 \u0441\u0432\u043e\u0434\u043a\u0435, \u00abmedium\u00bb \u043d\u0430 nginx.org \u2014 \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0431\u044b\u043b\u043e \u043d\u0430\u0434\u043e<\/h4>\n<p>\u0412\u0441\u0435 \u043f\u044f\u0442\u044c \u043e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 nginx.org \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b <strong>medium<\/strong> \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 1.31.7+ \u0438 1.30.6+. \u0412 NVD \u0443 \u0442\u0435\u0445 \u0436\u0435 15176 \u0438 97205 \u2014 CVSS v4 9.2: \u00abcritical\u00bb \u0432 \u0441\u0432\u043e\u0434\u043a\u0435 \u0432\u0437\u044f\u0442 \u043e\u0442\u0442\u0443\u0434\u0430. \u0420\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c\u043e: nginx.org \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0417\u0430\u0434\u0435\u0432\u0430\u044e\u0442 \u043e\u043d\u0438 \u043d\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u0443\u044e, \u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<pre><code>CVE-2026-15176   alias \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 rewrite \u0432 \u043e\u0434\u043d\u043e\u043c locationCVE-2026-93479   \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 (\u043f\u043e nginx.org \u2014 1.30.0\u20131.30.5 \u0438 1.31.2\u20131.31.6)CVE-2026-97205   aioCVE-2026-97629   ssl_session_tickets (\u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0430 TLS-\u0441\u0435\u0441\u0441\u0438\u0438)CVE-2026-95101   HTTP\/3<\/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>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u0432\u0430\u0441 \u044d\u0442\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b:<\/p>\n<pre><code class=\"bash\">sudo nginx -T 2&gt;\/dev\/null | grep -nE \"^\\s*(aio|alias|rewrite|ssl_session_tickets|http3|listen .*quic)\"<\/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>\u0423 \u043c\u0435\u043d\u044f \u2014 \u0442\u043e\u043b\u044c\u043a\u043e <code>ssl_session_tickets off;<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0438 \u043e\u0434\u043d\u0430 \u043c\u0435\u043d\u044f \u043d\u0435 \u0437\u0430\u0434\u0435\u0432\u0430\u043b\u0430. \u041d\u0430 \u044d\u0442\u043e\u043c \u044f \u0431\u044b \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430. Ubuntu \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 <code>nginx 1.24.0-2ubuntu7.19<\/code> \u0441 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0430\u043c\u0438 \u043e\u0442 15176, 93479, 97205 \u0438 97629, \u0430 \u0443 \u043c\u0435\u043d\u044f \u0441\u0442\u043e\u044f\u043b <code>7.18<\/code>:<\/p>\n<pre><code class=\"bash\">$ apt-cache policy nginx  Installed: 1.24.0-2ubuntu7.18  Candidate: 1.24.0-2ubuntu7.19<\/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><strong>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u0441\u0430\u043c\u043e, \u0445\u043e\u0442\u044f <\/strong><code><strong>unattended-upgrades<\/strong><\/code><strong> \u0432\u043a\u043b\u044e\u0447\u0451\u043d.<\/strong> \u041d\u0435 \u043f\u043e\u043b\u043e\u043c\u043a\u0430 \u2014 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0430\u043b\u043e \u0432 \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u00abNo packages found that can be upgraded unattended\u00bb. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0431\u044b \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u0442\u043a\u0438. \u041e\u043a\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043e\u043a\u043e\u043b\u043e \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u0441\u0443\u0442\u043e\u043a \u2014 \u0434\u043b\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044e\u0442 \u0432\u0441\u0435, \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e. <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/99\/76\/18\/997618df4a73298625063f548a3e7d4c.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/99\/76\/18\/997618df4a73298625063f548a3e7d4c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/99\/76\/18\/997618df4a73298625063f548a3e7d4c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p> \u041c\u043e\u0439 \u0436\u0435 \u0430\u0433\u0435\u043d\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u0432\u0438\u0434\u0435\u043b: \u0432 \u0435\u0433\u043e \u043e\u0442\u0447\u0451\u0442\u0435 \u0441\u0442\u043e\u044f\u043b\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u00ab\u0436\u0434\u0451\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f: nginx \u20267.19\u00bb. \u041d\u043e \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439, \u043d\u0435 \u0442\u0440\u0435\u0432\u043e\u0433\u043e\u0439: \u0434\u043b\u044f Nginx \u0430\u0433\u0435\u043d\u0442 \u0441\u0447\u0438\u0442\u0430\u043b \u0442\u0440\u0435\u0432\u043e\u0433\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0434\u0435\u0432\u0430\u0435\u0442 \u043c\u043e\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u043c\u043e\u043b\u0447\u0430\u0449\u0435\u0435 \u0442\u0440\u043e\u0435 \u0441\u0443\u0442\u043e\u043a, \u2014 \u0430 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438 \u0442\u043e\u0433\u043e, \u043d\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u0412\u044b\u0432\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e\u0439: <strong>\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0436\u0434\u0451\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u2014 \u0443\u0436\u0435 \u043f\u043e\u0432\u043e\u0434 \u0434\u043b\u044f \u0442\u0440\u0435\u0432\u043e\u0433\u0438<\/strong>, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0437\u0430\u0434\u0435\u0432\u0430\u0435\u0442 \u043b\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0430\u0448 \u043a\u043e\u043d\u0444\u0438\u0433. \u0422\u0435\u043f\u0435\u0440\u044c \u0430\u0433\u0435\u043d\u0442 \u0442\u0430\u043a \u0438 \u0434\u0435\u043b\u0430\u0435\u0442: \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 <code>*-security<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d \u0432\u0438\u0434\u0438\u0442 \u0434\u043e\u043b\u044c\u0448\u0435 \u0441\u0443\u0442\u043e\u043a, \u2014 \u0442\u0440\u0435\u0432\u043e\u0433\u0430. <\/p>\n<p>\u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043e\u043a\u043d\u0435:<\/p>\n<pre><code class=\"bash\"># \u0447\u0442\u043e \u0438\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0436\u0434\u0451\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441apt list --upgradable 2&gt;\/dev\/null | grep -- -security# \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043b\u0438 \u0438 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437systemctl is-enabled unattended-upgrades apt-daily-upgrade.timersudo tail -20 \/var\/log\/unattended-upgrades\/unattended-upgrades.logsystemctl list-timers 'apt-daily*' --no-pager# \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0431\u044b \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 (\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442)sudo unattended-upgrade --dry-run --debug 2&gt;&amp;1 | grep -A5 \"pkgs that look like they should be upgraded\"<\/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>\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u2014 \u0441 \u043a\u043e\u043f\u0438\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0430, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <code>nginx -t<\/code>:<\/p>\n<pre><code class=\"bash\">sudo tar -czf \/root\/nginx-before-$(date +%F).tar.gz -C \/ etc\/nginxsudo apt-get updatesudo apt-get install --only-upgrade -o Dpkg::Options::=--force-confold nginx nginx-commonsudo nginx -t &amp;&amp; systemctl is-active nginxcurl -s -o \/dev\/null -w \"%{http_code}\\n\" --resolve example.com:443:127.0.0.1 https:\/\/example.com\/<\/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><code>--force-confold<\/code> \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0430\u0448\u0438 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u0438\u043d\u0435\u0441\u0451\u0442 \u0441\u0432\u043e\u0438. <code>--resolve<\/code> \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0436\u0435 Nginx \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c SNI \u2014 \u0442\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 DNS \u0438 \u043a\u044d\u0448\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u043c\u0438 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.<\/p>\n<h4>Node.js: 21 \u043e\u043a\u0442\u044f\u0431\u0440\u044f, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 unattended-upgrades \u0435\u0433\u043e \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430<\/h4>\n<p>21 \u043e\u043a\u0442\u044f\u0431\u0440\u044f Node \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b 22.23.4, 24.22.1 \u0438 26.12.1. \u0414\u043b\u044f \u0432\u0435\u0442\u043a\u0438 22 \u0437\u0430\u043a\u0440\u044b\u0442\u044b \u0448\u0435\u0441\u0442\u044c CVE, \u0441\u0430\u043c\u0430\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u2014 111497, \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a\u0435 Brotli \u0432\u043d\u0443\u0442\u0440\u0438 Node \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430. 105483 \u0438\u0437 \u0441\u0432\u043e\u0434\u043a\u0438 \u0432\u0435\u0442\u043a\u0443 22 \u043d\u0435 \u0437\u0430\u0434\u0435\u0432\u0430\u0435\u0442: \u044d\u0442\u043e \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f, \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0430\u044f\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 24 \u0438 26.<\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f 22.23.2 \u043f\u0440\u043e\u0441\u0442\u043e\u044f\u043b \u0447\u0435\u0442\u044b\u0440\u0435 \u0434\u043d\u044f, \u043f\u043e\u043a\u0430 \u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0430\u0433\u0435\u043d\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043c\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0442\u043e\u043c, \u043e\u0442\u043a\u0443\u0434\u0430 Node \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d: \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f NodeSource. <code>unattended-upgrades<\/code> \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 <code>Allowed-Origins<\/code>, \u0430 \u0442\u0430\u043c Ubuntu \u0438 \u0435\u0451 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, NodeSource \u2014 \u043d\u0435\u0442. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0443 \u0441\u0435\u0431\u044f:<\/p>\n<pre><code class=\"bash\">node -vapt-cache policy nodejs | head -3        # \u043e\u0442\u043a\u0443\u0434\u0430 \u043f\u0430\u043a\u0435\u0442grep -A6 \"Allowed-Origins\" \/etc\/apt\/apt.conf.d\/50unattended-upgrades<\/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>\u0415\u0441\u043b\u0438 Node \u043f\u0440\u0438\u0448\u0451\u043b \u043d\u0435 \u0438\u0437 Ubuntu, \u043e\u043d \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0443\u043a\u0430\u043c\u0438:<\/p>\n<pre><code class=\"bash\">sudo apt-get update &amp;&amp; sudo apt-get install --only-upgrade nodejsnode -v# \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 Node: pm2, systemd-\u0441\u043b\u0443\u0436\u0431\u044bsudo pm2 restart &lt;\u0438\u043c\u044f&gt; &amp;&amp; sudo pm2 reset &lt;\u0438\u043c\u044f&gt;   # \u043f\u043e \u0438\u043c\u0435\u043d\u0438, \u043d\u0435 \u00aball\u00bb<\/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><strong>Brotli \u2014 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e Node.<\/strong> \u041e\u0448\u0438\u0431\u043a\u0430 111497 \u0441\u0438\u0434\u0438\u0442 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 Brotli, \u0430 Node \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0441\u0451\u0442 \u0435\u0451 \u043a\u043e\u043f\u0438\u044e \u0432\u043d\u0443\u0442\u0440\u0438. \u0422\u0430 \u0436\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0435\u0441\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 (<code>libbrotli1<\/code>), \u0438 \u0441\u0432\u043e\u044e \u043a\u043e\u043f\u0438\u044e \u043d\u0435\u0441\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Python-\u043f\u0430\u043a\u0435\u0442 <code>brotli<\/code>: \u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. Ubuntu \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 <code>libbrotli1 1.1.0-2ubuntu0.1<\/code> \u0441 \u044d\u0442\u043e\u0439 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u043e\u0439 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f; \u0443 \u043c\u0435\u043d\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u0435\u0440\u0436\u0430\u043b\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 Nginx \u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a. \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u043c\u0430\u043b\u043e \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0441\u0442\u0430\u0440\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0434\u0435\u0440\u0436\u0438\u0442:<\/p>\n<pre><code class=\"bash\">apt-get changelog libbrotli1 | grep -m1 CVE-2026-111497      # \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0430 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435apt list --upgradable 2&gt;\/dev\/null | grep -i brotli            # \u0436\u0434\u0451\u0442 \u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438sudo grep -l 'libbrotli.*(deleted)' \/proc\/[0-9]*\/maps 2&gt;\/dev\/null   # \u043a\u0442\u043e \u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u2014 \u043f\u0443\u0441\u0442\u043epip list 2&gt;\/dev\/null | grep -i brotli                         # Python-\u043f\u0430\u043a\u0435\u0442\u044b \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043f\u0438\u0435\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 icon-only\"><\/span><\/a><\/div><\/pre>\n<p><strong>\u041d\u043e\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u2014 \u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/strong> \u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0451\u043c \u0441\u0430\u0439\u0442\u0435 apt \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b Node 22.23.4 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u0434\u043d\u0451\u043c, \u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043d\u0430 22.23.2: \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438 \u0441\u0430\u043c \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. \u041f\u0435\u0440\u0435\u0448\u043b\u043e \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0432\u044b\u043a\u0430\u0442\u0435. \u0422\u043e \u0436\u0435 \u0441 FPM \u0443 PHP \u0438 \u0441 \u043b\u044e\u0431\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439. \u041f\u0440\u043e\u0446\u0435\u0441\u0441, \u0447\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0437\u0430\u043c\u0435\u043d\u0451\u043d \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u0432\u0438\u0434\u043d\u043e \u0441\u0440\u0430\u0437\u0443:<\/p>\n<pre><code class=\"bash\">sudo ls -l \/proc\/[0-9]*\/exe 2&gt;\/dev\/null | grep '(deleted)'   # \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u043esudo needrestart -b                                          # \u0442\u043e \u0436\u0435 \u0438 \u0434\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0435\u0441\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u0441\u0442\u043e\u0438\u0442<\/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>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e: \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043a\u043e\u043f\u0438\u044e <code>sleep<\/code> \u0438 \u0443\u0434\u0430\u043b\u0438\u043b \u0435\u0451 \u0444\u0430\u0439\u043b \u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0448\u043b\u0430\u0441\u044c \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u043d\u0430.<\/p>\n<h4>\u00abNext.js\u00bb CVE-2026-96889, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0440\u043e sharp<\/h4>\n<p>\u0412 \u0441\u0432\u043e\u0434\u043a\u0435 \u044d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434 Next.js. \u0412 \u0431\u0430\u0437\u0435 NVD CVE-2026-96889 \u2014 \u044d\u0442\u043e <strong>librsvg<\/strong>, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 SVG: use-after-free \u043f\u0440\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 SVG \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 XInclude \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430. Next.js \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u043d\u0430 \u043d\u0435\u0451 \u0441\u0432\u043e\u0439 \u0431\u044e\u043b\u043b\u0435\u0442\u0435\u043d\u044c GHSA-2464-fhr4-w9xw \u0443\u0440\u043e\u0432\u043d\u044f critical: \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a, \u0435\u0441\u043b\u0438 \u0435\u043c\u0443 \u043f\u043e\u0434\u0441\u0443\u043d\u0443\u0442\u044c SVG. \u041e\u0431\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0443\u0442\u044c \u0432 \u0431\u044e\u043b\u043b\u0435\u0442\u0435\u043d\u0435 \u2014 <code>sharp<\/code> \u043d\u0435 \u043d\u0438\u0436\u0435 0.35.5.<\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0440\u0430\u0437 Next.js \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u2014 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041d\u043e librsvg \u2014 \u0432\u043d\u0443\u0442\u0440\u0438 libvips, \u0430 libvips \u2014 \u0432\u043d\u0443\u0442\u0440\u0438 <code>sharp<\/code>, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u043b\u044e\u0431\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 Node: Strapi, Next.js, Payload, \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 SVG \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 sharp \u2014 \u044d\u0442\u043e \u0432\u0430\u0448\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0441 Next.js \u0438\u043b\u0438 \u0431\u0435\u0437. \u0418 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0430\u043c Next.js \u043c\u0430\u043b\u043e: \u0441\u0442\u0430\u0440\u044b\u0439 <code>sharp<\/code> \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0432 lock-\u0444\u0430\u0439\u043b\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u0434\u043e \u0435\u0433\u043e.<\/p>\n<pre><code class=\"bash\"># \u0432\u0435\u0440\u0441\u0438\u044f librsvg \u0432\u043d\u0443\u0442\u0440\u0438 sharp (\u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430)node -e \"console.log(require('sharp').versions.rsvg)\"# \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430dpkg -l | grep librsvg2-2apt-get changelog librsvg2-2 | grep -m1 CVE-2026-96889<\/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>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432 librsvg 2.63.2. \u0423 \u043c\u0435\u043d\u044f <code>sharp 0.35.5<\/code> \u043d\u0435\u0441\u0451\u0442 \u0440\u043e\u0432\u043d\u043e 2.63.2, \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0442\u043e\u0436\u0435 \u0441 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u043e\u0439. \u041f\u043b\u044e\u0441 \u043c\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a SVG \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442 \u0432\u043e\u0432\u0441\u0435, \u0430 Nginx \u043e\u0442\u0434\u0430\u0451\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 (\u043e \u043d\u0435\u0439 \u043d\u0438\u0436\u0435). \u0421\u0442\u0440\u043e\u043a\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u0442\u0440\u0438\u0436\u0434\u044b, \u043d\u043e \u0443\u0437\u043d\u0430\u043b \u044f \u044d\u0442\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b.<\/p>\n<p>\u0414\u0432\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 Next.js \u0438\u0437 \u0441\u0432\u043e\u0434\u043a\u0438 \u2014 \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435: GHSA-673q-mjm6-r5xr (\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 <code>use cache<\/code>, 16.0\u201316.4.0, \u043e\u0431\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u043d\u0435\u0442) \u0438 GHSA-p3m5-59mp-jv5r (\u043e\u0442\u043a\u0430\u0437 \u0432 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 Server Actions). \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u043b\u0435\u0447\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"bash\">npm ls next sharpnpm install next@16.4.1      # \u0434\u043b\u044f \u0432\u0435\u0442\u043a\u0438 15 \u2014 \u043d\u0435 \u043d\u0438\u0436\u0435 15.5.28npm ls sharp                 # \u043d\u0435 \u043d\u0438\u0436\u0435 0.35.5<\/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>Java CVE-2026-91403 \u0438 GitLab CVE-2026-110264, 97229<\/h4>\n<p>\u041d\u0438 Java, \u043d\u0438 GitLab \u043d\u0430 \u043c\u043e\u0451\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435\u0442, \u043d\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code class=\"bash\">java -version 2&gt;&amp;1 | head -1# \u0443\u044f\u0437\u0432\u0438\u043c\u044b Oracle Java SE 8u511, 11.0.33, 17.0.21, 21.0.13, 25.0.5, 27.0.1 \u0438 GraalVM \u0442\u0435\u0445 \u0436\u0435 \u043b\u0438\u043d\u0438\u0439:# \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 (Oracle CPU 21.10) \u0438\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0443 OpenJDK \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u043f\u043e\u0441\u043b\u0435 21.10apt-get changelog openjdk-21-jre-headless | grep -m1 CVE-2026-91403# GitLab: \u0432\u0435\u0440\u0441\u0438\u044fsudo gitlab-rake gitlab:env:info | grep \"GitLab information\" -A2# 110264 \u2014 CVSS 10, \u0432\u0441\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441 7.0: \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432 18.11.13, 19.0.10, 19.1.9, 19.2.9, 19.3.6, 19.4.3, 19.5.1# 97229  \u2014 CVSS 10, 19.2\u201319.4:      \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432 19.2.8, 19.3.5, 19.4.2<\/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>\u0423 \u043e\u0431\u0435\u0438\u0445 GitLab-\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f \u043f\u0440\u0438\u0440\u043e\u0434\u0430: \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 GitLab \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u2014 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f, \u0430 \u043d\u0435 \u0432 \u043e\u043a\u043d\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<h4>\u0427\u0442\u043e \u0435\u0449\u0451 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0432 \u0442\u043e\u0442 \u0436\u0435 \u0432\u0435\u0447\u0435\u0440: npm audit<\/h4>\n<p>\u0421\u0432\u043e\u0434\u043a\u0430 \u043f\u0440\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u043d\u043e \u0442\u043e\u0442 \u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430\u0434\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c. \u041c\u043e\u0439 \u0433\u0435\u0439\u0442 \u0432\u044b\u043a\u0430\u0442\u0430 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0443, \u0435\u0441\u043b\u0438 \u0443 <strong>\u0441\u0430\u0439\u0442\u0430<\/strong> \u0435\u0441\u0442\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c. \u0421\u0442\u043e\u0440\u043e\u0436 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0440\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 \u0433\u043e\u043d\u044f\u0435\u0442 <code>npm audit<\/code> \u0438 \u0434\u043b\u044f CMS. 22 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u043e\u043d \u043f\u0440\u0438\u0441\u043b\u0430\u043b \u00ab6 \u043d\u043e\u0432\u044b\u0445 (critical 0)\u00bb \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0440\u043e\u0447\u043d\u043e\u0433\u043e. 23-\u0433\u043e \u0430\u0443\u0434\u0438\u0442 \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b critical 1, \u043d\u043e \u0442\u0440\u0435\u0432\u043e\u0433\u0430 \u043d\u0435 \u0443\u0448\u043b\u0430: \u0441\u0442\u043e\u0440\u043e\u0436 \u043f\u0438\u0448\u0435\u0442 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0442\u043e \u0436\u0435 \u2014 \u00ab\u0431\u0435\u0434\u0430, \u0443\u0436\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u043e\u00bb. \u041a\u0440\u0438\u0442\u0438\u0447\u043d\u0430\u044f DOMPurify \u043f\u044f\u0442\u044c \u0434\u043d\u0435\u0439 \u043b\u0435\u0436\u0430\u043b\u0430 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u043c\u043e\u043b\u0447\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u043e\u0441\u0442 \u0447\u0438\u0441\u043b\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0434\u0443\u0449\u0435\u0439 \u0431\u0435\u0434\u044b \u2014 \u0442\u0440\u0435\u0432\u043e\u0433\u0430 \u0437\u0430\u043d\u043e\u0432\u043e, \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430. \u0412 \u0442\u043e\u0442 \u0432\u0435\u0447\u0435\u0440:<\/p>\n<pre><code>\u0441\u0430\u0439\u0442 (Astro):  high 3 \u2014 undici, vite, zod            \u2192 npm audit fix: \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u2014 0Strapi:        critical 1 \u2014 DOMPurify \u2264 3.4.16       \u2192 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432 3.4.17 \u043e\u0442 22.10<\/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>Strapi \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b DOMPurify \u0440\u043e\u0432\u043d\u043e \u043d\u0430 3.4.16, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 <code>npm audit fix<\/code> \u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442: \u043e\u043d \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0441\u044c Strapi, \u0430 \u044d\u0442\u043e \u0443\u0436\u0435 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0441 \u0440\u0438\u0441\u043a\u043e\u043c. \u0422\u043e\u0447\u0435\u0447\u043d\u043e\u0435 \u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u2014 <code>overrides<\/code>:<\/p>\n<pre><code class=\"json\">{  \"overrides\": {    \"dompurify\": \"^3.4.17\"  }}<\/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<pre><code class=\"bash\">npm installnpm ls dompurify                    # \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044fnpm audit --omit=dev | tail -3      # critical \u2014 0npm run build                       # \u0430\u0434\u043c\u0438\u043d\u043a\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f<\/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>\u0418\u043c\u0435\u043d\u043d\u043e <code>^3.4.17<\/code>, \u0430 \u043d\u0435 \u0442\u043e\u0447\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u0422\u043e\u0447\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432 <code>overrides<\/code> \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u0442\u043e\u043b\u043a\u043e\u043c: \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u0438\u0435\u0445\u0430\u043b\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e override \u0434\u0435\u0440\u0436\u0430\u043b \u0441\u0442\u0430\u0440\u043e\u0435.<\/p>\n<p>\u0422\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u044b \u044f \u0434\u0435\u043b\u0430\u044e \u043d\u0430 \u043a\u043e\u043f\u0438\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0431\u0435\u0437 <code>.env<\/code> \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a: \u0441\u043e\u0431\u0440\u0430\u043b, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u2014 \u043f\u043e\u0442\u043e\u043c \u0442\u043e \u0436\u0435 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0434\u0435\u0440\u0435\u0432\u0435. Strapi \u0446\u0435\u043b\u0438\u043a\u043e\u043c (5.56 \u2192 5.59) \u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u043d\u044f\u043b: \u043d\u0430 \u043a\u043e\u043f\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0437-\u0437\u0430 \u043c\u043e\u0435\u0433\u043e \u0436\u0435 \u0441\u0442\u0430\u0440\u043e\u0433\u043e override \u0434\u043b\u044f undici. \u042d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0430 \u0434\u043e \u0435\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u0440\u0443\u0436\u0443 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 (\u0447\u0430\u0441\u0442\u044c 3).<\/p>\n<hr\/>\n<h3>\u0427\u0430\u0441\u0442\u044c 2. \u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0443\u0448\u0451\u043b \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430 \u0447\u0438\u0441\u0442\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u043a\u0443<\/h3>\n<h4>PHP-\u0434\u044b\u0440\u044b \u0438 \u0430\u0442\u0430\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 CDN \u2014 \u0434\u0432\u0430 \u0434\u043e\u0432\u043e\u0434\u0430 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430<\/h4>\n<p><strong>\u041f\u0435\u0440\u0432\u044b\u0439 \u0434\u043e\u0432\u043e\u0434 \u2014 \u0441\u0430\u043c PHP.<\/strong> \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442: \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0430\u0439\u0442, \u0433\u0434\u0435 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 PHP, \u0431\u044b\u043b \u0443\u044f\u0437\u0432\u0438\u043c \u0434\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u0423 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044f \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u2014 Nginx \u043e\u0442\u0434\u0430\u0451\u0442 \u0444\u0430\u0439\u043b. \u042d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0430\u0442\u0430\u043a \u0437\u0430\u043a\u0440\u044b\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u0430 \u043d\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p><strong>\u0412\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u0432\u043e\u0434 \u2014 \u0447\u0443\u0436\u043e\u0439 JavaScript.<\/strong> \u0412 \u0438\u044e\u043d\u0435 \u0430\u0442\u0430\u043a\u043e\u0432\u0430\u043b\u0438 \u0442\u0440\u0438 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 WordPress \u2014 OptinMonster, TrustPulse \u0438 PushEngage. \u041f\u0435\u0440\u0432\u043e\u0439 \u0430\u0442\u0430\u043a\u0443 \u043e\u043f\u0438\u0441\u0430\u043b\u0430 Sansec (13 \u0438\u044e\u043d\u044f), \u0447\u0435\u0440\u0435\u0437 \u0434\u0432\u0430 \u0434\u043d\u044f \u2014 Patchstack: \u00abserved tampered JavaScript from their vendors\u2019 CDNs to live websites\u00bb. \u041f\u043e\u0434\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 CDN \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0432\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0441\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u041d\u0438 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 PHP \u043d\u0430 \u0441\u0430\u043c\u0438\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u2014 \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0430\u0439\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u043b \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u0434. \u0410 18\u201319 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u0443\u043a\u0440\u0430\u0434\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 UpdraftCentral 18 \u0447\u0430\u0441\u043e\u0432 \u043f\u043e\u0434\u0440\u044f\u0434 \u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0431\u044d\u043a\u0434\u043e\u0440\u044b \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0435 \u0441\u0430\u0439\u0442\u044b.<\/p>\n<p>\u0421\u0442\u0430\u0442\u0438\u043a\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0434\u044b\u0440\u0443 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442, \u0432\u0442\u043e\u0440\u0443\u044e \u2014 \u043d\u0435\u0442. \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0433\u0440\u0443\u0437\u0438\u0442 \u0447\u0443\u0436\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0432\u0441\u0451, \u0447\u0442\u043e \u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e. \u042d\u0442\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043e\u0442\u043a\u0430\u0437 \u043e\u0442 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438 \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (CSP).<\/p>\n<p><strong>\u0427\u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u043a\u0430 \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442.<\/strong> \u0421\u0435\u0440\u0432\u0435\u0440 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c: Nginx, Node \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 CMS, npm-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u0420\u043e\u0432\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u00ab\u0447\u0451\u0440\u043d\u043e\u0433\u043e \u043e\u043a\u0442\u044f\u0431\u0440\u044f\u00bb \u043c\u0435\u043d\u044f \u0437\u0430\u0434\u0435\u043b\u0438. \u0421\u0442\u0430\u0442\u0438\u043a\u0430 \u0441\u0443\u0436\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0430\u0442\u0430\u043a\u0438, \u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0430\u0434\u043e.<\/p>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u043d\u044f\u0442 Partytown \u2014 \u0438 \u0441 \u043d\u0438\u043c GTM, GA4 \u0438 Clarity<\/h4>\n<p><strong>Partytown.<\/strong> \u0412 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0436\u0438\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u2014 \u043d\u0435 Lighthouse, \u0430 \u0442\u043e, \u0443\u0445\u043e\u0434\u044f\u0442 \u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432. \u0412\u043e\u0440\u043a\u0435\u0440 Partytown \u043f\u0430\u0434\u0430\u043b \u0441 \u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432 \u0438\u044e\u043d\u044c\u0441\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u00ab\u0432\u044b\u043b\u0435\u0447\u0438\u043b\u00bb \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e Clarity: <code>Cannot read properties of undefined (reading 'apply')<\/code>. \u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438 <strong>\u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e<\/strong> \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0411\u0430\u043d\u043d\u0435\u0440 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b, Lighthouse \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b 99\u2013100 \u2014 \u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e. 14 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 Partytown \u0441\u043d\u044f\u0442. \u041f\u043e\u043f\u0443\u0442\u043d\u0430\u044f \u0432\u044b\u0433\u043e\u0434\u0430: \u043e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u043a\u043e\u0434 \u0432\u043e\u0440\u043a\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 <code>new Function<\/code>, \u0438 \u0440\u0430\u0434\u0438 \u043d\u0435\u0433\u043e \u0432 CSP \u0441\u0442\u043e\u044f\u043b <code>'unsafe-eval'<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0433\u043e \u043d\u0435\u0442.<\/p>\n<p><strong>GTM \u0438 GA4.<\/strong> GTM \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b \u043d\u0443\u0436\u0435\u043d \u0440\u043e\u0432\u043d\u043e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c GA4. \u0420\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043d\u0435\u0442, Consent Mode \u043d\u0443\u0436\u0435\u043d \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c. \u0410 GTM \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0431\u0435\u0437 \u0432\u044b\u043a\u0430\u0442\u0430 \u0441\u0430\u0439\u0442\u0430: \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u00ab\u0447\u0443\u0436\u043e\u0439 JavaScript \u043d\u0430 \u043c\u043e\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u00bb, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u044e\u043d\u044c\u0441\u043a\u0430\u044f \u0430\u0442\u0430\u043a\u0430. \u0421\u043d\u044f\u0442\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Partytown.<\/p>\n<p><strong>Clarity<\/strong> \u043f\u0440\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430\u0441\u044c \u0434\u043e \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f. \u0417\u0430\u043f\u0438\u0441\u0438 \u0441\u0435\u0441\u0441\u0438\u0439 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b, \u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u0443\u0445\u043e\u0434\u0438\u043b\u0438 \u0432 Microsoft. \u0421\u043d\u044f\u0442\u0430.<\/p>\n<p><strong>\u041e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u041c\u0435\u0442\u0440\u0438\u043a\u0430<\/strong> \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u044e, \u043e\u0442\u043a\u0443\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043b\u044e\u0434\u0438. \u041e\u043d\u0430 \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f \u043d\u0430 cookie \u0438 \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430.<\/p>\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u043b\u0430: 24 \u043e\u043a\u0442\u044f\u0431\u0440\u044f Lighthouse \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u0434\u0430\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 100, TBT 0 \u043c\u0441. \u041d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u044b \u0432 \u0432\u043e\u0440\u043a\u0435\u0440, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0438\u0445 \u0441\u0442\u0430\u043b\u043e \u043c\u0435\u043d\u044c\u0448\u0435.<\/p>\n<p>\u0423\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435: <strong>\u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u0451 \u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c.<\/strong> Lighthouse \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0443\u0445\u043e\u0434\u0438\u0442 \u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u0434\u043e \u0441\u0430\u043c\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.<\/p>\n<h4>\u041d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043d\u043b\u0430\u0439\u043d-\u0441\u043a\u0440\u0438\u043f\u0442\u0430: \u0437\u0430\u0447\u0435\u043c \u0438 \u043a\u0430\u043a<\/h4>\n<p>\u0421\u0430\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u0430\u044f \u0430\u0442\u0430\u043a\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0441 \u0444\u043e\u0440\u043c\u0430\u043c\u0438 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u2014 XSS: \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 <code>&lt;script&gt;<\/code> \u0438\u043b\u0438 <code>onerror=<\/code> \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 CSP \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043e\u0434 (<code>'unsafe-inline'<\/code> \u043d\u0435\u0442), \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442. \u041d\u043e \u0442\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u0438 \u0432\u0430\u0448\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u043b\u0430\u0439\u043d-\u0441\u043a\u0440\u0438\u043f\u0442\u044b.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u0448\u0451\u043b \u043f\u0443\u0442\u0451\u043c \u0445\u044d\u0448\u0435\u0439: \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u043d\u043b\u0430\u0439\u043d-\u0441\u043a\u0440\u0438\u043f\u0442 \u2014 \u0441 <code>sha256-\u2026<\/code> \u0432 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u0440\u0443\u0447\u043d\u043e\u043c \u0442\u0440\u0443\u0434\u0435: \u043b\u044e\u0431\u0430\u044f \u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043c\u0435\u043d\u044f\u0435\u0442 \u0445\u044d\u0448, \u0438 \u0434\u043e \u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u043e\u043b\u0447\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f CSP Astro \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0430: \u043e\u043d\u0430 \u0445\u044d\u0448\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 Astro \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0430 <code>is:inline<\/code> \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u2014 \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0438 \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u044d\u0442\u043e \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0435: \u0438\u0437 \u0441\u0435\u043c\u0438 \u0438\u043d\u043b\u0430\u0439\u043d\u043e\u0432 \u0435\u0451 \u0445\u044d\u0448\u0438 \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0443\u0431\u0440\u0430\u043b \u0438\u043d\u043b\u0430\u0439\u043d\u044b \u0441\u043e\u0432\u0441\u0435\u043c. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432 132 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0441\u0431\u043e\u0440\u043a\u0438:<\/p>\n<pre><code>\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0438\u043d\u043b\u0430\u0439\u043d-&lt;script&gt;        0\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 style=                   0\u0442\u0435\u0433\u043e\u0432 &lt;style&gt;                      0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 on*=                  0&lt;script type=\"application\/json\"&gt;   396   \u2014 \u044d\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0445 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442<\/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>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u0442\u0430\u043a \u0436\u0435:<\/p>\n<pre><code class=\"bash\">cd distgrep -rhoE \"&lt;script(\\s[^&gt;]*)?&gt;\" --include=\"*.html\" . | grep -vE 'src=|type=\"application\/(ld\\+)?json\"' | sort | uniq -cgrep -rlE '\\sstyle=\"' --include=\"*.html\" . | wc -lgrep -rhoE '\\son[a-z]+=\"' --include=\"*.html\" . | sort | uniq -c<\/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>\u0427\u0435\u0442\u044b\u0440\u0435 \u043f\u0440\u0438\u0451\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e.<\/p>\n<p><strong>\u041f\u0440\u0438\u0451\u043c 1. \u0421\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0441\u043f\u0435\u0442\u044c \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438, \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c.<\/strong> \u0422\u0435\u043c\u0430 (\u0441\u0432\u0435\u0442\u043b\u0430\u044f\/\u0442\u0451\u043c\u043d\u0430\u044f) \u043e\u0431\u044f\u0437\u0430\u043d\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\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 \u043c\u0438\u0433\u043d\u0451\u0442. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 <code>&lt;script&gt;<\/code> Astro \u0443\u043d\u043e\u0441\u0438\u0442 \u0432 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u2014 \u043f\u043e\u0437\u0434\u043d\u043e. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0438\u043c\u043f\u043e\u0440\u0442 Vite \u0441 <code>?url<\/code> \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u0433 \u0432 <code>&lt;head&gt;<\/code>:<\/p>\n<pre><code>---import temaUrl from \"..\/scripts\/tema.js?url\";---&lt;head&gt;  &lt;script is:inline src={temaUrl}&gt;&lt;\/script&gt;&lt;\/head&gt;<\/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><code>is:inline<\/code> \u0437\u0434\u0435\u0441\u044c \u0437\u043d\u0430\u0447\u0438\u0442 \u00ab\u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0439 \u0442\u0435\u0433\u00bb, \u043d\u043e \u043a\u043e\u0434 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 <code>\/_astro\/tema.*.js<\/code> \u2014 \u0435\u0433\u043e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 <code>script-src 'self'<\/code>.<\/p>\n<p><strong>\u041f\u0440\u0438\u0451\u043c 2. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u043c <\/strong><code><strong>&lt;script&gt;<\/strong><\/code><strong>.<\/strong> Astro \u0441\u043e\u0431\u0435\u0440\u0451\u0442 \u0438\u0445 \u0432 <code>\/_astro\/*.js<\/code>. \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <code>define:vars<\/code> \u2014 \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e\u043d \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 <code>is:inline<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043d\u043e\u0432\u0430 \u0438\u043d\u043b\u0430\u0439\u043d.<\/p>\n<p><strong>\u041f\u0440\u0438\u0451\u043c 3. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2014 \u0431\u043b\u043e\u043a\u043e\u043c JSON, \u0430 \u043d\u0435 \u043a\u043e\u0434\u043e\u043c.<\/strong><\/p>\n<pre><code>&lt;script type=\"application\/json\" id=\"quiz-providers\" set:html={providerDataJSON} \/&gt;<\/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<pre><code>const providers = JSON.parse(document.getElementById(\"quiz-providers\").textContent);<\/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>\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u0442\u0430\u043a\u043e\u0439 \u0431\u043b\u043e\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442, \u0445\u044d\u0448 \u0435\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d. \u041e\u0434\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435: \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u0439\u0442\u0435 <code>&lt;<\/code> \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 (<code>JSON.stringify(x).replace(\/&lt;\/g, \"\\\\u003c\")<\/code>), \u0438\u043d\u0430\u0447\u0435 \u0441\u0442\u0440\u043e\u043a\u0430 <code>&lt;\/script&gt;<\/code> \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043a\u0440\u043e\u0435\u0442 \u0442\u0435\u0433.<\/p>\n<p><strong>\u041f\u0440\u0438\u0451\u043c 4. \u0421\u0442\u0438\u043b\u0438 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u0430\u043c\u0438.<\/strong> \u0412 <code>astro.config.mjs<\/code>:<\/p>\n<pre><code>export default defineConfig({  build: { inlineStylesheets: \"never\" },  vite: { build: { assetsInlineLimit: 0 } },});<\/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\u0442\u0440\u0438\u0431\u0443\u0442\u044b <code>style=<\/code> \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 <code>onclick=<\/code> \u2014 <code>addEventListener<\/code> \u0432 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445.<\/p>\n<h4>\u0421\u0442\u0440\u043e\u0433\u0430\u044f CSP: \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b7\/db\/84\/b7db846f353016d4fcb3c88716920c25.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/b7\/db\/84\/b7db846f353016d4fcb3c88716920c25.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/b7\/db\/84\/b7db846f353016d4fcb3c88716920c25.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p> \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c Nginx, \u0430 \u043d\u0435 <code>&lt;meta&gt;<\/code>: \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a \u043e\u0442\u0432\u0435\u0442\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438. <\/p>\n<pre><code class=\"nginx\">add_header Content-Security-Policy \"default-src 'self'; script-src 'self' https:\/\/mc.yandex.ru https:\/\/mc.yandex.com https:\/\/cdn.jsdelivr.net\/gh\/yandex\/; style-src 'self'; font-src 'self' data:; img-src 'self' data: https: blob:; connect-src 'self' https:\/\/mc.yandex.ru https:\/\/mc.yandex.com wss:\/\/mc.yandex.ru https:\/\/yandex.ru https:\/\/mc.yandex.az https:\/\/mc.yandex.by https:\/\/mc.yandex.co.il https:\/\/mc.yandex.com.am https:\/\/mc.yandex.com.ge https:\/\/mc.yandex.com.tr https:\/\/mc.yandex.ee https:\/\/mc.yandex.fr https:\/\/mc.yandex.kg https:\/\/mc.yandex.kz https:\/\/mc.yandex.lt https:\/\/mc.yandex.lv https:\/\/mc.yandex.md https:\/\/mc.yandex.tj https:\/\/mc.yandex.tm https:\/\/mc.yandex.uz wss:\/\/mc.yandex.az wss:\/\/mc.yandex.by wss:\/\/mc.yandex.co.il wss:\/\/mc.yandex.com.am wss:\/\/mc.yandex.com.ge wss:\/\/mc.yandex.com.tr wss:\/\/mc.yandex.ee wss:\/\/mc.yandex.fr wss:\/\/mc.yandex.kg wss:\/\/mc.yandex.kz wss:\/\/mc.yandex.lt wss:\/\/mc.yandex.lv wss:\/\/mc.yandex.md wss:\/\/mc.yandex.tj wss:\/\/mc.yandex.tm wss:\/\/mc.yandex.uz; frame-src 'self' https:\/\/mc.yandex.ru https:\/\/mc.yandex.com https:\/\/mc.yandex.az https:\/\/mc.yandex.by https:\/\/mc.yandex.co.il https:\/\/mc.yandex.com.am https:\/\/mc.yandex.com.ge https:\/\/mc.yandex.com.tr https:\/\/mc.yandex.ee https:\/\/mc.yandex.fr https:\/\/mc.yandex.kg https:\/\/mc.yandex.kz https:\/\/mc.yandex.lt https:\/\/mc.yandex.lv https:\/\/mc.yandex.md https:\/\/mc.yandex.tj https:\/\/mc.yandex.tm https:\/\/mc.yandex.uz; frame-ancestors 'none'; worker-src 'self' blob:; child-src 'self' blob:; base-uri 'self'; form-action 'self'; object-src 'none'; upgrade-insecure-requests\" always;<\/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<ul>\n<li>\n<p><code>default-src 'self'<\/code> \u2014 \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430.<\/p>\n<\/li>\n<li>\n<p><code>script-src<\/code> \u2014 \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b \u0438 \u041c\u0435\u0442\u0440\u0438\u043a\u0430. \u041d\u0438 <code>'unsafe-inline'<\/code>, \u043d\u0438 <code>'unsafe-eval'<\/code>, \u043d\u0438 \u0445\u044d\u0448\u0435\u0439.<\/p>\n<\/li>\n<li>\n<p><code>style-src 'self'<\/code> \u2014 \u0431\u0435\u0437 <code>'unsafe-inline'<\/code>: \u044d\u0442\u043e\u0433\u043e \u0438 \u0434\u043e\u0431\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0438\u0451\u043c\u043e\u043c 4.<\/p>\n<\/li>\n<li>\n<p><code>frame-ancestors 'none'<\/code> \u2014 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u0447\u0443\u0436\u043e\u0439 \u0444\u0440\u0435\u0439\u043c (\u043a\u043b\u0438\u043a\u0434\u0436\u0435\u043a\u0438\u043d\u0433).<\/p>\n<\/li>\n<li>\n<p><code>connect-src<\/code> \u0438 <code>frame-src<\/code> \u2014 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0438\u0437-\u0437\u0430 \u041c\u0435\u0442\u0440\u0438\u043a\u0438: \u0432 \u043d\u0438\u0445 \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u043e\u0432\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b <code>mc.yandex.*<\/code> \u043f\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 (\u043f\u043e\u0447\u0435\u043c\u0443 \u2014 \u043d\u0438\u0436\u0435, \u0432 \u0430\u0431\u0437\u0430\u0446\u0435 \u043f\u0440\u043e \u0436\u0443\u0440\u043d\u0430\u043b \u043e\u0442\u0447\u0451\u0442\u043e\u0432). <code>img-src<\/code> \u043e\u0442\u043a\u0440\u044b\u0442 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e <code>https:<\/code> \u2014 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0448\u043b\u0451\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439, \u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p><code>worker-src<\/code> \u0438 <code>child-src<\/code> \u2014 <code>'self' blob:<\/code>: <code>blob:<\/code> \u042f\u043d\u0434\u0435\u043a\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043b\u044f \u043a\u0430\u0440\u0442\u044b \u043a\u043b\u0438\u043a\u043e\u0432 \u0438 \u0412\u0435\u0431\u0432\u0438\u0437\u043e\u0440\u0430; \u0447\u0443\u0436\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><code>base-uri 'self'<\/code> \u2014 \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u044b\u0439 <code>&lt;base href&gt;<\/code> \u043d\u0435 \u0443\u0432\u0435\u0434\u0451\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u0447\u0443\u0436\u043e\u0439 \u0434\u043e\u043c\u0435\u043d.<\/p>\n<\/li>\n<li>\n<p><code>form-action 'self'<\/code> \u2014 \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0440\u0443\u0436\u0443.<\/p>\n<\/li>\n<li>\n<p><code>object-src 'none'<\/code> \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 <code>&lt;object&gt;<\/code> \u0438 <code>&lt;embed&gt;<\/code>: \u0441\u0442\u0430\u0440\u044b\u0439, \u043d\u043e \u0436\u0438\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><code>upgrade-insecure-requests<\/code> \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f <code>http:\/\/<\/code>-\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441 \u0443\u0445\u043e\u0434\u0438\u0442 \u043f\u043e HTTPS.<\/p>\n<\/li>\n<li>\n<p>\u0427\u0443\u0436\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0432 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0442, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435\u043c \u043d\u0430 cookie \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043b\u043e\u043c\u0430\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a. \u041a\u0430\u0436\u0434\u044b\u0439 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u043f\u043e \u0437\u0430\u043c\u0435\u0440\u0443: \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435, \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041b\u0438\u0448\u043d\u0438\u0435 (\u0448\u0440\u0438\u0444\u0442\u044b Google, \u0441\u0442\u0430\u0440\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 \u0440\u0435\u043f\u0443\u0442\u0430\u0446\u0438\u0438) \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0438 \u0441\u043d\u044f\u0442\u044b \u043f\u0440\u0438 \u0430\u0443\u0434\u0438\u0442\u0435.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041b\u043e\u0432\u0443\u0448\u043a\u0430 <\/strong><code><strong>'self'<\/strong><\/code><strong>: \u043e\u043d \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0441\u0435\u043c\u0443 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u2014 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0442\u043e\u0436\u0435.<\/strong> \u0423 \u043c\u0435\u043d\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 CMS \u043e\u0442\u0434\u0430\u044e\u0442\u0441\u044f \u0441 \u0442\u043e\u0433\u043e \u0436\u0435 \u0434\u043e\u043c\u0435\u043d\u0430 \u0438\u0437 <code>\/uploads\/<\/code>. \u0417\u043d\u0430\u0447\u0438\u0442, \u043b\u044e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b <code>.js<\/code>, \u043e\u043a\u0430\u0437\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u0445, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u043b \u0431\u044b \u043a\u0430\u043a \u00ab\u0441\u0432\u043e\u0439\u00bb. \u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e\u0442 location \u043e\u0442\u0434\u0430\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u0441\u043e \u0441\u0432\u043e\u0435\u0439, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439:<\/p>\n<pre><code class=\"nginx\">location ^~ \/uploads\/ {    root \/var\/www\/site\/backend\/public;    include snippets\/security-headers.conf;    if ($uri !~* \"\\.(?:jpe?g|png|webp|gif|avif|ico|svg)$\") { return 403; }    add_header Content-Security-Policy \"default-src 'none'; img-src 'self' data:; style-src 'unsafe-inline'; sandbox\" always;    try_files $uri =404;}<\/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><code>sandbox<\/code> \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0430\u0436\u0435 SVG \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0432 \u0431\u0435\u0437\u0432\u0440\u0435\u0434\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. <code>style-src 'unsafe-inline'<\/code> \u0437\u0434\u0435\u0441\u044c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c: \u0432\u043d\u0443\u0442\u0440\u0438 SVG \u0441\u0442\u0438\u043b\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b, \u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b <code>default-src 'none'<\/code>.<\/p>\n<p><strong>\u041a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c, \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0432 \u0441\u0430\u0439\u0442.<\/strong> \u0420\u044f\u0434\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u2014 <code>Content-Security-Policy-Report-Only<\/code> \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u044f \u0445\u043e\u0447\u0443 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c, \u0438 <code>report-uri \/csp-otchet<\/code>. \u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442, \u043d\u043e \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u043e\u0442\u0447\u0451\u0442 \u043e \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0438. \u041d\u0435\u0434\u0435\u043b\u044e \u0441\u043e\u0431\u0438\u0440\u0430\u044e \u043e\u0442\u0447\u0451\u0442\u044b, \u043e\u0442\u0434\u0435\u043b\u044f\u044e \u0441\u0432\u043e\u0438 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f \u043e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (<code>moz-extension:<\/code>, <code>chrome-extension:<\/code>), \u0441\u0432\u043e\u0438 \u0447\u0438\u043d\u044e \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043d\u043e\u0448\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443.<\/p>\n<p>\u041f\u0440\u0438\u0451\u043c\u043d\u0438\u043a \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 \u0441\u0432\u043e\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0431\u0435\u0437 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438, \u0430 Nginx \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 (30 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443 \u0441 \u0430\u0434\u0440\u0435\u0441\u0430). \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u0434\u043d\u044f\u043b \u0435\u0433\u043e \u043f\u043e\u0434 root \u2014 \u044d\u0442\u043e \u043d\u0430\u0448\u0451\u043b \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u043e\u0441\u043c\u043e\u0442\u0440 \u043f\u0440\u0430\u0432, \u043e \u043d\u0451\u043c \u0432 \u0447\u0430\u0441\u0442\u0438 3.<\/p>\n<p><strong>\u0416\u0443\u0440\u043d\u0430\u043b \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043d\u0430\u0434\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u2014 \u0438\u043d\u0430\u0447\u0435 \u043e\u043d \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d.<\/strong> \u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0451\u043c \u0441\u0430\u0439\u0442\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043a\u043e\u043f\u0438\u043b\u0438\u0441\u044c, \u043d\u043e \u0434\u043e 20 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u043d\u0438\u043a\u0442\u043e \u0438\u0445 \u043d\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b. \u0420\u0430\u0437\u0431\u043e\u0440 \u043f\u043e\u043a\u0430\u0437\u0430\u043b: CSP \u0440\u0435\u0437\u0430\u043b\u0430 \u041c\u0435\u0442\u0440\u0438\u043a\u0443 \u0443 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u2014 <code>mc.yandex.kz<\/code>, <code>mc.yandex.md<\/code>, <code>mc.yandex.com<\/code>. \u041f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0438 \u0438\u0437 \u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d\u0430 \u0438 \u041c\u043e\u043b\u0434\u043e\u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u043b\u0438\u0441\u044c. \u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0441\u0432\u043e\u044e \u0441\u0432\u043e\u0434\u043a\u0443: \u0442\u043e\u0442 \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0439 20 \u043e\u043a\u0442\u044f\u0431\u0440\u044f, <code>connect-src<\/code> \u0438 <code>frame-src<\/code> \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438 <code>mc.yandex.md<\/code>. \u0423 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0435\u0441\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u043b\u044f CSP \u2014 18 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 <code>mc.yandex.*<\/code>. \u0412 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u043e \u0434\u0432\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u0441\u0442\u043e\u044f\u0442 \u0432 <code>connect-src<\/code> \u0438 <code>frame-src<\/code>. \u041f\u0435\u0440\u0432\u043e\u0439 \u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u044f, \u043a\u0441\u0442\u0430\u0442\u0438, \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b <code>mc.yandex.com<\/code> \u0432 <code>frame-src<\/code> \u2014 \u043d\u0430\u0448\u0451\u043b, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u0435\u0440\u0438\u0432 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0441 \u0436\u0438\u0432\u044b\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0430 \u043d\u0435 \u043f\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0443. <code>mc.webvisor.*<\/code> \u0438\u0437 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b: \u0412\u0435\u0431\u0432\u0438\u0437\u043e\u0440 \u0443 \u043c\u0435\u043d\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d. \u0412\u044b\u0432\u043e\u0434: \u0441\u0432\u043e\u0434\u043a\u0430 \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u00ab\u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u00d7 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441\u00bb \u2014 \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e, \u0430 \u043d\u0435 \u00ab\u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f\u00bb.<\/p>\n<p><strong>\u0415\u0441\u043b\u0438 \u0441\u0430\u0439\u0442 \u043d\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439.<\/strong> \u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u0430\u0439\u0442 \u2014 \u0432\u0438\u0442\u0440\u0438\u043d\u0430 \u043d\u0430 Astro \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 SSR: \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 Node \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441. CSP \u0442\u0430\u043c \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0442\u0430\u043a \u0436\u0435 \u2014 <code>script-src 'self'<\/code> \u0438 \u0434\u043e\u043c\u0435\u043d\u044b \u041c\u0435\u0442\u0440\u0438\u043a\u0438, \u0431\u0435\u0437 <code>'unsafe-inline'<\/code> \u0438 \u0431\u0435\u0437 nonce: Astro \u0432\u044b\u043d\u043e\u0441\u0438\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u0432 SSR. \u0410 \u0432 <code>style-src<\/code> <code>'unsafe-inline'<\/code> \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u2014 \u0435\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0441\u0442\u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u043a\u0430\u0437 \u043e\u0442 \u0438\u043d\u043b\u0430\u0439\u043d-\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 SSR \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442, \u0441\u043e \u0441\u0442\u0438\u043b\u044f\u043c\u0438 \u2014 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p><strong>\u0427\u0435\u0433\u043e \u0435\u0449\u0451 \u043d\u0435\u0442.<\/strong> \u0412 \u0442\u0435\u043d\u0435\u0432\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 \u0441\u0442\u043e\u0438\u0442 <code>require-trusted-types-for 'script'<\/code>. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0435\u0451 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435\u043b\u044c\u0437\u044f: \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u0441\u0430\u043c \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 <code>script.src<\/code> \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u0438 \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c Trusted Types \u0435\u0451 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u041d\u0443\u0436\u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 <code>trustedTypes.createPolicy('default', \u2026)<\/code>, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e <code>mc.yandex.ru<\/code>. \u042d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433.<\/p>\n<h4>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0438 \u0434\u0432\u0435 \u043b\u043e\u0432\u0443\u0448\u043a\u0438 Nginx<\/h4>\n<pre><code class=\"nginx\">add_header Strict-Transport-Security \"max-age=63072000; includeSubDomains; preload\" always;add_header X-Frame-Options \"DENY\" always;add_header X-Content-Type-Options \"nosniff\" always;add_header Referrer-Policy \"strict-origin-when-cross-origin\" always;add_header Permissions-Policy \"accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()\" always;add_header Cross-Origin-Opener-Policy \"same-origin\" always;add_header Cross-Origin-Resource-Policy \"same-site\" always;add_header Cross-Origin-Embedder-Policy \"credentialless\" always;server_tokens off;<\/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><code><strong>add_header<\/strong><\/code><strong> \u0432 <\/strong><code><strong>location<\/strong><\/code><strong> \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 <\/strong><code><strong>add_header<\/strong><\/code><strong> \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0432\u044b\u0448\u0435.<\/strong> \u0421\u0442\u043e\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 location \u043e\u0434\u0438\u043d \u0441\u0432\u043e\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a (\u043a\u0430\u043a <code>Cache-Control<\/code> \u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a) \u2014 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 <code>server<\/code> \u0442\u0430\u043c \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u044e\u0442. \u042f \u0432\u044b\u043d\u043e\u0448\u0443 \u0438\u0445 \u0432 \u0441\u043d\u0438\u043f\u043f\u0435\u0442 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e <code>include<\/code> \u0432 \u043a\u0430\u0436\u0434\u043e\u043c location, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 <code>add_header<\/code>.<\/p>\n<p><strong>\u041f\u0440\u0430\u0432\u044c\u0442\u0435 \u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Nginx \u0447\u0438\u0442\u0430\u0435\u0442.<\/strong> \u0423 \u043c\u0435\u043d\u044f <code>sites-enabled\/<\/code> \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043a\u043e\u043f\u0438\u0435\u0439, \u0430 \u043d\u0435 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 <code>sites-available\/<\/code>: <code>nginx -t<\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u00absuccessful\u00bb, \u0430 \u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430.<\/p>\n<pre><code class=\"bash\">ls -la \/etc\/nginx\/sites-enabled\/        # \u0436\u0434\u0451\u043c \u00ab-&gt; ..\/sites-available\/\u2026\u00bbcurl -sI --resolve example.com:443:127.0.0.1 https:\/\/example.com\/ | grep -iE \"content-security|strict-transport\"<\/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>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0435 \u043a\u043e\u043d\u0444\u0438\u0433, \u0430 \u043e\u0442\u0432\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<hr\/>\n<h3>\u0427\u0430\u0441\u0442\u044c 3. \u0414\u044b\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0430\u0448\u0451\u043b \u0443 \u0441\u0435\u0431\u044f \u0437\u0430 \u0434\u0432\u0430 \u043c\u0435\u0441\u044f\u0446\u0430<\/h3>\n<p>\u041f\u043e\u0447\u0442\u0438 \u043d\u0438 \u043e\u0434\u043d\u0443 \u0438\u0437 \u043d\u0438\u0445 \u043d\u0435 \u043d\u0430\u0448\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u00ab\u043f\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u043c\u0435\u0441\u0442\u0430\u043c\u00bb. \u041d\u0430\u0445\u043e\u0434\u0438\u043b \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043b\u0430\u0441\u0441\u0430: \u043d\u0435 \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043b\u0438 \u043f\u0440\u0430\u0432\u0430 \u0443 \u0442\u0440\u0451\u0445 <code>.env<\/code>\u00bb, \u0430 \u00ab\u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u0440\u043e\u0447\u0442\u0451\u0442 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u00bb. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u2014 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0443 \u0441\u0435\u0431\u044f.<\/p>\n<h4>\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c: \u0432\u0441\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b CMS \u043b\u0435\u0436\u0430\u043b\u0438 \u0432 git \u0441 \u043c\u0430\u044f \u2014 \u0438 \u0431\u044b\u043b\u0438 \u0436\u0438\u0432\u044b<\/h4>\n<p>\u042d\u0442\u043e \u043c\u043e\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u044f \u0435\u0451 \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0443 \u0441\u0435\u0431\u044f: \u043e\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u044b\u0445.<\/p>\n<p>\u0412 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0431\u044b\u043b\u0430 \u043f\u0430\u043f\u043a\u0430 <code>backups\/<\/code>: \u0434\u0430\u043c\u043f\u044b \u0431\u0430\u0437\u044b \u0438 \u0430\u0440\u0445\u0438\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 CMS \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <code>.env<\/code> \u2014 \u00ab\u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u00bb, \u0435\u0449\u0451 \u0441 \u0432\u0435\u0441\u043d\u044b. \u0421\u0432\u0435\u0440\u043a\u0430 (\u043f\u043e \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u043c, \u0431\u0435\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439) \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430: \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c. \u041e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0443\u0442\u0435\u0447\u043a\u0435 \u043c\u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0438\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u044f \u0435\u0451 \u043d\u0430\u0448\u0451\u043b: \u043f\u043e\u0447\u0442\u043e\u0432\u0430\u044f \u0441\u043b\u0443\u0436\u0431\u0430 \u0441\u0430\u043c\u0430 \u043e\u0442\u043e\u0437\u0432\u0430\u043b\u0430 \u0441\u0432\u043e\u0438 \u043a\u043b\u044e\u0447\u0438 \u0438 \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0430 \u043f\u0438\u0441\u044c\u043c\u043e. \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0438 Strapi (<code>APP_KEYS<\/code>, <code>JWT_SECRET<\/code>, <code>ADMIN_JWT_SECRET<\/code>, <code>TRANSFER_TOKEN_SALT<\/code>) \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0430\u0437\u044b \u044f \u0441\u043c\u0435\u043d\u0438\u043b, \u043f\u0430\u043f\u043a\u0443 \u0443\u0431\u0440\u0430\u043b.<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u0445\u043e\u0434 \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 git (<code>git cat-file --batch-all-objects<\/code>, \u0441 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u043e\u0439 \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438). \u041e\u043d \u043d\u0430\u0448\u0451\u043b \u0442\u043e\u043a\u0435\u043d\u044b \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u043d\u0430 \u0436\u0438\u0432\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043a API \u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043e\u043a, \u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0434\u043d\u043e: \u0436\u0438\u0432\u043e\u0439 \u2014 \u043f\u0435\u0440\u0435\u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0441\u0442\u0430\u0440\u044b\u0439 \u2014 \u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0427\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0443\u043a\u0430\u043c\u0438 \u0432 \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u0438\u0435 \u043f\u0443\u043d\u043a\u0442\u044b \u044f \u0432\u0435\u0434\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u043f\u043e\u043a\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0442. \u0412\u044b\u043a\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0431\u0438\u0440\u0430\u043b \u043a\u043e\u0434 \u0441 GitHub \u043b\u0438\u0447\u043d\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u043c, \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u0437\u044b\u0432\u0430 \u0442\u043e\u043a\u0435\u043d\u0430 \u0432\u0441\u0442\u0430\u043b \u2014 \u0438 \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043d\u0430 \u043a\u043b\u044e\u0447 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f: \u043b\u0438\u0447\u043d\u043e\u043c\u0443 \u0442\u043e\u043a\u0435\u043d\u0443 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e.<\/p>\n<p><strong>\u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u044f \u043f\u043e\u043d\u044f\u043b:<\/strong> \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043c\u0430\u043b\u043e \u2014 \u043e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u0421\u0435\u043a\u0440\u0435\u0442, \u043f\u043e\u0431\u044b\u0432\u0430\u0432\u0448\u0438\u0439 \u0432 git, \u043f\u0435\u0440\u0435\u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0442.<\/p>\n<pre><code class=\"bash\"># \u0447\u0442\u043e \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u044b (\u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432)git log --all --name-only --format=\"\" | sort -u | grep -iE \"\\.env|backup|dump|\\.sql|secret|token|credential\"# \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0441\u043a\u0430\u043d\u0435\u0440\u044b \u0438\u0441\u0442\u043e\u0440\u0438\u0438gitleaks detect --source . --log-opts=\"--all\"trufflehog git file:\/\/. --only-verified<\/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>\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c: root \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u043b \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440<\/h4>\n<p>\u0412\u0441\u0451 \u0434\u0435\u0440\u0435\u0432\u043e \u0441\u0430\u0439\u0442\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u043b\u043e <code>www-data<\/code>, \u0430 \u0432\u044b\u043a\u0430\u0442 \u043e\u0442 root \u0434\u0435\u043b\u0430\u043b \u0432 \u043d\u0451\u043c <code>git pull<\/code> (\u0441 \u0445\u0443\u043a\u0430\u043c\u0438 \u0438\u0437 <code>.git\/hooks<\/code>) \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0441\u0431\u043e\u0440\u043a\u0438. \u041b\u044e\u0431\u043e\u0439 npm-\u043f\u0430\u043a\u0435\u0442, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u043e\u0434 <code>www-data<\/code>, \u043c\u043e\u0433 \u043f\u043e\u0434\u043b\u043e\u0436\u0438\u0442\u044c root \u0441\u0432\u043e\u0439 \u043a\u043e\u0434 \u2014 \u0430 <code>www-data<\/code> \u044d\u0442\u043e \u0435\u0449\u0451 \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b Nginx.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0434\u0435\u0440\u0435\u0432\u043e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 root, \u0441\u0431\u043e\u0440\u043a\u0430 \u0438\u0434\u0451\u0442 \u043f\u043e\u0434 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0438\u0448\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <code>node_modules<\/code> \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0441\u0431\u043e\u0440\u043a\u0438, <code>.env<\/code> \u2014 <code>root:&lt;\u0441\u0431\u043e\u0440\u0449\u0438\u043a&gt; 640<\/code>. \u0412\u044b\u043a\u0430\u0442 \u0441\u0430\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0434\u0435\u0440\u0435\u0432\u043e \u0441\u043d\u043e\u0432\u0430 \u043d\u0435 root.<\/p>\n<pre><code class=\"bash\"># \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 root, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439sudo find \/var\/www\/site -maxdepth 3 \\( -name \"*.sh\" -o -name \"*.mjs\" -o -path \"*\/.git\/hooks\/*\" \\) \\  ! -user root -printf \"%u %p\\n\"sudo find \/var\/www\/site -maxdepth 3 -perm -o+w -printf \"%M %p\\n\"<\/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>\u0418 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 <code>safe.directory<\/code> \u0432 git \u00ab\u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0440\u0443\u0433\u0430\u043b\u0441\u044f\u00bb: \u043e\u043d \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u0443 \u0437\u0430\u0449\u0438\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e root \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0447\u0443\u0436\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.<\/p>\n<h4>\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c: CMS \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043e\u0442 root<\/h4>\n<p>Strapi \u0441\u043b\u0443\u0448\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e <code>127.0.0.1<\/code>, \u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043f\u043e\u0434 root. \u041b\u044e\u0431\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 Strapi \u0441\u0440\u0430\u0437\u0443 \u0434\u0430\u0432\u0430\u043b\u0430 \u0431\u044b root. \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0435\u0433\u043e \u0441\u0432\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a, <code>.env<\/code> \u2014 <code>root:&lt;\u0433\u0440\u0443\u043f\u043f\u0430 CMS&gt; 640<\/code>. \u0414\u043b\u044f PM2 \u044d\u0442\u043e <code>uid<\/code>\/<code>gid<\/code> \u0432 <code>ecosystem.config.js<\/code>, \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u043d \u043d\u0435 <code>restart<\/code>, \u0430 <code>pm2 delete &lt;\u0438\u043c\u044f&gt;<\/code> + <code>pm2 start \u2026 --only &lt;\u0438\u043c\u044f&gt;<\/code>.<\/p>\n<pre><code class=\"bash\">ps -eo user,comm,args | grep -E \"node|php-fpm|python\" | grep -v grep<\/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\u0441\u0451, \u0447\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432 \u0441\u0435\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 root, \u2014 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u043d\u0430 \u0441\u0432\u043e\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0443\u043f\u0435\u043d\u044c \u2014 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430 systemd. \u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u043e\u043d\u0430 \u0441\u0442\u043e\u0438\u0442: \u043a\u043e\u0434 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 root, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0438\u0448\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0430\u043f\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u044e\u043d\u0438\u0442 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435:<\/p>\n<pre><code>[Service]ProtectSystem=strictReadWritePaths=\/var\/www\/shop\/data \/var\/log\/shopNoNewPrivileges=yesPrivateTmp=yesProtectHome=yesRestrictSUIDSGID=yesCapabilityBoundingSet=<\/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\u0437\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u0442 \u0441\u0432\u043e\u0439 \u0436\u0435 \u043a\u043e\u0434: \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435, \u043a\u0440\u043e\u043c\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a. \u041d\u043e\u0432\u044b\u0439 \u00ab\u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044c\u00bb \u0432 \u043a\u043e\u0434\u0435 \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e \u2014 \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 <code>EROFS<\/code>, \u043f\u043e\u043a\u0430 \u0435\u0433\u043e \u043f\u0430\u043f\u043a\u0443 \u043d\u0435 \u0432\u043f\u0438\u0448\u0443\u0442. \u0423 CMS \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0442\u0430\u043a\u043e\u0439 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u043f\u043e\u043a\u0430 \u043d\u0435\u0442 \u2014 \u044d\u0442\u043e \u0432 \u0441\u043f\u0438\u0441\u043a\u0435.<\/p>\n<pre><code class=\"bash\">systemctl show &lt;\u044e\u043d\u0438\u0442&gt; -p ProtectSystem -p ReadWritePaths -p NoNewPrivilegessystemd-analyze security &lt;\u044e\u043d\u0438\u0442&gt;        # \u043e\u0446\u0435\u043d\u043a\u0430 \u0438 \u0447\u0442\u043e \u0435\u0449\u0451 \u0437\u0430\u043a\u0440\u044b\u0442\u044c<\/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>\u0418 \u043c\u0435\u043b\u043e\u0447\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c: <code>pm2 save<\/code> \u043f\u0438\u0448\u0435\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u2014 \u0441 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 API \u2014 \u0432 <code>~\/.pm2\/dump.pm2<\/code>. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430. \u0415\u0441\u043b\u0438 PM2 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442 root, \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f, \u2014 <code>600<\/code> \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 PM2 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u043a\u043e\u0434 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 root, \u043a\u0430\u043a \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0430\u0439\u0442\u0435, \u2014 <code>640 root:&lt;\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c pm2&gt;<\/code>: \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u043d\u0438\u043c\u043e\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u0418\u043d\u0430\u0447\u0435 \u0432\u0437\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0434\u0435\u043b\u0430\u043b \u0431\u044b <code>pm2 save<\/code> \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u0436\u0438\u043b \u0431\u044b \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443.<\/p>\n<h4>\u041e\u043a\u0442\u044f\u0431\u0440\u044c: .git \u0432\u044b\u043a\u0430\u0442\u0430 \u0447\u0438\u0442\u0430\u043b\u0438 \u0432\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/h4>\n<p>\u041a\u0430\u0442\u0430\u043b\u043e\u0433 <code>.git<\/code> \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438\u043c\u0435\u043b \u043f\u0440\u0430\u0432\u0430 775. \u0415\u0433\u043e \u0447\u0438\u0442\u0430\u043b\u0438 \u0432\u0441\u0435 \u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, CMS, \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0410 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 git \u2014 \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u0434\u0430\u043c\u043f\u044b \u0438 \u0430\u0440\u0445\u0438\u0432 \u0441 <code>.env<\/code> \u0438\u0437 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f (\u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0438\u0437 \u043d\u0435\u0433\u043e \u043a \u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0441\u043c\u0435\u043d\u0435\u043d\u044b): \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 \u044f \u0443\u0431\u0440\u0430\u043b, \u0430 \u043f\u0430\u043a\u0435\u0442 git \u043d\u0430 340 \u041c\u0411 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c. <code>chmod 750 .git<\/code>, \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0432\u0441\u0435\u0445 \u0443\u0447\u0451\u0442\u043e\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u0422\u0430\u043c \u0436\u0435 \u043d\u0430\u0448\u043b\u0438\u0441\u044c 54 \u0434\u0430\u043c\u043f\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 644 \u2014 \u0438\u0445 \u043c\u043e\u0433 \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<pre><code class=\"bash\"># \u0447\u0442\u043e \u043f\u0440\u043e\u0447\u0442\u0451\u0442 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c: \u0434\u0430\u043c\u043f\u044b, \u043a\u043b\u044e\u0447\u0438, .env, .gitsudo find \/var\/www \/home \/root \/opt \/var\/backups -type f -perm -o+r 2&gt;\/dev\/null \\  | grep -iE \"\\.sql|\\.dump|\\.gz$|\\.env|id_rsa|id_ed25519|token|\\.pem$\" | head -50sudo find \/ -type d -name .git -perm -o+rx 2&gt;\/dev\/null | grep -v \"^\/usr\/\"# \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044fsudo runuser -u nobody -- test -r \/path\/to\/file &amp;&amp; echo \"\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u043c\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<h4>\u041e\u043a\u0442\u044f\u0431\u0440\u044c: \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u043c\u0451\u0440\u0442\u0432\u044b\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u0434 &#8216;self&#8217;<\/h4>\n<p>\u041e\u0434\u0438\u043d \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u043e\u0441\u043c\u043e\u0442\u0440 Nginx \u0434\u0430\u043b \u0442\u0440\u0438 \u043d\u0430\u0445\u043e\u0434\u043a\u0438.<\/p>\n<p><strong>Nginx \u0445\u043e\u0434\u0438\u043b \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c.<\/strong> \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 <code>\/etc\/hostname<\/code>, \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0432 \u043f\u0430\u043f\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a, \u043e\u0442\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u043a\u043e\u0434\u043e\u043c 200. \u041b\u044e\u0431\u043e\u0439, \u043a\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u043e\u0442\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 (\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0430\u0440\u0445\u0438\u0432\u0430, \u043f\u043b\u0430\u0433\u0438\u043d, \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441), \u0447\u0438\u0442\u0430\u043b \u0431\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u0430\u0439\u0442 \u0444\u0430\u0439\u043b\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430:<\/p>\n<pre><code class=\"nginx\">disable_symlinks on from=$document_root;<\/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<pre><code class=\"bash\"># \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: \u0441\u0441\u044b\u043b\u043a\u0430 \u0432 \u043e\u0442\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u0430\u0442\u044c 403\/404, \u0430 \u043d\u0435 200sudo ln -s \/etc\/hostname \/var\/www\/site\/public\/proba-linkcurl -s -o \/dev\/null -w \"%{http_code}\\n\" --resolve example.com:443:127.0.0.1 https:\/\/example.com\/proba-linksudo rm \/var\/www\/site\/public\/proba-link<\/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><strong>\u0428\u0435\u0441\u0442\u044c <\/strong><code><strong>proxy_pass<\/strong><\/code><strong> \u0432\u0435\u043b\u0438 \u043d\u0430 \u043f\u043e\u0440\u0442\u044b, \u0433\u0434\u0435 \u0443\u0436\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043b\u0443\u0448\u0430\u043b<\/strong> \u2014 \u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u043b\u0443\u0436\u0431. \u041a\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u2014 \u0445\u043e\u0442\u044c \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 \u0432\u044b\u0448\u0435 1024 \u2014 \u0442\u043e\u0442 \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044f\u043c \u043f\u043e\u0434 \u0432\u0430\u0448\u0438\u043c \u0434\u043e\u043c\u0435\u043d\u043e\u043c. \u041c\u0451\u0440\u0442\u0432\u044b\u0435 location \u0443\u0434\u0430\u043b\u0435\u043d\u044b.<\/p>\n<pre><code class=\"bash\">for p in $(sudo nginx -T 2&gt;\/dev\/null | grep -oE \"proxy_pass https?:\/\/(127\\.0\\.0\\.1|localhost):[0-9]+\" | grep -oE \"[0-9]+$\" | sort -u); do  ss -ltn \"sport = :$p\" | grep -q LISTEN &amp;&amp; echo \"\u043f\u043e\u0440\u0442 $p: \u0441\u043b\u0443\u0448\u0430\u044e\u0442\" || echo \"\u043f\u043e\u0440\u0442 $p: \u041d\u0418\u041a\u0422\u041e \u041d\u0415 \u0421\u041b\u0423\u0428\u0410\u0415\u0422\"done<\/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><strong>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0438 CMS \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u043f\u043e\u0434 <\/strong><code><strong>script-src 'self'<\/strong><\/code> \u2014 \u043e\u0431 \u044d\u0442\u043e\u043c \u0432\u044b\u0448\u0435, \u0432 \u0447\u0430\u0441\u0442\u0438 2: \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u0441\u0432\u043e\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0441 <code>sandbox<\/code>.<\/p>\n<h4>CMS \u043d\u0435 \u0442\u043e\u0440\u0447\u0438\u0442 \u043d\u0430\u0440\u0443\u0436\u0443<\/h4>\n<p>Strapi \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u0431\u043e\u0440\u043a\u0438. \u041e\u043d \u0441\u043b\u0443\u0448\u0430\u0435\u0442 <code>127.0.0.1:1337<\/code>, \u043d\u0430\u0440\u0443\u0436\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e 80, 443 \u0438 SSH \u043d\u0430 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u0432\u0445\u043e\u0434 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043a\u043b\u044e\u0447\u0443. \u041f\u0440\u043e\u043a\u0441\u0438 <code>\/api\/cms\/<\/code>, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0445\u043e\u0434\u0438\u043b\u0430 \u0441\u0431\u043e\u0440\u043a\u0430, \u0437\u0430\u043a\u0440\u044b\u0442. \u0410\u0434\u043c\u0438\u043d\u043a\u0443 \u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e \u0447\u0435\u0440\u0435\u0437 SSH-\u0442\u0443\u043d\u043d\u0435\u043b\u044c:<\/p>\n<pre><code class=\"bash\">ssh -L 1337:127.0.0.1:1337 user@servercurl -s -o \/dev\/null -w \"%{http_code}\\n\" https:\/\/example.com\/admin\/    # \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u2014 404sudo ss -ltnp | grep -vE \"127\\.0\\.0\\.1|\\[::1\\]\"                       # \u0447\u0442\u043e \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e localhostsudo sshd -T | grep -E \"^(passwordauthentication|permitrootlogin|pubkeyauthentication)\"<\/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\u043b\u044f PHP-\u0441\u0430\u0439\u0442\u0430 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0430\u043c\u043e\u0435 \u0446\u0435\u043d\u043d\u043e\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435: \u0435\u0441\u043b\u0438 \u043f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u043d\u0435\u0439 \u043d\u0435 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430.<\/p>\n<h4>\u0414\u043e\u043c\u0435\u043d: \u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/h4>\n<p>\u0421\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e, \u0430 \u0441\u0430\u0439\u0442 \u0443\u0432\u0435\u0434\u0443\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u043e\u043c\u0435\u043d\u0430: \u043a\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 DNS, \u0442\u043e\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0447\u0442\u0443 \u043a\u0443\u0434\u0430 \u0437\u0430\u0445\u043e\u0447\u0435\u0442. \u0417\u0434\u0435\u0441\u044c \u0443 \u043c\u0435\u043d\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u043e \u043d\u0435 \u0432\u0441\u0451, \u0438 \u044d\u0442\u043e \u0447\u0435\u0441\u0442\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a:<\/p>\n<ul>\n<li>\n<p>\u0432\u0445\u043e\u0434 \u0432 DNS-\u043f\u0430\u043d\u0435\u043b\u044c (Cloudflare) \u2014 \u0441 \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439; \u043a\u043b\u044e\u0447\u0438 API \u043e\u0442 \u043d\u0435\u0451, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 git, \u0443\u0434\u0430\u043b\u0435\u043d\u044b;<\/p>\n<\/li>\n<li>\n<p>DNSSEC: \u0437\u043e\u043d\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0430 \u0443 Cloudflare (\u0437\u0430\u043f\u0438\u0441\u0438 <code>DNSKEY<\/code> \u0435\u0441\u0442\u044c), \u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044c <code>DS<\/code> \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u2014 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u0443\u043f\u043b\u0435\u043d \u0434\u043e\u043c\u0435\u043d, \u0435\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442. \u0426\u0435\u043f\u043e\u0447\u043a\u0430 \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u043d\u0435 \u0437\u0430\u043c\u043a\u043d\u0443\u0442\u0430, \u0438 \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442;<\/p>\n<\/li>\n<li>\n<p>CAA \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0430 (<code>0 issue \"letsencrypt.org\"<\/code>), \u043d\u043e Cloudflare, \u043f\u043e\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u0435\u0433\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u0441\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a \u043d\u0435\u0439 \u0441\u0432\u043e\u0438 \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0435 \u0446\u0435\u043d\u0442\u0440\u044b \u2014 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0438\u0445 \u0432\u0438\u0434\u043d\u043e \u043f\u044f\u0442\u044c. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u043d\u0435 \u043f\u0430\u043d\u0435\u043b\u044c, \u0430 \u043e\u0442\u0432\u0435\u0442 DNS.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u0443\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u043e\u0438\u043b \u043c\u043d\u0435 \u0432\u0435\u0447\u0435\u0440\u0430: \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u00ab\u043b\u0438\u0448\u043d\u044e\u044e\u00bb \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u0447\u0442\u044b (SPF, DKIM), \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435, \u043a\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0451 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442. \u0421\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0435\u044e \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0430 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a \u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f: \u0443 \u043c\u0435\u043d\u044f \u043f\u0438\u0441\u044c\u043c\u0430 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u0443\u0445\u043e\u0434\u044f\u0442 \u0438\u0437 Gmail \u0447\u0435\u0440\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 SMTP, \u0438 \u00ab\u0443\u0431\u043e\u0440\u043a\u0430\u00bb SPF \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043c\u0435\u043d\u044f \u0431\u0435\u0437 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438, \u043f\u043e\u043a\u0430 \u044f \u043d\u0435 \u0432\u0435\u0440\u043d\u0443\u043b \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0443 \u0441\u0435\u0431\u044f \u2014 \u0431\u0435\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043d\u0435\u043b\u044f\u043c:<\/p>\n<pre><code class=\"bash\">dig +short CAA example.com                 # \u043a\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044bdig +short DS example.com                  # \u0435\u0441\u0442\u044c \u043b\u0438 DS \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430dig +dnssec example.com | grep -E \"flags:.* ad\"   # \u0444\u043b\u0430\u0433 ad \u2014 \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u044c<\/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>CAA \u2014 <code>0 issue \"letsencrypt.org\"<\/code> \u0432 DNS-\u043f\u0430\u043d\u0435\u043b\u0438; \u0435\u0441\u043b\u0438 DNS \u0443 Cloudflare, \u0430 \u0441\u0430\u0439\u0442 \u0438\u0434\u0451\u0442 \u043c\u0438\u043c\u043e \u043d\u0435\u0433\u043e (\u0441\u0435\u0440\u043e\u0435 \u043e\u0431\u043b\u0430\u043a\u043e), \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 Cloudflare \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u2014 \u0442\u043e\u0433\u0434\u0430 \u0432 CAA \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0448 \u0423\u0426. DS Cloudflare \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 DNSSEC, \u0435\u0451 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u2014 \u0435\u0441\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0438\u043b\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a \u044d\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442; \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u0434\u043e \u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u0434\u043e\u043c\u0435\u043d\u0430. \u041f\u043b\u044e\u0441 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0434\u043e\u043c\u0435\u043d\u0430 \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0430\u0432\u0442\u043e\u043f\u0440\u043e\u0434\u043b\u0435\u043d\u0438\u0435 \u0438 \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u2014 \u0442\u0430\u043c \u0436\u0435.<\/p>\n<h4>fail2ban \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0435\u0433\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u0430<\/h4>\n<p>\u0428\u0435\u0441\u0442\u044c \u043a\u043b\u0435\u0442\u043e\u043a: <code>sshd<\/code>, <code>nginx-404<\/code>, <code>nginx-badbots<\/code>, <code>nginx-http-auth<\/code>, <code>nginx-limit-req<\/code>, <code>nginx-scraping<\/code>. \u0421\u0430\u043c\u0430\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u043a\u0438 \u2014 <code>nginx-404<\/code>: 10 \u043f\u0440\u043e\u043c\u0430\u0445\u043e\u0432 \u0437\u0430 10 \u043c\u0438\u043d\u0443\u0442 \u2014 \u0431\u0430\u043d \u043d\u0430 6 \u0447\u0430\u0441\u043e\u0432. \u0421\u043a\u0430\u043d\u0435\u0440\u044b \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u044e\u0442 <code>\/wp-login.php<\/code>, <code>\/.env<\/code>, <code>\/\/wp-content\/plugins\/\u2026<\/code>, \u0443 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0442\u0430\u043a\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043d\u0435\u0442, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u2014 \u043f\u0440\u043e\u043c\u0430\u0445.<\/p>\n<p><strong>\u0420\u044f\u0436\u0435\u043d\u044b\u0445 \u0440\u043e\u0431\u043e\u0442\u043e\u0432 \u043d\u0435 \u0431\u0430\u043d\u0438\u0442\u044c, \u0430 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043c \u043a\u044d\u0448.<\/strong> \u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e \u043f\u0440\u0438\u0448\u043b\u043e 11 952 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441 User-Agent \u00abGooglebot\/2.1\u00bb, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e 363 \u2014 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 Google; \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 97 % \u2014 \u0447\u0443\u0436\u0438\u0435 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0413\u0443\u0433\u043b\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0440\u0435\u0436\u0435 \u0431\u0430\u043d\u0438\u043b\u0438. \u0411\u0430\u043d\u0438\u0442\u044c \u043f\u043e User-Agent \u043d\u0435\u043b\u044c\u0437\u044f: \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438 \u0440\u044f\u0436\u0435\u043d\u044b\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0442\u043e\u0438\u0442 \u043c\u0435\u0441\u0442\u0430 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u0435. \u0422\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0438\u043d\u0430\u0447\u0435: \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u043f\u043e User-Agent \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0440\u043e\u0431\u043e\u0442\u0430, Nginx \u043e\u0442\u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u044d\u0448\u0430 \u2014 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0438\u043d\u0443\u0442\u044b \u043d\u0430\u0437\u0430\u0434; \u043b\u044e\u0434\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0441\u0432\u0435\u0436\u0443\u044e (<code>map $http_user_agent \u2026<\/code> \u2192 <code>proxy_cache_bypass<\/code> \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439). \u041f\u043e\u0432\u043e\u0434 \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c: \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0430\u043c \u2014 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Node, \u0438 \u043f\u043e\u0434 \u043d\u0430\u043f\u043b\u044b\u0432\u043e\u043c \u0440\u043e\u0431\u043e\u0442\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c 5,2 \u0441 \u043f\u0440\u043e\u0442\u0438\u0432 0,002 \u0441 \u0443 \u043e\u0442\u0434\u0430\u0447\u0438 \u0438\u0437 \u043a\u044d\u0448\u0430 Nginx. \u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u043e\u0431\u043e\u0442\u043e\u0432 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441\u0435\u0442\u044f\u043c \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u0432 (<code>googlebot.json<\/code> \u0443 Google, <code>searchbot.json<\/code> \u0443 OpenAI), \u043d\u0435 \u043f\u043e User-Agent. \u0413\u0440\u0443\u0431\u0430\u044f \u043f\u0440\u0438\u043a\u0438\u0434\u043a\u0430 \u043f\u043e \u0436\u0443\u0440\u043d\u0430\u043b\u0443:<\/p>\n<pre><code class=\"bash\"># \u00abGooglebot\u00bb \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c: 66.249.* \u2014 \u0433\u0440\u0443\u0431\u043e; \u0442\u043e\u0447\u043d\u043e \u2014 \u0441\u0432\u0435\u0440\u044f\u0442\u044c \u0441 googlebot.jsonzcat -f \/var\/log\/nginx\/access.log* | awk -F'\"' '$6 ~ \/Googlebot\\\/2.1\/ { split($1,a,\" \");  print (a[1] ~ \/^66\\.249\\.\/) ? \"\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439\" : \"\u0447\u0443\u0436\u043e\u0439\" }' | sort | uniq -c<\/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>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u043e\u043d\u0430 \u0431\u0430\u043d\u0438\u0442 \u0438 \u0432\u0430\u0441, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043c\u0451\u0440\u0442\u0432\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u043d\u0430\u0440\u0443\u0436\u0438. \u041e\u0434\u0438\u043d \u0440\u0430\u0437 \u044f \u0442\u0430\u043a \u0437\u0430\u0431\u0430\u043d\u0438\u043b \u0441\u0435\u0431\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0441\u0430\u0439\u0442, \u0438 \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043b\u0435\u0436\u0438\u0442. \u041c\u0451\u0440\u0442\u0432\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 <code>--resolve<\/code>. \u0410 \u0435\u0441\u043b\u0438 \u0431\u0430\u043d \u0432\u0441\u0451 \u0436\u0435 \u043f\u0440\u0438\u043b\u0435\u0442\u0435\u043b, \u0430 SSH \u0436\u0438\u0432, \u0441\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u043c\u0443:<\/p>\n<pre><code class=\"bash\">sudo fail2ban-client status nginx-404sudo fail2ban-client set nginx-404 unbanip &lt;\u0432\u0430\u0448 IP&gt;<\/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>\u0421\u0442\u043e\u0440\u043e\u0436\u0430: \u0437\u0430\u0449\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u043b\u0447\u0430<\/h4>\n<p><strong>\u0413\u0435\u0439\u0442\u044b \u0432\u044b\u043a\u0430\u0442\u0430<\/strong> \u2014 \u043d\u043e\u0432\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u0442 \u0436\u0438\u0432\u043e\u0439 \u0441\u0430\u0439\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442:<\/p>\n<ul>\n<li>\n<p>\u0432 \u0441\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 <code>.env<\/code> \u0438 \u043a\u043b\u044e\u0447\u0435\u0439 \u0443\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0442 \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043e\u0434\u0430, \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439, \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0447\u0438\u0442\u0430\u0435\u0442 \u0436\u0438\u0432\u043e\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a CSP;<\/p>\n<\/li>\n<li>\n<p><code>npm audit<\/code>: \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u2014 \u0441\u0442\u043e\u043f.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u0442\u043e\u0440\u043e\u0436 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/strong> \u0440\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 \u0441\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043d\u043e\u0440\u043c\u043e\u0439: \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u0432\u0435\u0431-\u043a\u043e\u0440\u043d\u044f\u0445 \u0438 \u043f\u0430\u043f\u043a\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a, SVG \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u0445, \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 (<code>dpkg -V<\/code>), <code>\/etc\/ld.so.preload<\/code>, \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043a\u043b\u044e\u0447\u0438 SSH, \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a, \u0447\u0443\u0436\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043d\u043e\u0432\u044b\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u0438 \u0442\u043e\u043a\u0435\u043d\u044b CMS, \u0434\u0435\u0440\u0435\u0432\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u043d\u043e\u0432\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u043a\u0438 <code>npm audit<\/code>. \u041d\u043e\u0432\u043e\u0435 \u2014 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u043b\u043e\u043c, \u043d\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043e\u0431\u044f\u0437\u0430\u043d \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. \u0422\u0440\u0435\u0432\u043e\u0433\u0430 \u2014 \u0432 Telegram.<\/p>\n<p>\u0421\u0442\u043e\u0440\u043e\u0436\u0430 \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u0438 \u0434\u0440\u0443\u0433 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u043c. \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u043e\u0439 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u0438 \u0441\u0442\u043e\u0440\u043e\u0436 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0435\u0451 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u044c\u044e. 26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u043e\u043d \u043f\u0440\u0438\u0441\u043b\u0430\u043b \u00ab\u043a\u043e\u043f\u0438\u044f \u0441 \u041f\u041a \u2014 \u0431\u0435\u0434\u0430, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f 31 \u0447 \u043d\u0430\u0437\u0430\u0434\u00bb: \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435. \u0421\u0442\u043e\u0440\u043e\u0436 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043a\u0430\u043a \u043d\u0430\u0434\u043e \u2014 \u0430 \u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0442\u0440\u0435\u0432\u043e\u0433\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0434\u043d\u044f, \u043a\u043e\u0433\u0434\u0430 \u0441\u0435\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. \u0421\u0430\u043c\u043e\u0435 \u0441\u043b\u0430\u0431\u043e\u0435 \u0437\u0432\u0435\u043d\u043e \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0442\u0440\u0435\u0432\u043e\u0433 \u2014 \u0442\u043e\u0442, \u043a\u0442\u043e \u0438\u0445 \u0447\u0438\u0442\u0430\u0435\u0442.<\/p>\n<p>\u041e\u0434\u043d\u0430\u0436\u0434\u044b \u043e\u043d \u043f\u043e\u0434\u043d\u044f\u043b \u0442\u0440\u0435\u0432\u043e\u0433\u0443 \u00ab\u0441\u043b\u0435\u0434\u044b \u0432\u0437\u043b\u043e\u043c\u0430\u00bb, \u0438 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043b\u043e\u0436\u043d\u043e\u0439: \u0448\u0430\u0431\u043b\u043e\u043d \u0443\u0437\u043d\u0430\u043b \u00ab\u0441\u0435\u043a\u0440\u0435\u0442\u00bb \u0432 \u0444\u0430\u0439\u043b\u0435 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u042f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b \u0435\u0451 \u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043b \u0441\u0442\u043e\u0440\u043e\u0436\u0430, \u043d\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b: \u043c\u043e\u043b\u0447\u0430\u0449\u0438\u0439 \u0441\u0442\u043e\u0440\u043e\u0436 \u0445\u0443\u0436\u0435 \u0448\u0443\u043c\u043d\u043e\u0433\u043e.<\/p>\n<p>\u0418 \u0447\u0435\u0441\u0442\u043d\u043e \u043e \u0441\u043b\u0430\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u043c \u0437\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439: \u0441\u0442\u043e\u0440\u043e\u0436, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0441\u043c\u0435\u043d\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043c\u043e\u043b\u0447\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0431\u0435\u0434\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0445\u0443\u0436\u0435. \u0422\u0430\u043a \u043f\u0440\u043e\u0448\u043b\u0430 \u043c\u0438\u043c\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430\u044f DOMPurify (\u0447\u0430\u0441\u0442\u044c 1). \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u00ab\u0443\u0445\u0443\u0434\u0448\u0435\u043d\u0438\u0435 \u2014 \u0442\u0440\u0435\u0432\u043e\u0433\u0430 \u0437\u0430\u043d\u043e\u0432\u043e\u00bb \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e, \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e: \u0441\u043e \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c \u043f\u0440\u043e\u0431\u0430 \u043a\u0440\u0430\u0441\u043d\u0435\u0435\u0442.<\/p>\n<hr\/>\n<h3>\u0427\u0435\u043a-\u043b\u0438\u0441\u0442: \u0432\u0441\u0451 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0434\u043d\u0438\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c<\/h3>\n<pre><code>\u041e\u0411\u041d\u041e\u0412\u041b\u0415\u041d\u0418\u042f[ ] apt-get changelog &lt;\u043f\u0430\u043a\u0435\u0442&gt; | grep CVE \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c CVE, \u0430 \u043d\u0435 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438[ ] apt-cache policy nginx php*-fpm openssl \u2014 Installed = Candidate[ ] unattended-upgrades: \u0436\u0443\u0440\u043d\u0430\u043b, \u0442\u0430\u0439\u043c\u0435\u0440, --dry-run; \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0440\u043e \u043e\u043a\u043d\u043e \u0434\u043e \u0441\u0443\u0442\u043e\u043a[ ] Node \u0438\u0437 NodeSource \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u2014 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b[ ] apt list --upgradable | grep -- -security \u2014 \u0436\u0434\u0451\u0442 \u0434\u043e\u043b\u044c\u0448\u0435 \u0441\u0443\u0442\u043e\u043a = \u0442\u0440\u0435\u0432\u043e\u0433\u0430[ ] \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u2014 \/proc\/*\/exe \u00ab(deleted)\u00bb \u043f\u0443\u0441\u0442\u043e: PHP-FPM, Node \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b[ ] npm audit --omit=dev; \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u043e\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u2014    overrides \u0441 ^, \u043f\u0440\u043e\u0431\u0430 \u043d\u0430 \u043a\u043e\u043f\u0438\u0438[ ] sharp: require('sharp').versions.rsvg \u2265 2.63.2, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0435 SVG[ ] Brotli: libbrotli1 \u0438 Python-\u043f\u0430\u043a\u0435\u0442\u044b \u0441 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u043e\u0439 111497;    \/proc\/*\/maps \u0431\u0435\u0437 \u00ablibbrotli (deleted)\u00bb\u0415\u0421\u041b\u0418 PHP[ ] find \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0445 .php \u0438 .php \u0432 uploads;    wp core\/plugin verify-checksums; \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432\u0421\u0410\u0419\u0422[ ] \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438: \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0441 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435\u043c \u2014 \u0443\u0445\u043e\u0434\u044f\u0442 \u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b? \u041d\u0435 \u043d\u0443\u0436\u0435\u043d \u2014 \u0441\u043d\u044f\u0442\u044c[ ] CSP \u0431\u0435\u0437 'unsafe-inline' \u0438 'unsafe-eval'; \u0440\u044f\u0434\u043e\u043c Report-Only \u0441 report-uri[ ] \u043e\u0442\u0447\u0451\u0442\u044b CSP \u2014 \u0441\u0432\u043e\u0434\u043a\u043e\u0439 \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e;    \u041c\u0435\u0442\u0440\u0438\u043a\u0430 \u2014 \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u043e\u0432\u044b\u0435 mc.yandex.* \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u042f\u043d\u0434\u0435\u043a\u0441\u0430[ ] \u0441\u0431\u043e\u0440\u043a\u0430: 0 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0438\u043d\u043b\u0430\u0439\u043d-&lt;script&gt;, 0 style=, 0 on*=[ ] \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438: \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u0441\u0432\u043e\u044f CSP \u0441 sandbox[ ] add_header \u0432 location \u2014 \u0441 include \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438; sites-enabled \u2014 \u0441\u0441\u044b\u043b\u043a\u0430\u0421\u0415\u0420\u0412\u0415\u0420[ ] \u043f\u0430\u043d\u0435\u043b\u044c CMS \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u2014 404; CMS \u043d\u0430 127.0.0.1 \u0438 \u043d\u0435 \u043e\u0442 root[ ] \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430 systemd; dump.pm2 \u2014 600 (\u0438\u043b\u0438 640 root:&lt;pm2&gt;)[ ] \u0434\u0435\u0440\u0435\u0432\u043e \u0441\u0430\u0439\u0442\u0430 \u043d\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0443; .env \u2014 640; \u0431\u0435\u0437 safe.directory[ ] find -perm -o+r: \u043d\u0435\u0442 \u0434\u0430\u043c\u043f\u043e\u0432, \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 .git, \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0445 \u0432\u0441\u0435\u043c\u0438[ ] \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 git \u2014 \u043f\u0435\u0440\u0435\u0432\u044b\u043f\u0443\u0449\u0435\u043d\u044b (gitleaks \/ trufflehog)[ ] disable_symlinks on; server_tokens off; \u043c\u0451\u0440\u0442\u0432\u044b\u0445 proxy_pass \u043d\u0435\u0442[ ] fail2ban nginx-404; \u043c\u0451\u0440\u0442\u0432\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0414\u041e\u041c\u0415\u041d[ ] DNS-\u043f\u0430\u043d\u0435\u043b\u044c \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u2014 \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f; \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430; \u0430\u0432\u0442\u043e\u043f\u0440\u043e\u0434\u043b\u0435\u043d\u0438\u0435[ ] dig CAA \/ DS: CAA \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u0430\u0448 \u0423\u0426; DNSSEC \u0441 DS \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 (\u0444\u043b\u0430\u0433 ad)[ ] \u043f\u043e\u0447\u0442\u0430: \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0443\u0431\u0438\u0440\u0430\u0442\u044c SPF\/DKIM \u2014 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0438\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0421\u0422\u041e\u0420\u041e\u0416\u0410[ ] \u0441\u0442\u043e\u0440\u043e\u0436 \u043f\u0438\u0448\u0435\u0442 \u0432\u0430\u043c \u0441\u0430\u043c \u2014 \u0438 \u0432\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438, \u0447\u0442\u043e \u043e\u043d \u043b\u043e\u0432\u0438\u0442, \u043f\u043e\u0434\u043b\u043e\u0436\u0438\u0432 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435[ ] \u0431\u0435\u0434\u0430 \u0441\u0442\u0430\u043b\u0430 \u0445\u0443\u0436\u0435 \u2014 \u0442\u0440\u0435\u0432\u043e\u0433\u0430 \u0437\u0430\u043d\u043e\u0432\u043e; \u0442\u0440\u0435\u0432\u043e\u0433\u0438 \u043a\u0442\u043e-\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c<\/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<h3>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0421\u043b\u043e\u0432 \u00ab\u0441\u0430\u0439\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u00bb \u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443 \u2014 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u00ab\u0447\u0451\u0440\u043d\u043e\u0433\u043e \u043e\u043a\u0442\u044f\u0431\u0440\u044f\u00bb \u044d\u0442\u043e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438. \u0417\u0430\u043a\u0440\u044b\u0442\u044b \u0446\u0435\u043b\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b: \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044f, \u0438\u043d\u043b\u0430\u0439\u043d-XSS, \u0447\u0443\u0436\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0431\u0435\u0437 \u0441\u043f\u0440\u043e\u0441\u0430, \u043a\u043b\u0438\u043a\u0434\u0436\u0435\u043a\u0438\u043d\u0433, \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a. \u041e\u0441\u0442\u0430\u044e\u0442\u0441\u044f Strapi \u043d\u0430 Node.js (\u0441 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u0431\u0435\u0437 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b systemd), \u0441\u0430\u043c\u0430 \u041c\u0435\u0442\u0440\u0438\u043a\u0430 \u043a\u0430\u043a \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, Trusted Types, \u0435\u0449\u0451 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443, \u0438 \u0434\u043e\u043c\u0435\u043d: CAA \u043f\u043e\u043a\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043d\u0435 \u043e\u0434\u043d\u043e\u0433\u043e Let\u2019s Encrypt, \u0430 DNSSEC \u043d\u0435 \u0437\u0430\u043c\u043a\u043d\u0443\u0442. \u0412\u0441\u0451 \u0432\u044b\u0448\u0435 \u2014 \u043f\u0440\u043e \u043e\u0434\u0438\u043d \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0430\u0439\u0442. \u0412\u0430\u0448\u0438 \u0444\u043e\u0440\u043c\u044b \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0441\u0432\u043e\u0438\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0438 \u043a\u0430\u0436\u0434\u043e\u0435 \u043b\u0443\u0447\u0448\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e \u0437\u0430\u043c\u0435\u0440\u0443.<\/p>\n<h3>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435<\/h3>\n<p>\u0416\u0443\u0440\u043d\u0430\u043b\u044b Nginx, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0447\u0438\u0442\u0430\u043b \u0440\u0430\u0434\u0438 fail2ban, \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e: \u043a\u0430\u043a\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0440\u043e\u0431\u043e\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 ChatGPT, \u0438 \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0451\u043c \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u2014 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0438\u0442\u0440\u0438\u043d\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 <a href=\"https:\/\/skoropay.shop\/\" rel=\"noopener nofollow\">skoropay.shop<\/a> \u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442 \u043f\u0440\u043e\u0434\u0430\u0436\u0438. \u041e\u0431 \u044d\u0442\u043e\u043c \u2014 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f.<\/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\/1100918\/\">https:\/\/habr.com\/ru\/articles\/1100918\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0423 \u043c\u0435\u043d\u044f \u043a\u0440\u0443\u0433\u043b\u043e\u0441\u0443\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0430\u0433\u0435\u043d\u0442\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430: \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u043a\u0440\u0443\u0433\u0443 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043c\u043e\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0431\u044e\u043b\u043b\u0435\u0442\u0435\u043d\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0438 \u0441\u0432\u0435\u0440\u044f\u044e\u0442 \u0438\u0445 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043a\u0440\u0443\u0433\u0435 \u043e\u043d\u0438 \u043f\u043e\u0434\u043d\u044f\u043b\u0438 \u043e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0443\u044e \u0441\u0432\u043e\u0434\u043a\u0443: 15 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0437\u0430 \u043c\u0435\u0441\u044f\u0446, \u0432\u0441\u0435 \u00abcritical\u00bb \u0438 \u00abhigh\u00bb \u2014 PHP, Nginx, Node.js, Next.js, Java, GitLab. \u0422\u0430\u043a\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u043b\u0438\u0441\u0442\u044b\u0432\u0430\u044e\u0442. \u042f \u0441\u0435\u043b \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0440\u0443\u043a\u0430\u043c\u0438: \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0437\u0430\u0434\u0435\u0432\u0430\u0435\u0442 \u043b\u0438 \u043c\u0435\u043d\u044f \u0438 \u0447\u0435\u043c \u044d\u0442\u043e \u043b\u0435\u0447\u0438\u0442\u0441\u044f.\u0418\u0442\u043e\u0433 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430:\u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0432\u043e\u0434\u043a\u0438 \u043c\u0435\u043d\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0435\u043b\u0438: Node.js \u0431\u044b\u043b \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d \u0447\u0435\u0442\u044b\u0440\u0435 \u0434\u043d\u044f, \u0430 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0438 Nginx \u0435\u0449\u0451 \u043d\u0435 \u0441\u0442\u043e\u044f\u043b\u0438 \u0432 \u0442\u043e\u0442 \u0432\u0435\u0447\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u044f \u0441\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u2014 \u0445\u043e\u0442\u044f \u044f \u0441\u0447\u0438\u0442\u0430\u043b, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c;\u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u2014 \u043d\u0435 \u0442\u043e, \u0447\u0435\u043c \u043a\u0430\u0436\u0443\u0442\u0441\u044f: \u00abcritical\u00bb \u0443 Nginx \u2014 \u044d\u0442\u043e \u043e\u0446\u0435\u043d\u043a\u0430 CVSS, \u0430 \u0441\u0430\u043c nginx.org \u0441\u0442\u0430\u0432\u0438\u0442 \u00abmedium\u00bb; \u0430 \u043e\u0434\u043d\u0430 \u00ab\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c Next.js\u00bb \u043d\u0430 \u0434\u0435\u043b\u0435 \u0441\u0438\u0434\u0438\u0442 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0434\u043b\u044f SVG, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0433\u0434\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u2014 \u0441 Next.js \u0438\u043b\u0438 \u0431\u0435\u0437;PHP-\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044f \u043d\u0435 \u0437\u0430\u0434\u0435\u043b\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435: PHP \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435\u0442.\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u2014 \u043d\u0435 \u0432\u0435\u0437\u0435\u043d\u0438\u0435. \u0412 \u0438\u044e\u043d\u0435 \u044f \u043f\u0438\u0441\u0430\u043b \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u0441\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435\u043c \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 easylinklife.com \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 (\u00abLighthouse 100\/100\u2026\u00bb). \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u044f \u0441\u043d\u044f\u043b \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043d\u0430 132 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043d\u043b\u0430\u0439\u043d-\u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u043e\u0448\u0451\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043b\u043e\u0448\u043d\u044b\u0445 \u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0445\u043e\u0434\u0438\u043b \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u00ab\u043f\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u043c\u0435\u0441\u0442\u0430\u043c\u00bb.\u041d\u0438\u0436\u0435 \u0442\u0440\u0438 \u0447\u0430\u0441\u0442\u0438. \u041f\u0435\u0440\u0432\u0430\u044f \u2014 \u0440\u0430\u0437\u0431\u043e\u0440 \u00ab\u0447\u0451\u0440\u043d\u043e\u0433\u043e \u043e\u043a\u0442\u044f\u0431\u0440\u044f\u00bb \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0442\u043e \u0436\u0435 \u0443 \u0441\u0435\u0431\u044f. \u0412\u0442\u043e\u0440\u0430\u044f \u2014 \u0447\u0442\u043e \u044f \u0443\u0431\u0440\u0430\u043b \u0441 \u0441\u0430\u0439\u0442\u0430 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443. \u0422\u0440\u0435\u0442\u044c\u044f \u2014 \u0434\u044b\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0430\u0448\u0451\u043b \u0443 \u0441\u0435\u0431\u044f \u0437\u0430 \u0434\u0432\u0430 \u043c\u0435\u0441\u044f\u0446\u0430, \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0445 \u043d\u0430\u0439\u0442\u0438 \u0443 \u0432\u0430\u0441. \u0421\u0442\u0435\u043a: Astro 7 (\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430), Strapi 5 \u043a\u0430\u043a CMS \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438, Nginx, Ubuntu 24.04, \u043e\u0434\u0438\u043d VPS.\u0427\u0430\u0441\u0442\u044c 1. \u0427\u0451\u0440\u043d\u044b\u0439 \u043e\u043a\u0442\u044f\u0431\u0440\u044c \u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0439\u0421\u0432\u043e\u0434\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0427\u0442\u043e\u0427\u0442\u043e \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 (\u043f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a)\u041c\u0435\u043d\u044f \u0437\u0430\u0434\u0435\u043b\u043e?PHP CVE-2026-109618, 109619\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430, CVSS 9.2; PHP 8.5.12 \/ 8.4.27 \/ 8.3.36 \/ 8.2.35 \u043e\u0442 21.10\u043d\u0435\u0442 \u2014 PHP \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435\u0442Nginx CVE-2026-15176\u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u0440\u0438 alias + rewrite \u0432 \u043e\u0434\u043d\u043e\u043c location\u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438; \u043f\u0430\u043a\u0435\u0442 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u044b\u043b \u0441\u0442\u0430\u0440\u044b\u0439Nginx CVE-2026-93479\u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445; \u043f\u043e nginx.org \u2014 \u0432\u0435\u0442\u043a\u0438 1.30\u20131.31, Ubuntu \u0437\u0430\u043a\u0440\u044b\u043b\u0430 \u0438 \u0432 1.24\u0431\u044b\u043b \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043dNginx CVE-2026-97205use-after-free \u043f\u0440\u0438 aio\u043d\u0435\u0442 aio; \u043f\u0430\u043a\u0435\u0442 \u0431\u044b\u043b \u0441\u0442\u0430\u0440\u044b\u0439Node CVE-2026-111497Brotli \u0432 zlib Node, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430\u0431\u044b\u043b \u043e\u0442\u043a\u0440\u044b\u0442 4 \u0434\u043d\u044f\u0442\u0430 \u0436\u0435 CVE \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c libbrotli1\u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 Brotli; Ubuntu \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0443 25.10\u0431\u044b\u043b\u0430 \u0441\u0442\u0430\u0440\u0430\u044f \u2014 \u043e\u0431\u043d\u043e\u0432\u0438\u043b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 NginxNode CVE-2026-105482, 106069\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0432 dns.resolve, \u043d\u0435\u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 IP \u0432 TLS\u0437\u0430\u043a\u0440\u044b\u0442\u043e \u0442\u0435\u043c \u0436\u0435 22.23.4Node CVE-2026-105483\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 IP \u0432 TLS\u043d\u0435\u0442: \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0442\u043a\u0438 24 \u0438 26\u00abNext.js\u00bb CVE-2026-96889librsvg (SVG) \u0432\u043d\u0443\u0442\u0440\u0438 sharp; Next.js \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u0441\u0432\u043e\u0439 critical GHSA-2464-fhr4-w9xw \u043d\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b: sharp 0.35.5 \u0441 librsvg 2.63.2 \u2014 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043eNext.js GHSA-673q-mjm6-r5xr\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 use cache (16.0\u201316.4.0)\u043d\u0435\u0442 Next.jsNext.js GHSA-p3m5-59mp-jv5r\u043e\u0442\u043a\u0430\u0437 \u0432 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 Server Actions\u043d\u0435\u0442 Next.jsJava CVE-2026-91403JSSE (TLS \u0432 Java), CVSS 9.1, \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u043f\u043e \u0441\u0435\u0442\u0438\u043d\u0435\u0442 JavaGitLab CVE-2026-110264\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, CVSS 10, \u0432\u0435\u0440\u0441\u0438\u0438 \u0441 7.0\u043d\u0435\u0442 GitLabGitLab CVE-2026-97229\u0442\u043e \u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0443 \u0432 CI\/CD, CVSS 10, 19.2\u201319.4\u043d\u0435\u0442 GitLab\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0438 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043f\u0440\u043e \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.\u041f\u0440\u0430\u0432\u0438\u043b\u043e, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e: \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 \u0432\u0440\u0451\u0442\u041d\u0430 Ubuntu 24.04 php -v \u043f\u043e\u043a\u0430\u0436\u0435\u0442 8.3.6, nginx -v \u2014 1.24.0. \u041f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u044d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u0432\u0443\u0445\u043b\u0435\u0442\u043d\u0435\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438, \u0438 \u043b\u044e\u0431\u043e\u0439 \u0441\u043a\u0430\u043d\u0435\u0440 \u00ab\u043f\u043e \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u00bb \u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0442 \u0438\u0445 \u0432 \u043a\u0440\u0430\u0441\u043d\u044b\u0439. \u041d\u043e Ubuntu \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e \u2014 \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0438 \u0432 \u0441\u0442\u0430\u0440\u0443\u044e. \u0422\u0430\u043a, \u043f\u0430\u043a\u0435\u0442 php8.3 \u0432\u0435\u0440\u0441\u0438\u0438 8.3.6-0ubuntu0.24.04.13 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0435\u0438\u0445 \u043e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0445 RCE, \u0445\u043e\u0442\u044f \u043d\u043e\u043c\u0435\u0440 \u0443 \u043d\u0435\u0433\u043e 8.3.6.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u043b\u0438 CVE\u00bb \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435 \u043d\u043e\u043c\u0435\u0440\u0443 \u0432\u0435\u0440\u0441\u0438\u0438, \u0430 \u0436\u0443\u0440\u043d\u0430\u043b\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0430\u043a\u0435\u0442\u0430:# \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f CVE \u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435apt-get changelog php8.3-fpm | grep -m1 -E &#171;CVE-2026-109618|CVE-2026-109619&#8243;apt-get changelog nginx     | grep -oE &#171;CVE-2026-[0-9]+&#187; | sort -u# \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0438 \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044fapt-cache policy nginx php8.3-fpm\u0415\u0441\u043b\u0438 \u0432 Candidate \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u043e\u0432\u0435\u0435 Installed, \u0430 \u0432 \u0435\u0451 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u0435\u0441\u0442\u044c \u0432\u0430\u0448\u0430 CVE \u2014 \u0432\u044b \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b. \u0420\u043e\u0432\u043d\u043e \u0442\u0430\u043a \u044f \u0438 \u043d\u0430\u0448\u0451\u043b \u0443 \u0441\u0435\u0431\u044f Nginx.PHP2Shell: CVE-2026-109618 \u0438 109619\u041d\u0430 php.net 21 \u043e\u043a\u0442\u044f\u0431\u0440\u044f: \u00abfix two critical vulnerabilities that can allow unauthenticated remote code execution\u00bb \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430. \u041e\u0431\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a PHP \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (\u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, longjmp): \u0447\u0430\u0441\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0443\u0436\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. 26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f CISA \u0432\u043d\u0435\u0441\u043b\u0430 \u043e\u0431\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f (Known Exploited Vulnerabilities), \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0443\u0433\u0440\u043e\u0437\u0430.\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c:php -vdpkg -l | grep -E &#171;^ii  php[0-9.]+-(fpm|cli|common)&#187; | awk &#8216;{print $2, $3}&#8217;# Ubuntu\/Debian, \u043f\u0430\u043a\u0435\u0442\u044b \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u2014 \u0438\u0449\u0435\u043c CVE \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435:apt-get changelog php8.3-fpm | grep -m1 CVE-2026-109618# \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a (\u0438\u043c\u044f \u0441\u043b\u0443\u0436\u0431\u044b \u2014 \u043f\u043e \u0432\u0430\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438):sudo apt-get update &amp;&amp; sudo apt-get install &#8212;only-upgrade &#8216;php8.3*&#8217;sudo systemctl restart php8.3-fpm# PHP \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f ondrej\/php \u0438\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0441\u0430\u043c \u2014 \u043d\u0443\u0436\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0435 \u043d\u0438\u0436\u0435 8.5.12 \/ 8.4.27 \/ 8.3.36 \/ 8.2.35\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438: \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 FPM \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u043c \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u2014 sudo lsof -n | grep -E &#171;php.*(deleted)&#187;: \u043f\u0443\u0441\u0442\u043e \u2014 \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e.\u0415\u0441\u043b\u0438 \u0441\u0430\u0439\u0442 \u0431\u044b\u043b \u043e\u0442\u043a\u0440\u044b\u0442 \u0434\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u2014 \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u044b. \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 PHP-\u0441\u0430\u0439\u0442\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u043c-\u0448\u0435\u043b\u043b\u043e\u043c. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0441\u043c\u043e\u0442\u0440:# PHP-\u0444\u0430\u0439\u043b\u044b, \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0435 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0442\u0440\u0438 \u043d\u0435\u0434\u0435\u043b\u0438 (\u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0432\u044b\u043a\u0430\u0442\u0430\u043c\u0438)sudo find \/var\/www -type f -name &#171;*.php&#187; -newermt &#171;2026-10-07&#187; -printf &#171;%TY-%Tm-%Td %p\\n&#187; | sort# PHP \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0433\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043esudo find \/var\/www -path &#171;*\/uploads\/*&#187; -name &#171;*.php*&#187;# \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0448\u0435\u043b\u043b\u043e\u0432 (\u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u2014 \u0447\u0438\u0442\u0430\u0442\u044c \u0433\u043b\u0430\u0437\u0430\u043c\u0438)sudo grep -rlE &#8212;include=&#187;*.php&#187; &#171;eval\\(\\s*(base64_decode|gzinflate|str_rot13)|assert\\(\\s*\\\\\\$_(POST|GET|REQUEST)|preg_replace\\(.*\/e&#187; \/var\/www\u0414\u043b\u044f WordPress \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u0434\u0451\u0436\u043d\u0435\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c \u2014 \u0441\u0432\u0435\u0440\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c\u0438 \u0441\u0443\u043c\u043c\u0430\u043c\u0438 \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 (WP-CLI):wp core verify-checksumswp plugin verify-checksums &#8212;allwp user list &#8212;role=administrator &#8212;fields=ID,user_login,user_registered\u041d\u043e\u0432\u044b\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438, \u2014 \u044d\u0442\u043e \u043d\u0435 \u00ab\u0431\u0430\u0433\u00bb, \u0430 \u0432\u0437\u043b\u043e\u043c: \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u043a\u043b\u044e\u0447\u0438 \u0438\u0437 wp-config.php, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.Nginx: \u00abcritical\u00bb \u0432 \u0441\u0432\u043e\u0434\u043a\u0435, \u00abmedium\u00bb \u043d\u0430 nginx.org \u2014 \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0431\u044b\u043b\u043e \u043d\u0430\u0434\u043e\u0412\u0441\u0435 \u043f\u044f\u0442\u044c \u043e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 nginx.org \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b medium \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 1.31.7+ \u0438 1.30.6+. \u0412 NVD \u0443 \u0442\u0435\u0445 \u0436\u0435 15176 \u0438 97205 \u2014 CVSS v4 9.2: \u00abcritical\u00bb \u0432 \u0441\u0432\u043e\u0434\u043a\u0435 \u0432\u0437\u044f\u0442 \u043e\u0442\u0442\u0443\u0434\u0430. \u0420\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c\u043e: nginx.org \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0417\u0430\u0434\u0435\u0432\u0430\u044e\u0442 \u043e\u043d\u0438 \u043d\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u0443\u044e, \u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:CVE-2026-15176   alias \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 rewrite \u0432 \u043e\u0434\u043d\u043e\u043c locationCVE-2026-93479   \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 (\u043f\u043e nginx.org \u2014 1.30.0\u20131.30.5 \u0438 1.31.2\u20131.31.6)CVE-2026-97205   aioCVE-2026-97629   ssl_session_tickets (\u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0430 TLS-\u0441\u0435\u0441\u0441\u0438\u0438)CVE-2026-95101   HTTP\/3\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u0432\u0430\u0441 \u044d\u0442\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b:sudo nginx -T 2&gt;\/dev\/null | grep -nE &#171;^\\s*(aio|alias|rewrite|ssl_session_tickets|http3|listen .*quic)&#187;\u0423 \u043c\u0435\u043d\u044f \u2014 \u0442\u043e\u043b\u044c\u043a\u043e ssl_session_tickets off;, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0438 \u043e\u0434\u043d\u0430 \u043c\u0435\u043d\u044f \u043d\u0435 \u0437\u0430\u0434\u0435\u0432\u0430\u043b\u0430. \u041d\u0430 \u044d\u0442\u043e\u043c \u044f \u0431\u044b \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430. Ubuntu \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 nginx 1.24.0-2ubuntu7.19 \u0441 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0430\u043c\u0438 \u043e\u0442 15176, 93479, 97205 \u0438 97629, \u0430 \u0443 \u043c\u0435\u043d\u044f \u0441\u0442\u043e\u044f\u043b 7.18:$ apt-cache policy nginx  Installed: 1.24.0-2ubuntu7.18  Candidate: 1.24.0-2ubuntu7.19\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u0441\u0430\u043c\u043e, \u0445\u043e\u0442\u044f unattended-upgrades \u0432\u043a\u043b\u044e\u0447\u0451\u043d. \u041d\u0435 \u043f\u043e\u043b\u043e\u043c\u043a\u0430 \u2014 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0430\u043b\u043e \u0432 \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u00abNo packages found that can be upgraded unattended\u00bb. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0431\u044b \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u0442\u043a\u0438. \u041e\u043a\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043e\u043a\u043e\u043b\u043e \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u0441\u0443\u0442\u043e\u043a \u2014 \u0434\u043b\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044e\u0442 \u0432\u0441\u0435, \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e.  \u041c\u043e\u0439 \u0436\u0435 \u0430\u0433\u0435\u043d\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u0432\u0438\u0434\u0435\u043b: \u0432 \u0435\u0433\u043e \u043e\u0442\u0447\u0451\u0442\u0435 \u0441\u0442\u043e\u044f\u043b\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u00ab\u0436\u0434\u0451\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f: nginx \u20267.19\u00bb. \u041d\u043e \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439, \u043d\u0435 \u0442\u0440\u0435\u0432\u043e\u0433\u043e\u0439: \u0434\u043b\u044f Nginx \u0430\u0433\u0435\u043d\u0442 \u0441\u0447\u0438\u0442\u0430\u043b \u0442\u0440\u0435\u0432\u043e\u0433\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0434\u0435\u0432\u0430\u0435\u0442 \u043c\u043e\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u043c\u043e\u043b\u0447\u0430\u0449\u0435\u0435 \u0442\u0440\u043e\u0435 \u0441\u0443\u0442\u043e\u043a, \u2014 \u0430 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438 \u0442\u043e\u0433\u043e, \u043d\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u0412\u044b\u0432\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e\u0439: \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0436\u0434\u0451\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u2014 \u0443\u0436\u0435 \u043f\u043e\u0432\u043e\u0434 \u0434\u043b\u044f \u0442\u0440\u0435\u0432\u043e\u0433\u0438, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0437\u0430\u0434\u0435\u0432\u0430\u0435\u0442 \u043b\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0430\u0448 \u043a\u043e\u043d\u0444\u0438\u0433. \u0422\u0435\u043f\u0435\u0440\u044c \u0430\u0433\u0435\u043d\u0442 \u0442\u0430\u043a \u0438 \u0434\u0435\u043b\u0430\u0435\u0442: \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 *-security, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d \u0432\u0438\u0434\u0438\u0442 \u0434\u043e\u043b\u044c\u0448\u0435 \u0441\u0443\u0442\u043e\u043a, \u2014 \u0442\u0440\u0435\u0432\u043e\u0433\u0430. \u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043e\u043a\u043d\u0435:# \u0447\u0442\u043e \u0438\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0436\u0434\u0451\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441apt list &#8212;upgradable 2&gt;\/dev\/null | grep &#8212; -security# \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043b\u0438 \u0438 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437systemctl is-enabled unattended-upgrades apt-daily-upgrade.timersudo tail -20 \/var\/log\/unattended-upgrades\/unattended-upgrades.logsystemctl list-timers &#8216;apt-daily*&#8217; &#8212;no-pager# \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0431\u044b \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 (\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442)sudo unattended-upgrade &#8212;dry-run &#8212;debug 2&gt;&amp;1 | grep -A5 &#171;pkgs that look like they should be upgraded&#187;\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u2014 \u0441 \u043a\u043e\u043f\u0438\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0430, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e nginx -t:sudo tar -czf \/root\/nginx-before-$(date +%F).tar.gz -C \/ etc\/nginxsudo apt-get updatesudo apt-get install &#8212;only-upgrade -o Dpkg::Options::=&#8212;force-confold nginx nginx-commonsudo nginx -t &amp;&amp; systemctl is-active nginxcurl -s -o \/dev\/null -w &#171;%{http_code}\\n&#187; &#8212;resolve example.com:443:127.0.0.1 https:\/\/example.com\/&#8212;force-confold \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0430\u0448\u0438 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u0438\u043d\u0435\u0441\u0451\u0442 \u0441\u0432\u043e\u0438. &#8212;resolve \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0436\u0435 Nginx \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c SNI \u2014 \u0442\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 DNS \u0438 \u043a\u044d\u0448\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u043c\u0438 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.Node.js: 21 \u043e\u043a\u0442\u044f\u0431\u0440\u044f, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 unattended-upgrades \u0435\u0433\u043e \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u043021 \u043e\u043a\u0442\u044f\u0431\u0440\u044f Node \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b 22.23.4, 24.22.1 \u0438 26.12.1. \u0414\u043b\u044f \u0432\u0435\u0442\u043a\u0438 22 \u0437\u0430\u043a\u0440\u044b\u0442\u044b \u0448\u0435\u0441\u0442\u044c CVE, \u0441\u0430\u043c\u0430\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u2014 111497, \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a\u0435 Brotli \u0432\u043d\u0443\u0442\u0440\u0438 Node \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f&#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-500764","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500764","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=500764"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500764\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=500764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=500764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=500764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}