tag:blogger.com,1999:blog-37948326017960833392024-03-15T18:11:19.989-07:00Всякий блогБлог о программировании, сетевом и системном администрировании, операционных системах Windows, Linux и электронной коммерции.
В основном используется для создания быстрых заметокaveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.comBlogger223125tag:blogger.com,1999:blog-3794832601796083339.post-3867821978320183002023-10-30T15:30:00.002-07:002023-10-30T15:30:24.646-07:00mount: /mnt/ssd: неизвестный тип файловой системы 'LVM2_member'.<p>Вы пытаетесь смонтировать раздел, который является членом LVM (Logical Volume Management). Прежде чем смонтировать такой раздел, вам нужно активировать соответствующие логические тома.</p><p><br /></p><p>1. Установите необходимые пакеты для работы с LVM, если они еще не установлены:</p><p> ```bash</p><p> sudo apt install lvm2</p><p> ```</p><p><br /></p><p>2. Сканируйте доступные физические тома:</p><p> ```bash</p><p> sudo pvscan</p><p> ```</p><p><br /></p><p>3. Сканируйте доступные группы томов:</p><p> ```bash</p><p> sudo vgscan</p><p> ```</p><p><br /></p><p>4. Активируйте все группы томов:</p><p> ```bash</p><p> sudo vgchange -ay</p><p> ```</p><p><br /></p><p>5. Сканируйте доступные логические тома:</p><p> ```bash</p><p> sudo lvscan</p><p> ```</p><p><br /></p><p>На этом этапе вы должны увидеть путь к активированному логическому тому, например, `/dev/your-vg-name/your-lv-name`.</p><p><br /></p><p>6. Смонтируйте логический том:</p><p> ```bash</p><p> sudo mount /dev/your-vg-name/your-lv-name /mnt/ssd</p><p> ```</p><p><br /></p><p>Замените `your-vg-name` и `your-lv-name` на соответствующие значения, которые вы увидели на предыдущем шаге. Если все выполнено правильно, содержимое логического тома теперь будет доступно в `/mnt/ssd`.</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-70162862527852386392023-10-11T08:45:00.003-07:002023-10-11T08:45:22.287-07:00установить ограничение на максимальное потребление энергии (Power Limit) для вашей NVIDIA GPU<p> Чтобы установить ограничение на максимальное потребление энергии (Power Limit) для вашей NVIDIA GPU и применить его при каждой загрузке Linux, вам нужно создать скрипт и добавить его в автозагрузку. Вот как это сделать:</p><p><br /></p><p>1. **Создайте скрипт**:</p><p> Создайте текстовый файл, например, `set_power_limit.sh`, с помощью текстового редактора. Вы можете использовать команду `nano` для этой цели:</p><p> ```</p><p> nano set_power_limit.sh</p><p> ```</p><p><br /></p><p>2. **Добавьте команду**:</p><p> Внутри скрипта добавьте следующую команду, чтобы установить ограничение на максимальное потребление энергии в 250 Ватт (замените 250 на желаемое значение):</p><p> ```</p><p> #!/bin/bash</p><p> nvidia-smi -pl 250</p><p> ```</p><p><br /></p><p>3. **Сохраните и закройте файл**:</p><p> Сохраните файл, используя `Ctrl + O`, затем нажмите `Enter`, и затем закройте текстовый редактор с помощью `Ctrl + X`.</p><p><br /></p><p>4. **Сделайте скрипт исполняемым**:</p><p> Чтобы скрипт можно было выполнить, сделайте его исполняемым с помощью команды:</p><p> ```</p><p> chmod +x set_power_limit.sh</p><p> ```</p><p><br /></p><p>5. **Переместите скрипт**:</p><p> Рекомендуется переместить ваш скрипт в каталог `/usr/local/bin/`, чтобы он был доступен из любой директории:</p><p> ```</p><p> sudo mv set_power_limit.sh /usr/local/bin/</p><p> ```</p><p><br /></p><p>6. **Создайте файл для автозапуска**:</p><p> Создайте файл с расширением `.service` в каталоге `/etc/systemd/system/` для автозапуска:</p><p> ```</p><p> sudo nano /etc/systemd/system/set_power_limit.service</p><p> ```</p><p><br /></p><p>7. **Добавьте следующее содержание в файл**:</p><p> Замените `Description`, `ExecStart` и `After` на соответствующие значения:</p><p> ```</p><p> [Unit]</p><p> Description=Set NVIDIA GPU Power Limit</p><p><br /></p><p> [Service]</p><p> ExecStart=/usr/local/bin/set_power_limit.sh</p><p> Restart=always</p><p><br /></p><p> [Install]</p><p> WantedBy=multi-user.target</p><p> ```</p><p><br /></p><p>8. **Сохраните и закройте файл**:</p><p> Сохраните файл, используя `Ctrl + O`, затем нажмите `Enter`, и закройте текстовый редактор с помощью `Ctrl + X`.</p><p><br /></p><p>9. **Запустите службу**:</p><p> Запустите службу и включите ее для автозапуска:</p><p> ```</p><p> sudo systemctl daemon-reload</p><p> sudo systemctl start set_power_limit.service</p><p> sudo systemctl enable set_power_limit.service</p><p> ```</p><p><br /></p><p>Теперь скрипт будет выполняться при каждой загрузке системы, устанавливая ограничение на максимальное потребление энергии для вашей NVIDIA GPU. Убедитесь, что скрипт и служба настроены корректно и не вызывают проблем с загрузкой системы.</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-76739039736982821142023-09-12T06:42:00.003-07:002023-09-12T06:42:17.817-07:00Решение Could not load the Qt platform plugin "xcb"<p>qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. </p><p><br /></p><h3 style="text-align: left;">sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev</h3><div><span class="topic-title" style="box-sizing: border-box; color: inherit; display: inline-block; font-size: 24px; line-height: 32px; margin-top: 8px; overflow-wrap: break-word; text-transform: initial;"><span component="topic/title" style="box-sizing: border-box;"><br /></span></span></div><div><span class="topic-title" style="box-sizing: border-box; color: inherit; display: inline-block; font-size: 24px; line-height: 32px; margin-top: 8px; overflow-wrap: break-word; text-transform: initial;"><span component="topic/title" style="box-sizing: border-box;"><br /></span></span></div><div><span class="topic-title" style="box-sizing: border-box; color: inherit; display: inline-block; font-size: 24px; line-height: 32px; margin-top: 8px; overflow-wrap: break-word; text-transform: initial;"><span component="topic/title" style="box-sizing: border-box;"><br /></span></span></div>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-1754400469395855652023-07-18T02:47:00.001-07:002023-07-18T02:47:14.343-07:00Очистка DNS кэша в разных операционных системах<p> </p><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; line-height: 1.33333; margin: 2rem 0px 1rem; white-space-collapse: preserve;">Введение</h2><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: #374151; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 0px 0px 1.25em; white-space-collapse: preserve;">DNS (Domain Name System) — это система, которая преобразует имена веб-сайтов в IP-адреса, которые компьютеры могут понимать. Когда вы посещаете веб-сайт, ваш компьютер запоминает соответствие между именем сайта и его IP-адресом, сохраняя эти данные в DNS-кэше. Это позволяет быстрее загружать сайт при повторном его посещении. Однако иногда возникает необходимость очистить DNS-кэш, например, когда IP-адрес сайта изменился или когда есть проблемы со связью. В этой статье мы рассмотрим, как выполнить эту задачу в разных операционных системах.</p><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; line-height: 1.33333; margin: 2rem 0px 1rem; white-space-collapse: preserve;">Очистка DNS кэша в Windows</h2><ol style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: #374151; counter-reset: list-number 0; display: flex; flex-direction: column; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; list-style: none; margin: 0px 0px 1.25em; padding: 0px; white-space-collapse: preserve;"><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Откройте командную строку. Это можно сделать, нажав клавиши Windows + R, введя "cmd" и нажав "ОК".</p></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">В командной строке введите следующую команду: <code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-code); font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600;">ipconfig /flushdns</code> и нажмите Enter.</p></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Если все прошло успешно, вы увидите сообщение: "Успешно очищен DNS Resolver Cache".</p></li></ol><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; line-height: 1.33333; margin: 2rem 0px 1rem; white-space-collapse: preserve;">Очистка DNS кэша в macOS</h2><ol style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: #374151; counter-reset: list-number 0; display: flex; flex-direction: column; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; list-style: none; margin: 0px 0px 1.25em; padding: 0px; white-space-collapse: preserve;"><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Откройте Терминал. Это можно сделать, перейдя в Приложения -> Утилиты -> Терминал.</p></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">В зависимости от версии вашей операционной системы введите соответствующую команду:</p><ul style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: flex; flex-direction: column; list-style: disc; margin: 0px 0px 0px 1rem; padding: 0px;"><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: block; margin: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Для macOS Monterey, Big Sur, Catalina, Mojave, High Sierra, и Sierra: <code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-code); font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600;">sudo killall -HUP mDNSResponder</code></p></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: block; margin: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Для macOS El Capitan и Yosemite: <code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-code); font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600;">sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder</code></p></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: block; margin: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Для macOS Mavericks, Mountain Lion и Lion: <code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-code); font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600;">sudo killall -HUP mDNSResponder</code></p></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; display: block; margin: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Для macOS Snow Leopard: <code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-code); font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600;">sudo dscacheutil -flushcache</code></p></li></ul></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Введите пароль от учетной записи, если потребуется.</p></li></ol><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; line-height: 1.33333; margin: 2rem 0px 1rem; white-space-collapse: preserve;">Очистка DNS кэша в Linux</h2><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: #374151; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 0px 0px 1.25em; white-space-collapse: preserve;">В большинстве дистрибутивов Linux используется система именования nscd. Для очистки DNS кэша выполните следующие действия:</p><ol style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: #374151; counter-reset: list-number 0; display: flex; flex-direction: column; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; list-style: none; margin: 1.25em 0px; padding: 0px; white-space-collapse: preserve;"><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Откройте терминал.</p></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Введите следующую команду: <code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-code); font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600;">sudo /etc/init.d/nscd restart</code></p></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;">Введите пароль от учетной записи, если потребуется.</p></li></ol><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; line-height: 1.33333; margin: 2rem 0px 1rem; white-space-collapse: preserve;">Заключение</h2><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #f7f7f8; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: #374151; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 0px; white-space-collapse: preserve;">Очистка DNS-кэша может быть полезной при решении проблем с подключением к интернету. Помните, что после очистки DNS-кэша все веб-сайты, которые вы посещаете, будут немного дольше загружаться в первый раз, так как ваш компьютер снова будет запоминать соответствие между именами сайтов и их IP-адресами. Однако это временное явление, и скорость загрузки сайтов должна восстановиться на прежний уровень.</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-49547158714234764362023-07-17T23:49:00.002-07:002023-07-17T23:51:25.683-07:00Вот 15 полезных онлайн-сервисов для вашего бизнеса и хобби:<p>В современном мире технологии играют важную роль в различных сферах нашей жизни, включая бизнес и хобби. Благодаря интернету мы имеем доступ к множеству полезных инструментов и сервисов, которые значительно облегчают и оптимизируют нашу работу. Однако, среди такого огромного выбора может быть сложно найти подходящие и наиболее полезные сервисы. В этом списке мы представляем 15 отличных онлайн-сервисов, которые помогут упростить вашу работу и повысить эффективность, независимо от того, являетесь ли вы бизнесменом, творческой личностью или просто ищете полезные инструменты для ваших хобби.</p><p><a href="http://Crop-image-online.com">Crop-image-online.com</a>: Сервис для обрезки изображений онлайн. Полезен для дизайнеров и фотографов.</p><p><br /></p><p><a href="http://Extract-audio-online.com">Extract-audio-online.com</a>: Извлечение аудио из видео файлов онлайн. Полезен для создателей контента и музыкантов.</p><p><br /></p><p><a href="http://Icon-generator-online.com">Icon-generator-online.com</a>: Онлайн-генератор иконок для разработчиков и дизайнеров.</p><p><br /></p><p><a href="http://Merge-audio-online.com">Merge-audio-online.com</a>: Объединение аудиофайлов онлайн. Полезно для музыкантов и подкастеров.</p><p><br /></p><p><a href="http://Merge-video-online.com">Merge-video-online.com</a>: Объединение видео файлов онлайн. Полезно для видеографов и блогеров.</p><p><br /></p><p><a href="http://Password-generator-online.com">Password-generator-online.com</a>: Генератор паролей онлайн для повышения безопасности ваших аккаунтов.</p><p><br /></p><p><a href="http://Pixel-color-online.com">Pixel-color-online.com</a>: Определение цвета пикселя на изображении онлайн. Полезно для дизайнеров и художников.</p><p><br /></p><p><a href="http://Recognize-text-online.com">Recognize-text-online.com</a>: Распознавание текста на изображениях или отсканированных документах. Полезно для бизнесменов и студентов.</p><p><br /></p><p><a href="http://Remove-background-online.com">Remove-background-online.com</a>: Удаление фона из изображений онлайн. Полезно для дизайнеров и продавцов электронной коммерции.</p><p><br /></p><p><a href="http://Repair-video-online.com">Repair-video-online.com</a>: Восстановление поврежденных видеофайлов онлайн. Полезно для видеографов и блогеров.</p><p><br /></p><p><a href="http://Resize-image-online.com">Resize-image-online.com</a>: Изменение размера изображений онлайн. Полезно для веб-разработчиков и дизайнеров.</p><p><br /></p><p><a href="http://Rotate-image-online.com">Rotate-image-online.com</a>: Поворот изображений онлайн. Полезно для дизайнеров и фотографов.</p><p><br /></p><p><a href="http://Rotate-video-online.com">Rotate-video-online.com</a>: Поворот видео онлайн. Полезно для видеографов и блогеров.</p><p><br /></p><p><a href="http://Trim-audio-online.com">Trim-audio-online.com</a>: Обрезка аудиофайлов онлайн. Полезно для музыкантов и подкастеров.</p><p><br /></p><p><a href="http://Trim-video-online.com">Trim-video-online.com</a>: Обрезка видео онлайн. Полезно для видеографов и блогеров.</p><p><br /></p><p>Эти сервисы предоставляют удобные инструменты, которые помогут вам в работе с изображениями, аудио и видео файлами, обеспечивая эффективность и удобство работы.</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-16152493744204216212023-06-12T22:42:00.003-07:002023-06-12T22:42:29.701-07:00Для очистки кэша DNS в операционной системе Linux<p> Для очистки кэша DNS в операционной системе Linux вы можете выполнить следующие действия:</p><p><br /></p><p>1. Если у вас используется система с systemd-resolved (например, Ubuntu 18.04+), выполните следующую команду в терминале:</p><p> ```</p><p> sudo systemd-resolve --flush-caches</p><p> ```</p><p><br /></p><p>2. Если у вас используется система без systemd-resolved (старые версии Ubuntu, CentOS, etc.), выполните следующую команду в терминале:</p><p> ```</p><p> sudo /etc/init.d/nscd restart</p><p> ```</p><p><br /></p><p>3. Если вам требуется очистить кэш DNS в браузере Google Chrome, введите в адресной строке:</p><p> ```</p><p> chrome://net-internals/#dns</p><p> ```</p><p> Затем нажмите кнопку "Clear host cache".</p><p><br /></p><p>4. Если вы используете другой браузер, найдите настройки для очистки кэша DNS в его настройках или выполните поиск в Интернете для получения инструкций по очистке кэша DNS для вашего конкретного браузера.</p><p><br /></p><p>Обратите внимание, что после очистки кэша DNS может потребоваться некоторое время для обновления записей DNS.</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-38570601724785052902023-01-16T19:04:00.003-08:002023-01-16T19:04:20.755-08:00запуск java как сервис systemd<p> </p><h2 id="step-1-create-an-application-user-and-group" style="background-color: white; box-sizing: border-box; color: #279e21; font-family: Roboto, sans-serif; font-size: 27px; font-weight: 400; line-height: 38px; margin: 30px 0px 20px;">Step 1: Create an Application User and group</h2><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">Start by creating a system group for the user.</p><div class="td-g-rec td-g-rec-id-content_inline tdi_2 td_block_template_1" style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px;"></div><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">sudo groupadd -r appmgr</code></pre><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">Next, we create a system user <code style="background-color: #051e30; border: none; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 1em; padding: 0px 0px 6px; position: relative; top: -1px;">jvmapps</code> with the default group:<span class="ezoic-adpicker-ad" id="ezoic-pub-ad-placeholder-166" style="box-sizing: border-box;"></span></p><span class="ezoic-autoinsert-video ezoic-under_second_paragraph" style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px;"></span><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">sudo useradd -r -s /bin/false -g appmgr jvmapps</code></pre><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">Confirm user created and if with the correct group:</p><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">$ <span class="has-inline-color has-pale-pink-color" style="box-sizing: border-box; color: var(--wp--preset--color--pale-pink) !important;">id jvmapps</span>
uid=992(jvmapps) gid=986(appmgr) groups=986(appmgr)</code></pre><h2 id="step-2-create-systemd-service" style="background-color: white; box-sizing: border-box; color: #279e21; font-family: Roboto, sans-serif; font-size: 27px; font-weight: 400; line-height: 38px; margin: 30px 0px 20px;">Step 2: Create Systemd Service</h2><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">We can now create a systemd service file to manage our application. You need to create this file as root user.<span class="ezoic-adpicker-ad" id="ezoic-pub-ad-placeholder-167" style="box-sizing: border-box;"></span><span class="ezoic-ad ezoic-at-0 medrectangle-4 medrectangle-4167 adtester-container adtester-container-167" data-ez-name="computingforgeeks_com-medrectangle-4" style="align-items: center; border: 0px; box-sizing: border-box; display: flex !important; flex-direction: column !important; float: none !important; justify-content: center; line-height: 0; margin: 15px 0px !important; max-width: 100%; min-height: 400px; min-width: 580px; padding: 0px; text-align: center !important;"><span class="ezoic-ad" ezah="250" ezaw="250" id="div-gpt-ad-computingforgeeks_com-medrectangle-4-0" style="border: 0px; box-sizing: border-box; display: inline-block; margin-left: auto !important; margin-right: auto !important; max-width: 1200px; min-height: 400px; min-width: 580px; padding: 0px; position: relative; width: 696px; z-index: 0;"></span></span></p><span class="ezoic-autoinsert-video ezoic-mid_content" style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px;"></span><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">sudo vim /etc/systemd/system/myapp.service</code></pre><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">It will have content like below:</p><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">[Unit]
Description=Manage Java service
[Service]
WorkingDirectory=/opt/prod
ExecStart=/bin/java -Xms128m -Xmx256m -jar myapp.jar
User=jvmapps
Type=simple
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target</code></pre><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">Set <code style="background-color: #051e30; border: none; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 1em; padding: 0px 0px 6px; position: relative; top: -1px;">User</code> to the one created earlier, and <code style="background-color: #051e30; border: none; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 1em; padding: 0px 0px 6px; position: relative; top: -1px;">WorkingDirectory</code> to the directory with a jar file.</p><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;"><code style="background-color: #051e30; border: none; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 1em; padding: 0px 0px 6px; position: relative; top: -1px;">-Xms128m</code> and <code style="background-color: #051e30; border: none; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 1em; padding: 0px 0px 6px; position: relative; top: -1px;">-Xmx256m</code> are used to set the minimum and maximum memory that the application can use.<span class="ezoic-adpicker-ad" id="ezoic-pub-ad-placeholder-168" style="box-sizing: border-box;"></span></p><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">When done with the change, give the user and group ownership permissions for the Project Directory:</p><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">sudo chown -R jvmapps:appmgr /opt/prod</code></pre><h2 id="step-3-start-java-application-service-with-systemd" style="background-color: white; box-sizing: border-box; color: #279e21; font-family: Roboto, sans-serif; font-size: 27px; font-weight: 400; line-height: 38px; margin: 30px 0px 20px;">Step 3: Start Java Application service with systemd</h2><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">The next thing to do is start the application service, but first, reload systemd so that it knows of the new application added.</p><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">sudo systemctl daemon-reload</code></pre><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">Once reloaded, start the service:</p><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">sudo systemctl start myapp.service</code></pre><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">To check the status, use:<span class="ezoic-adpicker-ad" id="ezoic-pub-ad-placeholder-169" style="box-sizing: border-box;"></span><span class="ezoic-ad ezoic-at-0 banner-1 banner-1169 adtester-container adtester-container-169" data-ez-name="computingforgeeks_com-banner-1" style="align-items: center; border: 0px; box-sizing: border-box; display: flex !important; flex-direction: column !important; float: none !important; justify-content: center; line-height: 0; margin: 15px 0px !important; max-width: 100%; min-height: 400px; min-width: 580px; padding: 0px; text-align: center !important;"><span class="ezoic-ad" ezah="280" ezaw="336" id="div-gpt-ad-computingforgeeks_com-banner-1-0" style="border: 0px; box-sizing: border-box; display: inline-block; margin-left: auto !important; margin-right: auto !important; max-width: 1200px; min-height: 400px; min-width: 580px; padding: 0px; position: relative; width: 696px; z-index: 0;"></span></span></p><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">$ systemctl status myapp</code></pre><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">Sample output:</p><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">$ <span class="has-inline-color has-pale-pink-color" style="box-sizing: border-box; color: var(--wp--preset--color--pale-pink) !important;">systemctl status myapp</span>
● myapp.service - Manage Java service
Loaded: loaded (/etc/systemd/system/myapp.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2018-08-24 11:12:23 EAT; 23h ago
Main PID: 23220 (java)
CGroup: /system.slice/myapp.service
└─23220 /bin/java -Xms128m -Xmx256m -jar myapp.jar
Aug 25 10:50:00 server1 java[23220]: # Duration: 1000 µs
Aug 25 10:50:00 server1 java[23220]: # Total number of fields classified 0, 0 failed
Aug 25 10:50:00 server1 java[23220]: # ---------------------------------------------------------------
Aug 25 10:50:00 server1 java[23220]: # Completed step 'classify-tables'
Aug 25 10:50:00 server1 java[23220]: # Start: 2018-08-25T07:50:00.258Z
Aug 25 10:50:00 server1 java[23220]: # End: 2018-08-25T07:50:00.259Z
Aug 25 10:50:00 server1 java[23220]: # Duration: 1000 µs
Aug 25 10:50:00 server1 java[23220]: # Total number of tables classified 3, 0 updated
Aug 25 10:50:00 server1 java[23220]: #################################################################
Aug 25 10:50:00 server1 java[23220]: 08-25 10:50:00 INFO sync.util :: FINISHED: Analyze data for mysql Database 2 'Ch... (8 ms)
Hint: Some lines were ellipsized, use -l to show in full.</code></pre><span class="ezoic-autoinsert-video ezoic-long_content" style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px;"></span><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">You can also enable the service to start on server boot:</p><span class="ezoic-autoinsert-ad ezoic-under_first_paragraph" style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px;"></span><span id="ez-clearholder-medrectangle-3" style="background-color: white; box-sizing: border-box; clear: both; color: #222222; display: block; font-family: "open sans"; font-size: 17px;"></span><span class="ezoic-ad ezoic-at-0 medrectangle-3 medrectangle-3320 adtester-container adtester-container-320" data-ez-name="computingforgeeks_com-medrectangle-3" style="background-color: white; border: 0px; box-sizing: border-box; color: #222222; display: block !important; float: none !important; font-family: "open sans"; font-size: 17px; line-height: 0; margin: 15px auto !important; max-width: 100%; min-height: 60px; min-width: 468px; padding: 0px; text-align: center !important; width: 696px;"><span class="ezoic-ad" ezah="60" ezaw="468" id="div-gpt-ad-computingforgeeks_com-medrectangle-3-0" style="border: 0px; box-sizing: border-box; display: inline-block; min-height: 60px; min-width: 468px; padding: 0px; position: relative; z-index: 0;"></span></span><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">$<strong style="box-sizing: border-box;"> </strong><mark class="has-inline-color has-pale-pink-color" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; box-sizing: border-box;">sudo systemctl enable myapp</mark>
Created symlink from /etc/systemd/system/multi-user.target.wants/myapp.service to /etc/systemd/system/myapp.service.</code></pre><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">To restart the application, use:</p><pre class="wp-block-code" style="background-color: #051e30; border-color: rgb(40, 159, 244); border-image: initial; border-radius: 0px; border-style: solid; border-width: 1px 1px 1px 4px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 17px; margin-top: 24px; overflow-wrap: break-word; overflow: auto; padding: 4px 10px;"><code style="border: none; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; overflow-wrap: break-word; padding: 0px 0px 6px; position: relative; top: -1px; white-space: inherit;">sudo systemctl restart myapp</code></pre><h2 id="conclusion" style="background-color: white; box-sizing: border-box; color: #279e21; font-family: Roboto, sans-serif; font-size: 27px; font-weight: 400; line-height: 38px; margin: 30px 0px 20px;">Conclusion</h2><p style="background-color: white; box-sizing: border-box; color: #222222; font-family: "open sans"; font-size: 17px; line-height: 31px; margin-bottom: 26px; margin-top: 0px; overflow-wrap: break-word;">You now have a Java Application being managed by Systemd. Replicate the same procedure for all other services you need to manage using Systemd init. Hope this was helpful, for any issues, let me know through the comments section.</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-91879195426921254192022-12-28T16:24:00.004-08:002022-12-28T16:24:41.849-08:00Docker - Bind for 0.0.0.0:4000 failed: port is already allocated<p><span style="color: var(--black-800); font-family: var(--ff-mono); font-size: var(--_pr-code-fs); font-style: inherit; font-variant-caps: inherit; font-variant-ligatures: inherit; font-weight: inherit; white-space: inherit;">docker container ls</span></p><pre style="border-radius: var(--br-md); border: 0px; box-sizing: inherit; color: var(--highlight-color); font-family: var(--ff-mono); font-size: var(--fs-body1); font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: var(--lh-md); margin-bottom: 0px; margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;"><code style="border-radius: 0px; border: 0px; box-sizing: inherit; color: var(--black-800); font-family: var(--ff-mono); font-size: var(--_pr-code-fs); font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;">docker rm -f <container-name></code></pre>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-62119286885358324002022-12-28T06:57:00.004-08:002022-12-28T06:58:25.755-08:00.gitignore не работает<p><span color="var(--black-800)" face="var(--ff-mono)" style="font-size: var(--_pr-code-fs); font-style: inherit; font-variant-caps: inherit; font-variant-ligatures: inherit; font-weight: inherit; white-space: inherit;">Решение</span></p><p><span color="var(--black-800)" face="var(--ff-mono)" style="font-size: var(--_pr-code-fs); font-style: inherit; font-variant-caps: inherit; font-variant-ligatures: inherit; font-weight: inherit; white-space: inherit;">git rm -rf --cached .</span></p><pre style="border-radius: var(--br-md); border: 0px; box-sizing: inherit; color: var(--highlight-color); font-family: var(--ff-mono); font-size: var(--fs-body1); font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: var(--lh-md); margin-bottom: calc(1.5em); margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;"><code style="border-radius: 0px; border: 0px; box-sizing: inherit; color: var(--black-800); font-family: var(--ff-mono); font-size: var(--_pr-code-fs); font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;">git add .</code></pre>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-65812588200501169582022-12-21T16:57:00.002-08:002022-12-21T16:57:16.832-08:00Увеличение Swap<p> mkdir /media/swap/</p><p>fallocate -l 128G /media/swap/swapfile.img</p><p>chmod 600 /media/swap/swapfile.img</p><p><br /></p><p>sudo mkswap /media/swap/swapfile.img</p><p><br /></p><p>/etc/fstab</p><p>#SWAP128</p><p>/media/swap/swapfile.img none swap sw 0 0</p><p><br /></p><p><br /></p><p>swapon /media/swap/swapfile.img</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-84917443266630939752022-12-19T20:00:00.003-08:002022-12-19T20:00:19.952-08:00Решение ошибки Laravel /storage/logs permission denied<p>There is no existing directory at “…/storage/logs” and its not buildable: Permission denied</p><p><br /></p><p>Решение:</p><p>php artisan route:clear</p><p>php artisan config:clear</p><p>php artisan cache:clear</p><p>Все</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-30952792690741794652022-11-30T05:31:00.002-08:002022-12-08T22:12:15.623-08:00Иногда redis-server не запускается, выдавая ошибку: signal-handler Received SIGTERM scheduling shutdown<br /><br /> Иногда redis-server не запускается, выдавая ошибку:signal-handler Received SIGTERM scheduling shutdown...<br /><br /><br />Увидеть её можно в логе, например так:tail -f /var/log/redis/redis.log<br /><br /><br />Простое решение - увеличить лимиты:sysctl vm.overcommit_memory=1
sysctl -w net.core.somaxconn=65535<br /><br /><br />Если warning'ов нет, а ошибка осталась, то вариантом решения может быть установка увеличенных таймаутов. Для этого в файл - /etc/systemd/system/redis.service.d/limit.conf необходимо добавить следующие строки:[Service]
TimeoutStartSec=300s
TimeoutStopSec=90s<br /><br /><br />*Время в TimeoutStartSec и TimeoutStopSec указано для примера, вам могут понадобиться другие значения.aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-9061721784426996912022-10-17T18:04:00.001-07:002022-10-17T18:04:08.620-07:005 советов по упрощению кода Laravel<p> </p><h1 class="abq abr xi bv kx abs ais abu rz abv ait abx se sf aiu sg sj sk aiv sl so sp aiw sq st acb by" data-selectable-paragraph="" id="e49a" style="background-color: white; box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; line-height: 28px; margin: 3.14em 0px -0.37em;"><span style="box-sizing: inherit; vertical-align: inherit;">1. Упростите операторы if/else</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="02f3" style="background-color: white; box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">При написании методов или функций, которые используют операторы if/else для проверки условия, мы можем очистить функцию или метод, используя сокращенную версию простого оператора if/else следующим образом:</span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="background-color: white; box-sizing: inherit; clear: both; color: rgba(0, 0, 0, 0.8); font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; margin: 56px auto 0px;"><div class="yj yk cu yl ae ym" role="button" style="box-sizing: inherit; cursor: zoom-in; position: relative; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s; width: 692px; z-index: auto;" tabindex="0"><div class="re rf aix" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 893px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" srcset="https://miro.medium.com/max/640/0*zyKMRKCpQhHIETX1.png 640w, https://miro.medium.com/max/720/0*zyKMRKCpQhHIETX1.png 720w, https://miro.medium.com/max/750/0*zyKMRKCpQhHIETX1.png 750w, https://miro.medium.com/max/786/0*zyKMRKCpQhHIETX1.png 786w, https://miro.medium.com/max/828/0*zyKMRKCpQhHIETX1.png 828w, https://miro.medium.com/max/1100/0*zyKMRKCpQhHIETX1.png 1100w, https://miro.medium.com/max/1400/0*zyKMRKCpQhHIETX1.png 1400w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="808" loading="lazy" role="presentation" src="https://miro.medium.com/max/1400/0*zyKMRKCpQhHIETX1.png" style="box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 692px;" width="700" /></picture></div></div></figure><h1 class="abq abr xi bv kx abs ais abu rz abv ait abx se sf aiu sg sj sk aiv sl so sp aiw sq st acb by" data-selectable-paragraph="" id="dcb5" style="background-color: white; box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; line-height: 28px; margin: 3.14em 0px -0.37em;"><span style="box-sizing: inherit; vertical-align: inherit;">2. Используйте Laravel </span><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16.5px; font-weight: 400; padding: 2px 4px;">exists()</code><span style="box-sizing: inherit; vertical-align: inherit;">вместо </span><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16.5px; font-weight: 400; padding: 2px 4px;">count()</code><span style="box-sizing: inherit; vertical-align: inherit;">проверки существования экземпляра модели.</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="de35" style="background-color: white; box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">При запросе к базе данных и попытке доступа к экземпляру модели иногда наши запросы Eloquent возвращаются пустыми или нулевыми. </span><span style="box-sizing: inherit; vertical-align: inherit;">Первым делом нужно проверить, равно ли количество моделей 0, а если нет, то что-то существует, но Laravel предоставляет готовый метод для проверки существования экземпляра модели.</span></span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="background-color: white; box-sizing: inherit; clear: both; color: rgba(0, 0, 0, 0.8); font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; margin: 56px auto 0px;"><div class="yj yk cu yl ae ym" role="button" style="box-sizing: inherit; cursor: zoom-in; position: relative; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s; width: 692px; z-index: auto;" tabindex="0"><div class="re rf aiy" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 1030px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" srcset="https://miro.medium.com/max/640/0*ACWKRT2j8CkwBKR7.png 640w, https://miro.medium.com/max/720/0*ACWKRT2j8CkwBKR7.png 720w, https://miro.medium.com/max/750/0*ACWKRT2j8CkwBKR7.png 750w, https://miro.medium.com/max/786/0*ACWKRT2j8CkwBKR7.png 786w, https://miro.medium.com/max/828/0*ACWKRT2j8CkwBKR7.png 828w, https://miro.medium.com/max/1100/0*ACWKRT2j8CkwBKR7.png 1100w, https://miro.medium.com/max/1400/0*ACWKRT2j8CkwBKR7.png 1400w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="505" loading="lazy" role="presentation" src="https://miro.medium.com/max/1400/0*ACWKRT2j8CkwBKR7.png" style="box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 692px;" width="700" /></picture></div></div></figure><h1 class="abq abr xi bv kx abs ais abu rz abv ait abx se sf aiu sg sj sk aiv sl so sp aiw sq st acb by" data-selectable-paragraph="" id="faa3" style="background-color: white; box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; line-height: 28px; margin: 3.14em 0px -0.37em;"><span style="box-sizing: inherit; vertical-align: inherit;">3. Используйте </span><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16.5px; font-weight: 400; padding: 2px 4px;">modelKeys()</code><span style="box-sizing: inherit; vertical-align: inherit;">для получения первичных ключей вместо</span><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16.5px; font-weight: 400; padding: 2px 4px;">pluck()</code></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="95dc" style="background-color: white; box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Когда мы обращаемся к модели и пытаемся получить первичные ключи или идентификаторы модели, самый простой способ сделать это — использовать </span><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 15px; padding: 2px 4px;">pluck()</code><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">для получения определенных полей. </span><span style="box-sizing: inherit; vertical-align: inherit;">Но если все, к чему вы хотите получить доступ, это ключи модели или первичные ключи и ничего больше (возможно, для синхронизации или подключения к другой модели), вы можете использовать встроенный метод</span></span><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 15px; padding: 2px 4px;">modelKeys()</code></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="background-color: white; box-sizing: inherit; clear: both; color: rgba(0, 0, 0, 0.8); font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; margin: 56px auto 0px;"><div class="yj yk cu yl ae ym" role="button" style="box-sizing: inherit; cursor: zoom-in; position: relative; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s; width: 692px; z-index: auto;" tabindex="0"><div class="re rf aiy" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 1030px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" srcset="https://miro.medium.com/max/640/0*XUAv53kYYmXqT4o7.png 640w, https://miro.medium.com/max/720/0*XUAv53kYYmXqT4o7.png 720w, https://miro.medium.com/max/750/0*XUAv53kYYmXqT4o7.png 750w, https://miro.medium.com/max/786/0*XUAv53kYYmXqT4o7.png 786w, https://miro.medium.com/max/828/0*XUAv53kYYmXqT4o7.png 828w, https://miro.medium.com/max/1100/0*XUAv53kYYmXqT4o7.png 1100w, https://miro.medium.com/max/1400/0*XUAv53kYYmXqT4o7.png 1400w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="474" loading="lazy" role="presentation" src="https://miro.medium.com/max/1400/0*XUAv53kYYmXqT4o7.png" style="box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 692px;" width="700" /></picture></div></div></figure><h1 class="abq abr xi bv kx abs ais abu rz abv ait abx se sf aiu sg sj sk aiv sl so sp aiw sq st acb by" data-selectable-paragraph="" id="d5b8" style="background-color: white; box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; line-height: 28px; margin: 3.14em 0px -0.37em;"><span style="box-sizing: inherit; vertical-align: inherit;">4. Не создавайте ненужных переменных и пытайтесь возвращать значения напрямую</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="ed71" style="background-color: white; box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">Когда мы учимся программировать, мы привыкаем создавать переменные для всего, и это правильно. </span><span style="box-sizing: inherit; vertical-align: inherit;">Нам нужна возможность хранить и отслеживать данные в методах, функциях и классах, но иногда нет необходимости создавать переменную, которую мы не собираемся изменять или модифицировать позже в методе. </span><span style="box-sizing: inherit; vertical-align: inherit;">Упростите свой код, возвращая значения напрямую, когда это возможно, как показано ниже.</span></span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="background-color: white; box-sizing: inherit; clear: both; color: rgba(0, 0, 0, 0.8); font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; margin: 56px auto 0px;"><div class="yj yk cu yl ae ym" role="button" style="box-sizing: inherit; cursor: zoom-in; position: relative; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s; width: 692px; z-index: auto;" tabindex="0"><div class="re rf aiz" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 830px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" srcset="https://miro.medium.com/max/640/0*gAXaIKjPjaNJLnIb.png 640w, https://miro.medium.com/max/720/0*gAXaIKjPjaNJLnIb.png 720w, https://miro.medium.com/max/750/0*gAXaIKjPjaNJLnIb.png 750w, https://miro.medium.com/max/786/0*gAXaIKjPjaNJLnIb.png 786w, https://miro.medium.com/max/828/0*gAXaIKjPjaNJLnIb.png 828w, https://miro.medium.com/max/1100/0*gAXaIKjPjaNJLnIb.png 1100w, https://miro.medium.com/max/1400/0*gAXaIKjPjaNJLnIb.png 1400w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="869" loading="lazy" role="presentation" src="https://miro.medium.com/max/1400/0*gAXaIKjPjaNJLnIb.png" style="box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 692px;" width="700" /></picture></div></div></figure><figure class="acw acx acy acz vy yi re rf paragraph-image" style="background-color: white; box-sizing: inherit; clear: both; color: rgba(0, 0, 0, 0.8); font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; margin: 56px auto 0px;"><div class="yj yk cu yl ae ym" role="button" style="box-sizing: inherit; cursor: zoom-in; position: relative; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s; width: 692px; z-index: auto;" tabindex="0"><div class="re rf aja" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 928px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" srcset="https://miro.medium.com/max/640/0*kQPrS-H-qtFDnprM.png 640w, https://miro.medium.com/max/720/0*kQPrS-H-qtFDnprM.png 720w, https://miro.medium.com/max/750/0*kQPrS-H-qtFDnprM.png 750w, https://miro.medium.com/max/786/0*kQPrS-H-qtFDnprM.png 786w, https://miro.medium.com/max/828/0*kQPrS-H-qtFDnprM.png 828w, https://miro.medium.com/max/1100/0*kQPrS-H-qtFDnprM.png 1100w, https://miro.medium.com/max/1400/0*kQPrS-H-qtFDnprM.png 1400w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="777" loading="lazy" role="presentation" src="https://miro.medium.com/max/1400/0*kQPrS-H-qtFDnprM.png" style="box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 692px;" width="700" /></picture></div></div></figure><h1 class="abq abr xi bv kx abs ais abu rz abv ait abx se sf aiu sg sj sk aiv sl so sp aiw sq st acb by" data-selectable-paragraph="" id="a7ce" style="background-color: white; box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; line-height: 28px; margin: 3.14em 0px -0.37em;"><span style="box-sizing: inherit; vertical-align: inherit;">5. Воспользуйтесь преимуществами коллекций Laravel вместо манипулирования массивами вручную</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="335a" style="background-color: white; box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">Коллекции Laravel имеют десятки доступных методов, которые упрощают многие процессы, которые в противном случае пришлось бы выполнять вручную с массивом или несколькими массивами. </span><span style="box-sizing: inherit; vertical-align: inherit;">Возьмем, к примеру, добавление элемента в конец массива:</span></span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="background-color: white; box-sizing: inherit; clear: both; color: rgba(0, 0, 0, 0.8); font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; margin: 56px auto 0px;"><div class="yj yk cu yl ae ym" role="button" style="box-sizing: inherit; cursor: zoom-in; position: relative; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s; width: 692px; z-index: auto;" tabindex="0"><div class="re rf aiy" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 1030px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" srcset="https://miro.medium.com/max/640/0*XmwnKcWoBkkYA6og.png 640w, https://miro.medium.com/max/720/0*XmwnKcWoBkkYA6og.png 720w, https://miro.medium.com/max/750/0*XmwnKcWoBkkYA6og.png 750w, https://miro.medium.com/max/786/0*XmwnKcWoBkkYA6og.png 786w, https://miro.medium.com/max/828/0*XmwnKcWoBkkYA6og.png 828w, https://miro.medium.com/max/1100/0*XmwnKcWoBkkYA6og.png 1100w, https://miro.medium.com/max/1400/0*XmwnKcWoBkkYA6og.png 1400w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="414" loading="lazy" role="presentation" src="https://miro.medium.com/max/1400/0*XmwnKcWoBkkYA6og.png" style="box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 692px;" width="700" /></picture></div></div></figure><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="9038" style="background-color: white; box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">Функционально эти два подхода одинаковы, но использование коллекций Laravel дает вам доступ к множеству методов, которые вы можете выполнять с отдельными коллекциями или элементами в коллекции. </span><span style="box-sizing: inherit; vertical-align: inherit;">Вот некоторые примеры:</span></span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="background-color: white; box-sizing: inherit; clear: both; color: rgba(0, 0, 0, 0.8); font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; margin: 56px auto 0px;"><div class="yj yk cu yl ae ym" role="button" style="box-sizing: inherit; cursor: zoom-in; position: relative; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s; width: 692px; z-index: auto;" tabindex="0"><div class="re rf ajb" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 1040px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" srcset="https://miro.medium.com/max/640/1*NNJtguHgEZskJAm19dASyg.png 640w, https://miro.medium.com/max/720/1*NNJtguHgEZskJAm19dASyg.png 720w, https://miro.medium.com/max/750/1*NNJtguHgEZskJAm19dASyg.png 750w, https://miro.medium.com/max/786/1*NNJtguHgEZskJAm19dASyg.png 786w, https://miro.medium.com/max/828/1*NNJtguHgEZskJAm19dASyg.png 828w, https://miro.medium.com/max/1100/1*NNJtguHgEZskJAm19dASyg.png 1100w, https://miro.medium.com/max/1400/1*NNJtguHgEZskJAm19dASyg.png 1400w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="626" loading="lazy" role="presentation" src="https://miro.medium.com/max/1400/1*NNJtguHgEZskJAm19dASyg.png" style="box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 692px;" width="700" /></picture></div></div></figure><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="26ba" style="background-color: white; box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Это лишь небольшая выборка доступных методов в коллекциях Laravel, но они выполняют задачи, которые массивы либо не могут выполнить без специальной функции, либо их сложно выполнить простым способом.</span></p><div><span style="box-sizing: inherit; vertical-align: inherit;"><br /></span></div>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-38250109570352021672022-10-17T18:03:00.001-07:002022-10-17T18:03:18.469-07:00Топ-8 плохих практик безопасности в Laravel, о которых вы должны знать<p><span style="color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em;">Настоящая безопасность заключается в самой практике кода, мы не можем определить, безопасен фреймворк или нет, Laravel настолько безопасен, насколько это возможно, и максимально оптимизирован, это действительно зависит от разработчика.</span></p><div class="qo xd xe xf xg" style="box-sizing: inherit; overflow-wrap: break-word; word-break: break-word;"><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="7207" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Здесь я перечислю </span><span class="su he" style="box-sizing: inherit; font-weight: 700;">8 самых плохих методов обеспечения безопасности с советами</span><span style="box-sizing: inherit; vertical-align: inherit;"> , как их избежать.</span></p><ul class="" style="box-sizing: inherit; list-style: none none; margin: 0px; padding: 0px;"><li class="zy zz xi su b yu yv yy yz zc aba zg abb zk abc zo abd abe abf ea by" data-selectable-paragraph="" id="103a" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 28px; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 2.14em; padding-left: 0px;"><span style="box-sizing: inherit; vertical-align: inherit;">SQL-инъекция через имена столбцов и необработанные запросы.</span></li><li class="zy zz xi su b yu abg yy abh zc abi zg abj zk abk zo abd abe abf ea by" data-selectable-paragraph="" id="b979" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 28px; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 1.14em; padding-left: 0px;"><span style="box-sizing: inherit; vertical-align: inherit;">SQL-инъекция через правила проверки.</span></li><li class="zy zz xi su b yu abg yy abh zc abi zg abj zk abk zo abd abe abf ea by" data-selectable-paragraph="" id="49c8" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 28px; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 1.14em; padding-left: 0px;"><span style="box-sizing: inherit; vertical-align: inherit;">Внедрение правил проверки.</span></li><li class="zy zz xi su b yu abg yy abh zc abi zg abj zk abk zo abd abe abf ea by" data-selectable-paragraph="" id="a658" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 28px; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 1.14em; padding-left: 0px;"><span style="box-sizing: inherit; vertical-align: inherit;">Использование GET для не-GET-маршрутов.</span></li><li class="zy zz xi su b yu abg yy abh zc abi zg abj zk abk zo abd abe abf ea by" data-selectable-paragraph="" id="b7be" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 28px; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 1.14em; padding-left: 0px;"><span style="box-sizing: inherit; vertical-align: inherit;">Использование $request->all().</span></li><li class="zy zz xi su b yu abg yy abh zc abi zg abj zk abk zo abd abe abf ea by" data-selectable-paragraph="" id="42e4" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 28px; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 1.14em; padding-left: 0px;"><span style="box-sizing: inherit; vertical-align: inherit;">Забыть режим отладки в продакшене.</span></li><li class="zy zz xi su b yu abg yy abh zc abi zg abj zk abk zo abd abe abf ea by" data-selectable-paragraph="" id="5bfb" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 28px; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 1.14em; padding-left: 0px;"><span style="box-sizing: inherit; vertical-align: inherit;">XSS с использованием неэкранированного оператора данных.</span></li><li class="zy zz xi su b yu abg yy abh zc abi zg abj zk abk zo abd abe abf ea by" data-selectable-paragraph="" id="8599" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 28px; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 1.14em; padding-left: 0px;"><span style="box-sizing: inherit; vertical-align: inherit;">XSS с использованием атрибута href.</span></li></ul></div><div class="am an abl mv gz abm" role="separator" style="box-sizing: inherit; display: flex; justify-content: center; margin-bottom: 14px; margin-top: 32px; padding-bottom: 10px; padding-top: 24px;"><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; width: 3px;"></span></div><div class="qo xd xe xf xg" style="box-sizing: inherit; overflow-wrap: break-word; word-break: break-word;"><h1 class="abq abr xi bv kx abs abt abu rz abv abw abx se sf aby sg sj sk abz sl so sp aca sq st acb by" data-selectable-paragraph="" id="d652" style="box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; letter-spacing: 0px; line-height: 28px; margin: 2.05em 0px -0.37em;"><span class="be" style="box-sizing: inherit; font-weight: inherit;">SQL-инъекция через имена столбцов:</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="6f52" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Очень распространенная практика передачи управляемых пользователем столбцов в Query Builder, думая, что Laravel проверяет их с помощью привязки параметров PDO, но, как упоминается в </span><span class="su he" style="box-sizing: inherit; font-weight: 700;">документации Laravel</span><span style="box-sizing: inherit; vertical-align: inherit;"> :</span></p><blockquote class="ach" style="box-sizing: inherit; margin: 0px; padding-left: 30px;"><p class="aci acj xi bv ack acl acm acn aco acp acq zo ho" data-selectable-paragraph="" id="585c" style="box-sizing: inherit; color: #757575; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 28px; letter-spacing: -0.009em; line-height: 40px; margin: 1.75em 0px -0.46em;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">PDO не поддерживает привязку имен столбцов. </span><span style="box-sizing: inherit; vertical-align: inherit;">Поэтому вы никогда не должны позволять вводу пользователем диктовать имена столбцов, на которые ссылаются ваши запросы, включая столбцы «упорядочить по».</span></span></p></blockquote><p class="pw-post-body-paragraph ys yt xi su b yu acr yw yx yy acs za zb zc act ze zf zg acu zi zj zk acv zm zn zo qo by" data-selectable-paragraph="" id="5460" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2.48em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Чтобы было понятно, предположим, что у нас есть следующий запрос:</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="bf69" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">Product::where('brand_id',$request->brand_id) </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> ->orderBy($request->orderBy) </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> ->get();</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="43be" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">поэтому, если пользователь ввел что-то вроде </span><span class="su he" style="box-sizing: inherit; font-weight: 700;">price->”%27))%23injection</span><span style="box-sizing: inherit; vertical-align: inherit;"> , запрос будет переведен следующим образом:</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="f161" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">выберите * из `продуктов`, где brand_id =? </span><span style="box-sizing: inherit; vertical-align: inherit;">упорядочить по json_unquote( </span></span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">json_extract(`price`, '$.""') </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">) #injection"')) asc</span></span></pre><blockquote class="aeh aei aej" style="box-shadow: rgb(41, 41, 41) 3px 0px 0px 0px inset; box-sizing: inherit; margin: 0px 0px 0px -20px; padding-left: 23px;"><p class="ys yt aek su b yu yv yw yx yy yz za zb ael zd ze zf aem zh zi zj aen zl zm zn zo qo by" data-selectable-paragraph="" id="7c32" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;">Что делать:</span><span style="box-sizing: inherit; vertical-align: inherit;"> как упоминается в документации Laravel:</span></p><p class="ys yt aek su b yu yv yw yx yy yz za zb ael zd ze zf aem zh zi zj aen zl zm zn zo qo by" data-selectable-paragraph="" id="4356" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">если необходимо разрешить пользователю выбирать определенные столбцы для запроса, всегда проверяйте имена столбцов по разрешенным столбцам из белого списка.</span></p></blockquote><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="c7c6" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Справедливо также отметить, что использование любой функции необработанного запроса имеет ту же проблему, если вы использовали ее в зависимости от пользовательского ввода и без привязки.</span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="c3a3" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;">Так что не забудьте использовать привязку параметров</span></p></div><div class="am an abl mv gz abm" role="separator" style="box-sizing: inherit; display: flex; justify-content: center; margin-bottom: 14px; margin-top: 32px; padding-bottom: 10px; padding-top: 24px;"><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; width: 3px;"></span></div><div class="qo xd xe xf xg" style="box-sizing: inherit; overflow-wrap: break-word; word-break: break-word;"><h1 class="abq abr xi bv kx abs abt abu rz abv abw abx se sf aby sg sj sk abz sl so sp aca sq st acb by" data-selectable-paragraph="" id="0487" style="box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; letter-spacing: 0px; line-height: 28px; margin: 2.05em 0px -0.37em;"><span style="box-sizing: inherit; vertical-align: inherit;">SQL-инъекция через правила проверки</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="1437" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Как упоминалось ранее, вы должны быть очень осведомлены об использовании пользовательских входных данных в своем запросе, одна из практик, на которую разработчик не обращает внимания, — это построение правил проверки на основе предоставленных данных от пользователя, давайте рассмотрим подробнее.</span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="546a" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Эта практика распространена при проверке запроса на обновление и предоставлении идентификатора из самого запроса. Вот пример.</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="9fe9" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">$id = $запрос->id; </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">$rules = [ </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> 'email'=>'email|обязательный|уникальный: пользователи, электронная почта,'.$id </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">]; </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">$validator = Validator::make($request->all(),$rules);</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="6baa" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Там мы видим, что это уязвимость безопасности, которая позволяет хакеру внедрить оператор SQL.</span></p><blockquote class="aeh aei aej" style="box-shadow: rgb(41, 41, 41) 3px 0px 0px 0px inset; box-sizing: inherit; margin: 0px 0px 0px -20px; padding-left: 23px;"><p class="ys yt aek su b yu yv yw yx yy yz za zb ael zd ze zf aem zh zi zj aen zl zm zn zo qo by" data-selectable-paragraph="" id="f875" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;">Что вам следует делать:</span><span style="box-sizing: inherit; vertical-align: inherit;"> просто не создавайте правила проверки на основе вашей пользовательской записи, если вы вынуждены, просто проверьте значения вручную, а затем создайте свое правило.</span></p></blockquote></div><div class="am an abl mv gz abm" role="separator" style="box-sizing: inherit; display: flex; justify-content: center; margin-bottom: 14px; margin-top: 32px; padding-bottom: 10px; padding-top: 24px;"><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; width: 3px;"></span></div><div class="qo xd xe xf xg" style="box-sizing: inherit; overflow-wrap: break-word; word-break: break-word;"><h1 class="abq abr xi bv kx abs abt abu rz abv abw abx se sf aby sg sj sk abz sl so sp aca sq st acb by" data-selectable-paragraph="" id="76fa" style="box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; letter-spacing: 0px; line-height: 28px; margin: 2.05em 0px -0.37em;"><span class="be" style="box-sizing: inherit; font-weight: inherit;">Внедрение правил проверки:</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="315c" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">1- Сделайте правило необязательным:</span></span><br style="box-sizing: inherit;" /></span><span style="box-sizing: inherit; vertical-align: inherit;">как в предыдущем примере</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="56e3" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">$id = $запрос->id; </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">$rules = [ </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> 'email'=>'email|обязательный|уникальный: пользователи, электронная почта,'.$id </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">]; </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">$validator = Validator::make($request->all(),$rules);</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="b8f5" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">пользователь передал следующее:</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="50ff" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">10|иногда</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="928e" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">что приведет к тому, что правило будет необязательным, в зависимости от бизнес-логики приложения это внедрение правила может нанести большой ущерб.</span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="f908" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;">2- Проверка регулярного выражения DDOS:</span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="7f2e" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Давайте представим, что пользователь отправляет это регулярное выражение:</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="b3d0" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span class="aec he" style="box-sizing: inherit; font-weight: 700;">1|регулярное выражение:(*а){10000}</span></span><span class="by aed abr xi aec b ec aeo aef y aeg" data-selectable-paragraph="" id="93d3" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: 0.91em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">Предыдущее регулярное выражение потребляло много ресурсов, а несколько запросов с одной и той же полезной нагрузкой приводили к перегрузке ЦП.</span></span></pre><blockquote class="aeh aei aej" style="box-shadow: rgb(41, 41, 41) 3px 0px 0px 0px inset; box-sizing: inherit; margin: 0px 0px 0px -20px; padding-left: 23px;"><p class="ys yt aek su b yu yv yw yx yy yz za zb ael zd ze zf aem zh zi zj aen zl zm zn zo qo by" data-selectable-paragraph="" id="ccf1" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;">Что вам следует делать:</span><span style="box-sizing: inherit; vertical-align: inherit;"> Как упоминалось ранее: просто не создавайте правила проверки на основе вашей пользовательской записи, если вы вынуждены, просто проверьте значения вручную, а затем создайте свое правило.</span></p></blockquote></div><div class="am an abl mv gz abm" role="separator" style="box-sizing: inherit; display: flex; justify-content: center; margin-bottom: 14px; margin-top: 32px; padding-bottom: 10px; padding-top: 24px;"><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; width: 3px;"></span></div><div class="qo xd xe xf xg" style="box-sizing: inherit; overflow-wrap: break-word; word-break: break-word;"><h1 class="abq abr xi bv kx abs abt abu rz abv abw abx se sf aby sg sj sk abz sl so sp aca sq st acb by" data-selectable-paragraph="" id="e406" style="box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; letter-spacing: 0px; line-height: 28px; margin: 2.05em 0px -0.37em;"><span class="be" style="box-sizing: inherit; font-weight: inherit;">Использование GET для не-GET-маршрутов</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="bae2" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Как упоминалось в документации Laravel:</span></p><blockquote class="ach" style="box-sizing: inherit; margin: 0px; padding-left: 30px;"><p class="aci acj xi bv ack acl acm acn aco acp acq zo ho" data-selectable-paragraph="" id="3cb1" style="box-sizing: inherit; color: #757575; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 28px; letter-spacing: -0.009em; line-height: 40px; margin: 1.75em 0px -0.46em;"><span style="box-sizing: inherit; vertical-align: inherit;">Каждый раз, когда вы определяете HTML-форму «POST», «PUT», «PATCH» или «DELETE» в своем приложении, вы должны включить в форму скрытое </span><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 21px; padding: 2px 4px;">_token</code><span style="box-sizing: inherit; vertical-align: inherit;">поле CSRF, чтобы промежуточное программное обеспечение защиты CSRF могло проверить запрос.</span></p></blockquote><p class="pw-post-body-paragraph ys yt xi su b yu acr yw yx yy acs za zb zc act ze zf zg acu zi zj zk acv zm zn zo qo by" data-selectable-paragraph="" id="1cc9" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2.48em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">По умолчанию Laravel не выполнит любой запрос от упомянутых действий без поля _token.</span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="86e6" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Так почему мы упомянули об этом?</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">За свою карьеру я видел, как многие разработчики определяют маршрут GET для не-GET действий, как, например, этот маршрут</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="1ff6" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">Route::get('product/{id}/delete','ProductController@delete);</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="bdf2" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Для предыдущего маршрута, если он был вызван, он выполнит действие удаления, потому что laravel не будет проверять поле _token, и действие будет выполнено.</span></p><blockquote class="aeh aei aej" style="box-shadow: rgb(41, 41, 41) 3px 0px 0px 0px inset; box-sizing: inherit; margin: 0px 0px 0px -20px; padding-left: 23px;"><p class="ys yt aek su b yu yv yw yx yy yz za zb ael zd ze zf aem zh zi zj aen zl zm zn zo qo by" data-selectable-paragraph="" id="349b" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">Что делать:</span></span><br style="box-sizing: inherit;" /></span><span style="box-sizing: inherit; vertical-align: inherit;">будьте осторожны при определении маршрута, используйте каждый метод для соответствующего действия или события.</span></p></blockquote></div><div class="am an abl mv gz abm" role="separator" style="box-sizing: inherit; display: flex; justify-content: center; margin-bottom: 14px; margin-top: 32px; padding-bottom: 10px; padding-top: 24px;"><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; width: 3px;"></span></div><div class="qo xd xe xf xg" style="box-sizing: inherit; overflow-wrap: break-word; word-break: break-word;"><h1 class="abq abr xi bv kx abs abt abu rz abv abw abx se sf aby sg sj sk abz sl so sp aca sq st acb by" data-selectable-paragraph="" id="3a87" style="box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; letter-spacing: 0px; line-height: 28px; margin: 2.05em 0px -0.37em;"><span style="box-sizing: inherit; vertical-align: inherit;">Использование $request->all() для создания модели</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="812c" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Теперь самое интересное,</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">я видел, как многие разработчики развертывали следующий код:</span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="cb6c" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">\Приложение\Модели\User.php</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="a865" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;"><?php </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">namespace App\Models; </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">class User extends </span><em class="aek" style="box-sizing: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">Authenticatable</span></span><br style="box-sizing: inherit;" /></em><span style="box-sizing: inherit; vertical-align: inherit;"> { </span><br style="box-sizing: inherit;" /><em class="aek" style="box-sizing: inherit;"><br style="box-sizing: inherit;" /> </em><span style="box-sizing: inherit; vertical-align: inherit;">protected $fillable = [ </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> 'usernamename', </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> 'email', </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> 'password', </span><br style="box-sizing: inherit;" /> <span class="aec he" style="box-sizing: inherit; font-weight: 700;">'role'</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> ]; </span><br style="box-sizing: inherit;" /><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">}</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="9693" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">UserRequest.php</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="5a2e" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;"><?php </span><br style="box-sizing: inherit;" /><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">namespace App\Http\Requests; </span><br style="box-sizing: inherit;" /><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">class UserRequest extends FormRequest </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">{ </span><br style="box-sizing: inherit;" /> <em class="aek" style="box-sizing: inherit;"><br style="box-sizing: inherit;" /> </em><span style="box-sizing: inherit; vertical-align: inherit;">public function rules() </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> { </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> return [ </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> 'username'=>'required', </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> 'email'=>'email|required|unique:users,email' </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> 'password'=>'required|min:8' </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> ]; </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> } </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">}</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="a5c4" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">UserController.php</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="01cc" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;"><?php </span><br style="box-sizing: inherit;" /><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">namespace App\Http\Controllers; </span><br style="box-sizing: inherit;" /><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">класс UserController расширяет контроллер </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">{ </span><em class="aek" style="box-sizing: inherit;"><br style="box-sizing: inherit;" /> </em><span style="box-sizing: inherit; vertical-align: inherit;">общедоступное хранилище функций (UserRequest $ request) </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> { </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> User :: create ( </span><span class="aec he" style="box-sizing: inherit; font-weight: 700;">$ request-> all ()</span><span style="box-sizing: inherit; vertical-align: inherit;"> ); </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> вернуть ответ()->json(); </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> } </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">}</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="4e69" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Многие разработчики думают, что при использовании проверки </span><em class="aek" style="box-sizing: inherit;">FormRequest.php</em><span style="box-sizing: inherit; vertical-align: inherit;"> $request->all() будет возвращать только проверенные данные, НЕПРАВИЛЬНО</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">для предыдущего примера, если пользователь отправит полезную нагрузку как:</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="aefd" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">{ </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> "имя пользователя": "тест", </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> "электронная почта": "email@email.com", </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> "пароль": "Pssw0rd", </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> "роль": "admin" </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">}</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="5aaf" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Пользователь Test будет администратором и бум.</span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="99de" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Это простой пример, так что продолжайте свое воображение.</span></p><blockquote class="aeh aei aej" style="box-shadow: rgb(41, 41, 41) 3px 0px 0px 0px inset; box-sizing: inherit; margin: 0px 0px 0px -20px; padding-left: 23px;"><p class="ys yt aek su b yu yv yw yx yy yz za zb ael zd ze zf aem zh zi zj aen zl zm zn zo qo by" data-selectable-paragraph="" id="dafe" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">Что делать:</span></span><br style="box-sizing: inherit;" /></span><span style="box-sizing: inherit; vertical-align: inherit;">вместо использования $request->all()</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">вы можете использовать $request->validated() или $request->only().</span></p></blockquote></div><div class="am an abl mv gz abm" role="separator" style="box-sizing: inherit; display: flex; justify-content: center; margin-bottom: 14px; margin-top: 32px; padding-bottom: 10px; padding-top: 24px;"><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; width: 3px;"></span></div><div class="qo xd xe xf xg" style="box-sizing: inherit; overflow-wrap: break-word; word-break: break-word;"><h1 class="abq abr xi bv kx abs abt abu rz abv abw abx se sf aby sg sj sk abz sl so sp aca sq st acb by" data-selectable-paragraph="" id="548e" style="box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; letter-spacing: 0px; line-height: 28px; margin: 2.05em 0px -0.37em;"><span class="be" style="box-sizing: inherit; font-weight: inherit;">Забыть включенный режим отладки в производстве</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="f94e" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Итак, мы сделали все возможное, чтобы сделать приложение безопасным. И последнее: </span><span class="su he" style="box-sizing: inherit; font-weight: 700;">НЕ ЗАБЫВАЙТЕ APP_DBUG=TRUE</span><span style="box-sizing: inherit; vertical-align: inherit;"> в файле .env.</span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="0218" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Если оставить режим отладки включенным, хакерам будут раскрыты некоторые важные части вашего кода или даже некоторые данные конфигурации и учетные данные третьих лиц.</span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="15c0" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">например, я создал функцию для исключения исключения следующим образом</span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="box-sizing: inherit; clear: both; margin: 56px auto 0px;"><div class="yj yk cu yl ae ym" role="button" style="box-sizing: inherit; cursor: zoom-in; position: relative; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s; width: 692px; z-index: auto;" tabindex="0"><div class="re rf aes" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 1236px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" srcset="https://miro.medium.com/max/640/1*HklouJlaKP0DLZK6vCot1w.png 640w, https://miro.medium.com/max/720/1*HklouJlaKP0DLZK6vCot1w.png 720w, https://miro.medium.com/max/750/1*HklouJlaKP0DLZK6vCot1w.png 750w, https://miro.medium.com/max/786/1*HklouJlaKP0DLZK6vCot1w.png 786w, https://miro.medium.com/max/828/1*HklouJlaKP0DLZK6vCot1w.png 828w, https://miro.medium.com/max/1100/1*HklouJlaKP0DLZK6vCot1w.png 1100w, https://miro.medium.com/max/1400/1*HklouJlaKP0DLZK6vCot1w.png 1400w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="250" loading="eager" role="presentation" src="https://miro.medium.com/max/1400/1*HklouJlaKP0DLZK6vCot1w.png" style="background-color: white; box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 692px;" width="700" /></picture></div></div></figure><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="105f" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">На странице исключений было открыто содержимое моего файла модели пользователя:</span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="box-sizing: inherit; clear: both; margin: 56px auto 0px;"><div class="yj yk cu yl ae ym" role="button" style="box-sizing: inherit; cursor: zoom-in; position: relative; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s; width: 692px; z-index: auto;" tabindex="0"><div class="re rf aet" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 829px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" srcset="https://miro.medium.com/max/640/1*e9nY0XD7VeFDLxhf-FEa4Q.png 640w, https://miro.medium.com/max/720/1*e9nY0XD7VeFDLxhf-FEa4Q.png 720w, https://miro.medium.com/max/750/1*e9nY0XD7VeFDLxhf-FEa4Q.png 750w, https://miro.medium.com/max/786/1*e9nY0XD7VeFDLxhf-FEa4Q.png 786w, https://miro.medium.com/max/828/1*e9nY0XD7VeFDLxhf-FEa4Q.png 828w, https://miro.medium.com/max/1100/1*e9nY0XD7VeFDLxhf-FEa4Q.png 1100w, https://miro.medium.com/max/1400/1*e9nY0XD7VeFDLxhf-FEa4Q.png 1400w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="387" loading="lazy" role="presentation" src="https://miro.medium.com/max/1400/1*e9nY0XD7VeFDLxhf-FEa4Q.png" style="background-color: white; box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 692px;" width="700" /></picture></div></div></figure><blockquote class="aeh aei aej" style="box-shadow: rgb(41, 41, 41) 3px 0px 0px 0px inset; box-sizing: inherit; margin: 0px 0px 0px -20px; padding-left: 23px;"><p class="ys yt aek su b yu yv yw yx yy yz za zb ael zd ze zf aem zh zi zj aen zl zm zn zo qo by" data-selectable-paragraph="" id="a44e" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;">Что делать:</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">просто установить для APP_DEBUG в файле .env значение false.</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">если вы хотите отслеживать журнал исключений, просто добавьте следующий код в файл App\Exceptions\Handler.php:</span></p></blockquote><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="5f8d" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">защищенная функция LogException(\Exception $ex){ </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> Log::error("Сообщение: ".$ex->getMessage()); </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> Log::error("Строка: ".$ex->getLine()); </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> Log::error("Файл: ".$ex->getFile()); </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">} </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">public function register(){ </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> $this->reportable(function (Throwable $e) { </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> $this->LogException($exception); </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> }); </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">}</span></span></pre></div><div class="am an abl mv gz abm" role="separator" style="box-sizing: inherit; display: flex; justify-content: center; margin-bottom: 14px; margin-top: 32px; padding-bottom: 10px; padding-top: 24px;"><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; width: 3px;"></span></div><div class="qo xd xe xf xg" style="box-sizing: inherit; overflow-wrap: break-word; word-break: break-word;"><h1 class="abq abr xi bv kx abs abt abu rz abv abw abx se sf aby sg sj sk abz sl so sp aca sq st acb by" data-selectable-paragraph="" id="8fa3" style="box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; letter-spacing: 0px; line-height: 28px; margin: 2.05em 0px -0.37em;"><span style="box-sizing: inherit; vertical-align: inherit;">XSS с использованием неэкранированного оператора данных</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="c132" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">По умолчанию операторы Blade </span><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 15px; padding: 2px 4px;">{{ }}</code><span style="box-sizing: inherit; vertical-align: inherit;">автоматически отправляются через </span><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 15px; padding: 2px 4px;">htmlspecialchars</code><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">функцию PHP для предотвращения XSS-атак. </span><span style="box-sizing: inherit; vertical-align: inherit;">Если вы не хотите, чтобы ваши данные были экранированы, вы можете использовать следующий синтаксис:</span></span><br style="box-sizing: inherit;" /><code class="en aep aeq aer aec b" style="background-color: #f2f2f2; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 15px; padding: 2px 4px;">{!! $data !!}</code></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="2ed4" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">это большая уязвимость XSS, позволяющая не экранировать пользовательские данные в представлении блейда.</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">чтобы увидеть разницу, давайте посмотрим на следующий пример:</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="2bf1" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">$data = '<b>Полужирный</b>'; </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">----------------------- </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"><body> </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"> это экранировано {{$data}} </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;"> это не экранировано {!! </span><span style="box-sizing: inherit; vertical-align: inherit;">$данные !!} </span></span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"></body></span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="69e7" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">страница будет следующей</span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="box-sizing: inherit; clear: both; margin: 56px auto 0px;"><div class="re rf aeu" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 213px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 213px" srcset="https://miro.medium.com/max/640/1*lWkC1MFBPaHVUfTDdsaLew.png 640w, https://miro.medium.com/max/720/1*lWkC1MFBPaHVUfTDdsaLew.png 720w, https://miro.medium.com/max/750/1*lWkC1MFBPaHVUfTDdsaLew.png 750w, https://miro.medium.com/max/786/1*lWkC1MFBPaHVUfTDdsaLew.png 786w, https://miro.medium.com/max/828/1*lWkC1MFBPaHVUfTDdsaLew.png 828w, https://miro.medium.com/max/1100/1*lWkC1MFBPaHVUfTDdsaLew.png 1100w, https://miro.medium.com/max/426/1*lWkC1MFBPaHVUfTDdsaLew.png 426w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="47" loading="lazy" role="presentation" src="https://miro.medium.com/max/426/1*lWkC1MFBPaHVUfTDdsaLew.png" style="background-color: white; box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 213px;" width="213" /></picture></div></figure><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="5745" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">например, если $data был пользовательским вводом, например:</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="0725" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">$data = '<script>alert("XSS-атака");</script>';</span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="0a60" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">результат будет:</span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="box-sizing: inherit; clear: both; margin: 56px auto 0px;"><div class="re rf aev" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 482px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 482px" srcset="https://miro.medium.com/max/640/1*qNaJaFiQlz8cf6qBERGqaA.png 640w, https://miro.medium.com/max/720/1*qNaJaFiQlz8cf6qBERGqaA.png 720w, https://miro.medium.com/max/750/1*qNaJaFiQlz8cf6qBERGqaA.png 750w, https://miro.medium.com/max/786/1*qNaJaFiQlz8cf6qBERGqaA.png 786w, https://miro.medium.com/max/828/1*qNaJaFiQlz8cf6qBERGqaA.png 828w, https://miro.medium.com/max/1100/1*qNaJaFiQlz8cf6qBERGqaA.png 1100w, https://miro.medium.com/max/964/1*qNaJaFiQlz8cf6qBERGqaA.png 964w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="154" loading="lazy" role="presentation" src="https://miro.medium.com/max/964/1*qNaJaFiQlz8cf6qBERGqaA.png" style="background-color: white; box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 482px;" width="482" /></picture></div></figure><blockquote class="aeh aei aej" style="box-shadow: rgb(41, 41, 41) 3px 0px 0px 0px inset; box-sizing: inherit; margin: 0px 0px 0px -20px; padding-left: 23px;"><p class="ys yt aek su b yu yv yw yx yy yz za zb ael zd ze zf aem zh zi zj aen zl zm zn zo qo by" data-selectable-paragraph="" id="a2e5" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;">Что делать:</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">будьте осторожны и не используйте неэкранированный оператор {!! </span><span style="box-sizing: inherit; vertical-align: inherit;">!!} с данными, предоставленными пользователем, Никогда не доверяйте вводу пользователя</span></span></p></blockquote></div><div class="am an abl mv gz abm" role="separator" style="box-sizing: inherit; display: flex; justify-content: center; margin-bottom: 14px; margin-top: 32px; padding-bottom: 10px; padding-top: 24px;"><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; display: inline-block; height: 3px; width: 3px;"></span></div><div class="qo xd xe xf xg" style="box-sizing: inherit; overflow-wrap: break-word; word-break: break-word;"><h1 class="abq abr xi bv kx abs abt abu rz abv abw abx se sf aby sg sj sk abz sl so sp aca sq st acb by" data-selectable-paragraph="" id="ccad" style="box-sizing: inherit; color: #292929; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 22px; letter-spacing: 0px; line-height: 28px; margin: 2.05em 0px -0.37em;"><span style="box-sizing: inherit; vertical-align: inherit;">XSS с использованием атрибута href</span></h1><p class="pw-post-body-paragraph ys yt xi su b yu acc yw yx yy acd za zb zc ace ze zf zg acf zi zj zk acg zm zn zo qo by" data-selectable-paragraph="" id="e35d" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;"><span style="box-sizing: inherit; vertical-align: inherit;">не только {!! </span><span style="box-sizing: inherit; vertical-align: inherit;">!!} позволяет выполнять вредоносный код на стороне клиента, но также это можно сделать с помощью атрибута href в теге <a>.</span></span></p><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="152e" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">так, например, ваше приложение позволяет пользователям обмениваться ссылками, и вы создали тег <a> для отображения ссылок и перенаправления пользователей на ссылки, если один из пользователей сохранил вредоносный код в качестве ссылки, это может привести к несчастному концу:</span></p><pre class="acw acx acy acz vy oj jv aea aeb lg aec" style="background: rgb(242, 242, 242); border-radius: 0px; border: none; box-sizing: inherit; font-family: Menlo, Monaco, "Courier New", Courier, monospace; margin-bottom: 0px; margin-top: 56px; overflow-x: auto; padding: 20px;"><span class="by aed abr xi aec b ec aee aef y aeg" data-selectable-paragraph="" id="1c54" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;">$data = 'javascript:alert("XSS-атака");'; </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">-------------------------------------------------- </span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">.blade-файл:</span></span><span class="by aed abr xi aec b ec aeo aef y aeg" data-selectable-paragraph="" id="1fb7" style="box-sizing: inherit; color: #292929; display: block; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: 0.91em; white-space: pre-wrap;"><span style="box-sizing: inherit; vertical-align: inherit;"><a href="{{$data}}">Нажмите здесь, чтобы увидеть дополнительную ссылку</a></span></span></pre><p class="pw-post-body-paragraph ys yt xi su b yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo qo by" data-selectable-paragraph="" id="a3ba" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 20px; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span style="box-sizing: inherit; vertical-align: inherit;">Итак, когда пользователь нажимает на него:</span></p><figure class="acw acx acy acz vy yi re rf paragraph-image" style="box-sizing: inherit; clear: both; margin: 56px auto 0px;"><div class="re rf aev" style="box-sizing: inherit; margin-left: auto; margin-right: auto; max-width: 482px;"><picture style="box-sizing: inherit;"><source data-testid="og" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 482px" srcset="https://miro.medium.com/max/640/1*qNaJaFiQlz8cf6qBERGqaA.png 640w, https://miro.medium.com/max/720/1*qNaJaFiQlz8cf6qBERGqaA.png 720w, https://miro.medium.com/max/750/1*qNaJaFiQlz8cf6qBERGqaA.png 750w, https://miro.medium.com/max/786/1*qNaJaFiQlz8cf6qBERGqaA.png 786w, https://miro.medium.com/max/828/1*qNaJaFiQlz8cf6qBERGqaA.png 828w, https://miro.medium.com/max/1100/1*qNaJaFiQlz8cf6qBERGqaA.png 1100w, https://miro.medium.com/max/964/1*qNaJaFiQlz8cf6qBERGqaA.png 964w" style="box-sizing: inherit;"></source><img alt="" class="ae yn yo c" height="154" loading="lazy" role="presentation" src="https://miro.medium.com/max/964/1*qNaJaFiQlz8cf6qBERGqaA.png" style="background-color: white; box-sizing: inherit; height: auto; max-width: 100%; vertical-align: middle; width: 482px;" width="482" /></picture></div></figure><blockquote class="aeh aei aej" style="box-shadow: rgb(41, 41, 41) 3px 0px 0px 0px inset; box-sizing: inherit; margin: 0px 0px 0px -20px; padding-left: 23px;"><p class="ys yt aek su b yu yv yw yx yy yz za zb ael zd ze zf aem zh zi zj aen zl zm zn zo qo by" data-selectable-paragraph="" id="611f" style="box-sizing: inherit; color: #292929; font-family: source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 32px; margin: 2em 0px -0.46em; word-break: break-word;"><span class="su he" style="box-sizing: inherit; font-weight: 700;">Что вам следует делать:</span><br style="box-sizing: inherit;" /><span style="box-sizing: inherit; vertical-align: inherit;">если пользователи предоставляют ссылки для размещения ваших файлов блейдов и динамического совместного использования, вы можете просто </span><span class="su he" style="box-sizing: inherit; font-weight: 700;">проверить схему http/https</span><span style="box-sizing: inherit; vertical-align: inherit;"> перед сохранением ссылки.</span></p></blockquote></div><div class="am an abl mv gz abm" role="separator" style="box-sizing: inherit; display: flex; justify-content: center; margin-bottom: 14px; margin-top: 32px; padding-bottom: 10px; padding-top: 24px;"><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; color: rgba(0, 0, 0, 0.8); display: inline-block; font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; height: 3px; margin-right: 20px; width: 3px;"></span><span class="abn nt cp abo abp ek" style="background-color: #080808; border-radius: 50%; box-sizing: inherit; color: rgba(0, 0, 0, 0.8); display: inline-block; font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; height: 3px; margin-right: 20px; width: 3px;"></span></div>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-32285041187436409112022-06-30T23:16:00.002-07:002022-06-30T23:16:32.939-07:00Ignoreips для fail2ban при использовании cloudflare<p> 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22 2400:cb00::/32 2606:4700::/32 2803:f800::/32 2405:b500::/32 2405:8100::/32 2a06:98c0::/29 2c0f:f248::/32</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-24076961642797457022022-06-10T16:57:00.003-07:002022-06-10T16:57:11.877-07:00Блокирование IP адресов из списка iptables<p> </p><div class="s-prose js-post-body" itemprop="text" style="--s-prose-line-height: 1.5; --s-prose-spacing-condensed: calc(var(--s-prose-spacing) / 2); --s-prose-spacing: 1.1em; border: 0px; box-sizing: inherit; font-family: var(--theme-post-body-font-family); font-size: 15px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: var(--s-prose-line-height); margin: 0px; overflow-wrap: break-word; padding: 0px; vertical-align: baseline; width: 659px;"><pre style="border-radius: var(--br-md); border: 0px; box-sizing: inherit; color: var(--highlight-color); font-family: var(--ff-mono); font-size: var(--fs-body1); font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: var(--lh-md); margin-bottom: 0px; margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;"><code style="border-radius: 0px; border: 0px; box-sizing: inherit; color: var(--black-800); font-family: var(--ff-mono); font-size: var(--fs-body1); font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;">for IP in $(cat ip_list); do echo "Banning $IP"; iptables -A INPUT -s $IP/32 -d 0/0 -j DROP; done<br /></code></pre><div><code style="border-radius: 0px; border: 0px; box-sizing: inherit; color: var(--black-800); font-family: var(--ff-mono); font-size: var(--fs-body1); font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;"><br /></code></div></div><div class="mt24" style="border: 0px; box-sizing: inherit; font-family: inherit; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: var(--su24) !important; padding: 0px; vertical-align: baseline;"><div class="d-flex fw-wrap ai-start jc-end gs8 gsy" style="align-items: flex-start !important; border: 0px; box-sizing: inherit; display: flex !important; flex-wrap: wrap !important; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; justify-content: flex-end !important; line-height: inherit; margin-left: 0px; margin-right: 0px; padding: 0px; vertical-align: baseline;"><time datetime="2011-02-24T21:03:18" itemprop="dateCreated" style="background-color: white; border: 0px; box-sizing: inherit; color: #232629; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI Adjusted", "Segoe UI", "Liberation Sans", sans-serif; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"></time><div class="flex--item mr16" style="background-color: white; border: 0px; box-sizing: inherit; color: #232629; flex: 1 1 100px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI Adjusted", "Segoe UI", "Liberation Sans", sans-serif; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin-left: 0px; margin-right: 0px; padding: 0px; vertical-align: baseline;"><div class="js-post-menu pt2" data-post-id="239947" style="border: 0px; box-sizing: inherit; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: var(--su2) !important; vertical-align: baseline;"><div class="d-flex gs8 s-anchors s-anchors__muted fw-wrap" style="border: 0px; box-sizing: inherit; display: flex !important; flex-wrap: wrap !important; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: calc(var(--su8) / 2 * -1); padding: 0px; vertical-align: baseline;"></div></div></div></div></div>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-54248753210270306452022-04-10T15:42:00.003-07:002022-04-10T15:42:51.919-07:00Удаление комментариев html в vscode<p> Сначала удаляем однострочные комментарии</p><p><!--(.*)--></p><p>Потом удаляем многострочные комментарии</p><p><!--(.*)<span style="color: #c7254e; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14.4px; font-weight: 700;">[\s\S\n]+?</span>--></p><p><br /></p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-28767616007851115482022-03-22T11:43:00.004-07:002022-06-04T07:47:48.818-07:00Letsecrypt генерация whildcard сертификата и поддоменов<p>certbot certonly --manual -d *.example.com -d *.example.com -d *.c.example.com --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory</p><p><br /></p><p>https://www.oldfag.ru/2020/03/wildcard-certificates-lets-encrypt-yandex-dns.html</p><p><br /></p><p>certbot certonly --manual-public-ip-logging-ok --agree-tos --renew-by-default -d example.com -d *.example.com --manual --manual-auth-hook /scripts/certbot-dns-pddyandex/yandex-auth-hook.sh --manual-cleanup-hook /scripts/certbot-dns-pddyandex/yandex-cleanup-hook.sh --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --register-unsafely-without-email</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-92003655954867592832022-03-17T23:10:00.004-07:002022-03-17T23:10:33.110-07:00Проверка наличия txt записи для letsencrypt wildcard<p>Проверка наличия txt записи для letsencrypt wildcard </p><p><span style="background-color: white; color: #222222; font-family: Arial, sans-serif; font-size: 15.008px;">nslookup -q=TXT _acme-challenge.remote.globalfire.pt</span></p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-42054056036375292802022-03-09T09:42:00.006-08:002022-03-09T09:42:49.340-08:00mysqldump с прогрессом<p>mysqldump с прогрессом</p><p>Установить PV</p><p>apt install pv</p><p>mysqldump -u%Username% -h%IPAddress% -p databasename | pv --progress --size %DATABASE_SIZE%g > databasename.sql</p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-53071850530118306872022-02-25T02:33:00.002-08:002022-02-25T02:33:22.846-08:00Решение проблемы warning: files list file for package Debian<p>Собираем в файл проблемные пакеты</p><p><b>echo -n "apt install --reinstall " >> packs.log;</b></p><p>далее вставляем скрипт</p><p><b>for package in $(apt install --reinstall catdoc 2>&1 |\</b></p><p><b> grep "warning: files list file for package '" |\</b></p><p><b> grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do</b></p><p><b> echo -n " $package" >> packs.log;</b></p><p><b>done</b></p><p>выводим строку в консоль</p><p><b>cat packs.log</b></p><p>копируем и применяем то что будет в выводе</p><p><br /></p><p><br /></p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-77518370720392233212022-01-04T15:16:00.005-08:002022-01-04T15:16:32.959-08:00Активация сенсора отпечатка пальца в ubuntu<div><span style="color: seagreen; font-family: Monaco, Andale Mono, Courier New, Courier, monospace;"><span style="background-color: white; font-size: 11.7px; white-space: pre;">sudo apt install fprintd libpam-fprintd</span></span></div><div><span style="color: seagreen; font-family: Monaco, Andale Mono, Courier New, Courier, monospace;"><span style="background-color: white; font-size: 11.7px; white-space: pre;">Запускаем программу для обучения</span></span></div><div><span style="color: seagreen; font-family: Monaco, Andale Mono, Courier New, Courier, monospace;"><span style="background-color: white; font-size: 11.7px; white-space: pre;">fprintd-enroll -f left-index-finger</span></span></div><div><span style="color: seagreen; font-family: Monaco, Andale Mono, Courier New, Courier, monospace;"><span style="background-color: white; font-size: 11.7px; white-space: pre;">Обучаем(водим пальцем по сенсору) пока программа не выполнится до конца</span></span></div><div><span style="color: seagreen; font-family: Monaco, Andale Mono, Courier New, Courier, monospace;"><span style="background-color: white; font-size: 11.7px; white-space: pre;">Обновляем способ аутентификации</span></span></div><div><span style="color: seagreen; font-family: Monaco, Andale Mono, Courier New, Courier, monospace;"><span style="background-color: white; font-size: 11.7px; white-space: pre;">sudo pam-auth-update</span></span></div>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-34689587093303838702021-08-19T11:41:00.005-07:002021-08-19T11:41:38.707-07:00Решение проблемы emulator: ERROR: Running multiple emulators with the same AVD is an experimental feature.<p>Решение проблемы emulator: ERROR: Running multiple emulators with the same AVD is an experimental feature.</p><p class="gf gg dt gh b gi hy gk gl gm hz go gp gq ia gs gt gu ib gw gx gy ic ha hb hc dm bg" data-selectable-paragraph="" id="8f4d" style="-webkit-text-stroke-width: 0px; background-color: white; box-sizing: inherit; color: #292929; font-family: charter, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: -0.003em; line-height: 32px; margin: 0.86em 0px -0.46em; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-break: break-word; word-spacing: 0px;">You would find the following 3files in<span> </span><strong class="gh jh" style="box-sizing: inherit; font-family: charter, Georgia, Cambria, "Times New Roman", Times, serif; font-weight: 700;">/.andoroid/avd/(Your Device).avd</strong><span> </span>of user root directory. Then, delete them.</p><pre class="ie if ig ih ii iz ja bn" style="-webkit-text-stroke-width: 0px; background: rgb(242, 242, 242); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 56px 0px 0px; orphans: 2; overflow-x: auto; padding: 20px; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;"><span class="bg jb he dt jc b jd je jf s jg" data-selectable-paragraph="" id="3efb" style="box-sizing: inherit; color: #292929; display: block; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;">cache.img<br style="box-sizing: inherit;" />hardware-qemu.ini.lock<br style="box-sizing: inherit;" />multiinstance.lock</span></pre><p> </p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-13599496980763461102021-08-15T09:49:00.004-07:002021-08-15T09:49:37.433-07:00Решение проблемы Error: EISDIR: illegal operation on a directory, read<p> Решение проблемы Error: EISDIR: illegal operation on a directory, read</p><p> Запустить команду</p><p>npm config list</p><p>проверить есть ли пункт</p><p>userconfig = "/home/<USER>/.npmrc"</p><p>Удалить его</p><p>npm config delete userconfig<br /></p>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0tag:blogger.com,1999:blog-3794832601796083339.post-80504593958212036332021-08-13T14:36:00.005-07:002021-08-13T14:36:57.715-07:00Решение проблемы Could not connect to development server after updating react-native<p> Добавить в AndroidManifest.xml</p><p><br /></p><pre style="-webkit-text-stroke-width: 0px; background-color: var(--color-bg-tertiary); border-radius: 6px; box-sizing: border-box; color: #24292e; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.9px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; line-height: 1.45; margin-bottom: 16px; margin-top: 0px; orphans: 2; overflow-wrap: normal; overflow: auto; padding: 16px; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;"><code style="background: transparent; border-radius: 6px; border: 0px; box-sizing: border-box; display: inline; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.9px; line-height: inherit; margin: 0px; overflow-wrap: normal; overflow: visible; padding: 0px; white-space: pre; word-break: normal;">android:usesCleartextTraffic="true"</code></pre>aveselovhttp://www.blogger.com/profile/02791175505572047395noreply@blogger.com0