Защита сайта от взлома php: 10 способов защита сайта на PHP от взлома

Содержание

10 способов защита сайта на PHP от взлома

  • Главная

  • Вредные советы

Давно хотел написать статью, посвященную безопасности сайтов на Joomla. В последнее время участились взломы сайтов
на Joomla, и не только на ней. Взлому подвергаются любые CMS (например: Обнаружена опасная уязвимость в кеширующих плагинах для
WordPress). Методы заражения всегда однотипные: это заражения сайтов вирусами-троянцами, установка бекдоров
(backdoor). С этим бороться можно, и довольно просто. Есть ряд решений по защите сайтов на Joomla. Итак, обсудим.

Безопасность сайта на Joomla стоит разделить на части:

  1. Настройка .htaccess.
  2. Настройка веб-сервера Apache.
  3. Настройка веб-сервера Ngnix.
  4. Права файловой системы.
  5. Обновление CMS Joomla/Otober CMS/Wordpress.
  6. Удаление неиспользуемых расширений.
  7. Обновление расширений.
  8. Не используйте варезные расширения.
  9. Установка расширений безопасности.
  10. Сложные пароли к учетной записи администраторов.
  11. Создание страницы 404.

Безопасная настройка сервера/хостинга

Это самая важная часть, многие сайтостроители не задаются вопросом безопасности самого хостинга, где размещаются
сайты. А это распространенное заблуждение. Это надо делать в первую очередь. Все хостинги предоставляют услугу, как
есть. Только на некоторых площадках уже сделана тонкая настройка хостинга/сервера.

Используйте

.htaccess

Блокировать типичные попытки эксплоита можно с помощью файла .htaccess который должен находится в корне
сайта. По умолчанию эта функция не включена на всех серверах. Используя файл .htaccess, вы сможете защитить с
его помощью важные директории, например, такие, как administrator, можно блокировать доступ на сайт с
определенных IP-адресов. И еще много чего можно сделать, об этом напишем чуть ниже.

Сам дистрибутив Joomla уже идет в комплекте с настроенным файлом .htaccess, остается только переименовать его
изhtaccess.txt в .htaccess. И начнем настройку.

  • Перед внесением изменений в файл .htaccess, сделайте его резервную копию.
  • Обратите внимание, если после переименования файла, сайт покажет 500 страницу, значит
    хостинг не поддерживает .htaccess. Обратитесь в администрацию хостинга.
  • Если не видите изменений, то скорее всего у вас нет Apache. Надо настраивать Ngnix.
  • Если при внесении нижеследующих инструкций вы снова увидите 500 страницу, значит хостинг не поддерживает
    какие-либо команды из этого файла. index2.php»>
    order deny,allow
    allow from all
    </Filesmatch>
    ## Конец — Запрет на выполнение php-скриптов в корне сайта

    Запрет доступа к xml-файлам расширений

    ## Код запрета доступа к xml-файлам расширений (раскомментируйте для активации)
    <Files ~ "\.xml$">
        Order allow,deny
        Deny from all
        Satisfy all
    </Files>
    ## Конец кода запрета доступа к xml-файлам

    Блокирование прямого доступа к ядру

    Данное решение закроет доступ к бекдорам, тем самым увеличивая безопасность сайта на Joomla. По личному опыту, часто
    сайт заражается бекдором под названием FileMan. При удаленном вызове вы получаете полный доступ к файловой системе,
    вы можете изменять любые файлы, при этом оставляя дату последнего изменения, а не текущих. Нашли такие бекдоры в
    папке modules. Примеры:

    • /modules/mod_system/mod_system.php
    • /modules/mod_systems/mod_system.php
    • /modules/mod_article/mod_system.php
    • /modules/mod_articles/mod_system. php
    • /modules/mod_articless/mod_system.php

    Создать новый файл .htaccess. Добавить инструкцию, которая указана нижне. Она запрещает выполнение
    скриптов. Добавить его во все папки корня сайта.

    ## Блокирование прямого доступа к ядру
    <Files ~ ".(php)$">
        Deny from all
    </Files>

    Настройка Apache

    Теперь перейдем к настройке безопасности веб-сервера Apache, он обрабатывает PHP-код и возвращает браузеру HTML-код.
    Его тоже надо настроить. Тут может возникнуть ряд трудностей, так как не на всех серверах есть доступ к файлу
    php.ini (в нем хранится конфигурация Apache). Можно попробовать сконфигурировать через .htaccess.

    Повышаем безопасность сайта

    Для более тонкой настройки безопасности сайта и защиты от фишинга, вставляем следующий код в php.ini или в
    конфигурацию Apache:

    <IfModule mod_headers.c>
        #Запрещаем встраивать сайт во iframe
        Header always append X-Frame-Options SAMEORIGIN
        #Защищаем сайт от межсайтового скриптинга
        Header set X-XSS-Protection "1; mode=block"
        #Заголовок предотвращает атаки на основе mime
        Header set X-Content-Type-Options nosniff
        #Браузер отправляет полный URL на тот же сайт, и неполный (только название) на все остальные
        Header set Referrer-Policy origin-when-cross-origin
    </IfModule>

    Установите модуль mod_security

    ModSecurity — модуль Apache, добавляющий возможности обнаружения и предотвращения вторжения на Web-сервер.

    К сожалению вы сами не сможете этого сделать, советуем обратиться к администрации хостинга или к администратору
    выделенного/виртуального сервера. Они должны установить и сконфигурировать этот модуль.

    Используйте PHP версии 5.0 и выше.

    Версия 4.0 уже считается устаревшей, и некоторые функции считаются небезопасными.

    Не стоит бояться включить, например, версию 5.6.40 для Joomla ветки 1.5. CMS будет превосходно работать.

    Используйте локальный

    php.ini

    Некоторые хостинги позволяют использовать собственный файл конфигурации Apache, который находится в корне сайта.
    Если такая возможность есть, не упустите ее.

    Настройка

    php.ini

    Настройка простая. Вот рекомендуемые настройки безопасности Apache. Все описывать детально не буду, более подробную
    документацию сможете найти на сайте docs.joomla.org.

    disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
    open_basedir = /home/users/you/public_html:/tmp
    magic_quotes_gpc = 0
    safe_mode = 0
    register_globals = 0
    allow_url_fopen = 0
    allow_url_include = 0
    mail. add_x_header = 0
    error_reporting = E_ERROR
    

    Если нет возможности настроить php.ini, то можно попробовать прописать в .htaccess.

    php_flag register_globals Off
    php_flag file_uploads On
    php_flag allow_url_fopen Off
    php_flag magic_quotes_gpc On
    php_flag magic_quotes_runtime Off
    php_flag mail.add_x_header Off
    php_flag error_reporting E_ERROR

    Директива mail.add_x_header в каждом отправляемом письме добавляет заголовок X-PHP-Originating-Script, который
    содержит UID и имя скрипта отправляющего письмо. Это позволяет злоумышленнику узнать от какого пользователя работает
    PHP. Лучше отключим.

    Директива error_reporting сообщает PHP, что в логи писать информацию только об ошибках. В некоторых CMS и расширениях
    для них имеют кучу notice и warning, что может привести к росту файлов логов и место на винчестере просто
    закончится. Это закончится тем, что сайт будет не доступен.

    Права в файловой системе

    Если дистрибутив Joomla установлен на веб-сервере Apache с mod_php, то все виртуальные хосты на
    этом сервере работают в том же контексте, что и Joomla. Если файлы принадлежат другим пользователем, например
    «nobody» или «wwwrun», самым безопасным решением будет сменить владельца, используя
    FTP-клиенты (FilleZill, Total Commander и etc) и установить правильные права доступа. Они такие:

    • Корневая директория 750 (например public_html)
    • Файлы 644
    • Директории 755 (711 если вы параноик, но не для директорий, которые должны быть перечислены, например images)

    Обновление CMS Joomla

    Очень важный шаг. Обновить систему надо, так как разработчики периодически закрывают дырки в ядре. Например,
    последний билд для 1.5 является 1.5.26. Скачать релизы обновлений можно на сайте joomla.org.
    Там же найдете пакеты обновления и для более новых версий.

    Перед обновлением обязательно создайте резервную копию всего сайта, используя инструменты, которые предоставляет
    хостинг или воспользуйтесь компонентом Akeeba
    Backup.

    Удаление неиспользуемых расширений Joomla

    Многие сайтостроители ставят подряд все расширения, которые находят. По большей части все они бесполезны и имеют
    кучу дыр, через которые злоумышленник может получить полный доступ к сайту или заразить сайт на Joomla вирусом. Так
    что надо определиться, нужен ли вам виджет часов на сайте? Лучше удалить неиспользуемые расширения и оставить только
    действительно полезные.

    Обновление расширений Joomla

    Обязательно следить за релизами, особенно актуально для Joomla 3. В версии 1.6 и выше уже создана система
    репозиториев, которые позволят автоматически обновлять расширения. Одно из часто взламываемых расширений — это
    устаревший визуальный редактор. Есть более современный, удобный и бесплатный редактор JCE для всех версий Joomla.

    Не используйте «варезные» расширения

    Часто заражения сайта на Joomla происходит через расширения, скачанные с «варезные» сайтов. В 100% случаев вы уже там
    найдете вирус. Так что ищите бесплатные аналоги у авторов, либо покупайте. Расширения не всегда дорого стоят. 10-15$
    вас не разорят, зато это сделает ваш сайт более безопасным, заодно получите самую последнюю версию.

    Установка расширений безопасности

    Есть ряд полезных расширений для Joomla, который значительно повысит безопасность вашего сайта. Приведу их
    список.

    1. Admin Tools — шикарный инструмент
      реальной безопасности. При этом рекомендую купить профессиональную версию (она стоит всего 50 Евро), зато вы
      получите почти максимальную безопасность. Сравнение
      версий
    2. jHackGuard — интересный плагин от
      SiteGround, позволяющий существенно повысить безопасность сайта. HackGuard обеспечивает защиту от таких
      видов взлома, как: SQL-инъекции, удаленные включения URL/файлов, удаленное выполнение кода, а также защиту от
      XSS-атак.
    3. Ai-Bolit — Скрипт (не расширение) для поиска вирусов и вредоносных
      скриптов на сайте. Инструкция по его использованию — в коробке. К сожалению, уже не актуален. Последнюю версию можно скачать по ссылке
      Ai-Bolit. Это решение для параноиков. Почти все хостинги имеют у тебя на борту антивирусы.
    4. Shell and Backdoor Script
      Finder — вирусный сканер сайта, у него более продвинутые базы, чем у AI-Bolit.

    Сложные пароли к учетной записи администраторов

    У меня есть уверенность, что большинство сайтов на Joomla можно взломать с помощью пары логина admin и
    пароли 1234. Это недопустимая халатность. Такой пароль с логином подбирается в считанные секунды. Если вы
    испытываете трудности с генерацией сложных паролей, то воспользуйтесь сервисом pasw.ru.
    Для хранения используете сервисы, например как Roboform
    (при регистрации 6 месяцев бесплатно).

    Создание страницы «404»

    Ну, об этом я писал уже дважды: Посадочная 404
    страница и Как создать 404 страницу в Joomla 1.5.xx. Вы
    же не хотите увидеть вот такую скучную страницу:

    Вот, в принципе и все. Этих нескольких простых действий достаточно, чтобы ваш сайт жил и процветал. Безопасность
    сайта превыше всего.

    5 главных уязвимостей PHP безопасности

    Учитывая тот факт, что взлом некоторых сайтов может принести немалую выгоду, а для того, чтобы его осуществить, преступнику даже не нужно выходить из дома, можно сделать вывод, что взлом сайта – очень заманчивое занятие для преступника. В дополнение к этому, злоумышленники в интернете очень редко несут наказания за свои деяния.Но для того, чтобы взломать ресурс, хакер должен найти уязвимости в его работе. Пяти главным уязвимостям php и будет посвящена данная статья.

    SQL Injection

    Очень популярным методом взлома сайта среди хакеров является вставка SQL фрагмента вместо URL. В таком случае злоумышленник получает доступ к именам ваших таблиц. Чтобы избежать такого взлома, следует очень внимательно отслеживать все данные, которые присылают вам пользователи. Для борьбы с такими взломами обычно применяют PDO.

    Cross site scripting

    Так называемый XSS тоже является очень популярным способом взлома. Злоумышленники внедряют опасный код, обычно это JavaScript, в код вашего скрипта PHP. Это становится возможным в случае, когда отображены входные данные пользователей, которые были посланы вам из различных форм, блогов, форумов, чатов и т.д. Если в этих данных содержится вредоносный код, то ваш сайт может быть взломан.

    Откровения в исходном коде

    Еще одна уязвимость сайтов php – когда злоумышленники, в случае сбоя настроек Apache, могут видеть содержимое и названия ваших файлов. В нормальной ситуации PHP выполняется на стороне сервера, но в случае сбоя код может стать видим обычным пользователям. Этого нельзя допускать, так как прочитав его, злоумышленники могут увидеть доступные файлы или базы данных с важной информацией, такой как, например, учетные данные.

    Чтобы не допустить такого взлома, следует более внимательно отнестись к структуре каталогов вашего ресурса. Ни в коем случае не допускайте хранения важных файлов в каталогах, которые доступны всем пользователям, чтобы не допустить возможности, что их увидит кто-то, кроме вас.

    Удаленный запуск файлов

    Если ваш сайт содержит удаленные файлы, это тоже может стать причиной взлома, если эти файлы не доверенные. Если сайт, на котором хранятся ваши удаленные файлы, был взломан, то их код может быть заменен на вредоносный, который поможет хакерам во взломе вашего сайта. Поэтому нужно очень внимательно относиться к безопасности всех ресурсов, где располагаются ваши файлы.
    Если же все-таки взлом стороннего ресурса произошел, то есть довольно простой способ устранить опасность. Для этого вам нужно в php.ini проверить состояние следующих флажков:

    allow_url_fopen. Эта настройка отвечает за то, могут ли внешние файлы быть включены в ваш сайт. По умолчанию это разрешено, чтобы это изменить, кликните по флажку.
    allow_url_include. Вторая настройка определяет, могут ли встроенные функции ссылаться на файлы, расположенные удаленно на других ресурсах.

    Угон сессий

    Угон случается, когда злоумышленник украл чужой идентификатор сессии и воспользовался им. Этот идентификатор играет роль ключа в защищенном соединении между клиентом и веб-сервером. В PHP этот идентификатор хранится у пользователя. Если ключ был украден, но во время сеанса пользователем не было совершено никаких важных действий, то ничего особо страшного не произойдет. Но если во время сессии пользователь осуществляет, скажем, аутентификацию, это может привести к неприятным последствиям, ведь хакер может завладеть данными для входа в аккаунт. Это особенно важно, если пользователь, совершающий вход, является администратором сайта.

    ID сессии очень часто крадут с помощью описанного выше XSS скрипта. Поэтому защита от взлома с помощью XSS убьет сразу двух зайцев, и защитит вас еще и от угона сессий. Хорошим способом защиты именно от угона идентификаторов сессии является их регулярная смена. И чем чаще, тем лучше. Для того, чтобы сменить идентификатор в php вам нужно воспользоваться session_regenerate_id.

    В случае, если вы используете PHP 5.2 или выше, то для защиты от угона идентификатора вы можете воспользоваться таким функциями, как:
    session.cookie.httpolny и session_set_cookie_parms.

    Для того, чтобы обеспечить безопасность вашему проекту, регулярно проводите поиск уязвимостей на php сайте. Ведь, если у вашего ресурса не будет уязвимостей, то хакерам не за что будет зацепиться и вероятность взлома будет крайне мала.

    И, конечно, не забывайте, что защита вашего сайта определяется также надёжностью вашего хостинга. АдминВПС всегда заботится о безопасности ваших проектов, независимо от того, располагаются они на виртуальном хостинге или выделенных серверах.

    6 основных советов по безопасности для защиты вашего PHP-сайта от хакеров

    Редакция Geekflare
    в

    Безопасность
    |
    Последнее обновление:
    21 февраля 2022 г.

    Поделись на:

    Сканер безопасности веб-приложений Invicti — единственное решение, обеспечивающее автоматическую проверку уязвимостей с помощью Proof-Based Scanning™.

    Ваш PHP-сайт запущен. Поздравляем! Но подождите… вы позаботились об усилении безопасности?

    PHP — легкий, но очень мощный язык программирования. Он поддерживает около 80% глобальных веб-приложений, что делает его одним из наиболее часто используемых языков в мире разработки.

    Причиной его популярности и широкого использования является простая структура кодирования и удобные для разработчиков функции. Существует множество CMS и фреймворков, построенных на основе PHP, и тысячи известных разработчиков со всего мира являются постоянными членами его сообщества.

    Отличным примером является WordPress.

    Когда приложения PHP развернуты на работающих серверах, они могут столкнуться с несколькими случаями взлома и веб-атак, что делает данные его сайта чрезвычайно уязвимыми для кражи. Это одна из самых обсуждаемых тем в сообществе — как создать полностью безопасное приложение, соблюдая все основные цели проекта.

    Несмотря на все усилия, разработчики всегда остерегаются скрытых лазеек, которые остаются незамеченными при разработке приложения. Эти лазейки могут серьезно подорвать защиту жизненно важных данных сайта на любом веб-хостинге для приложений PHP MySQL, что сделает их уязвимыми для попыток взлома.

    Итак, эта статья посвящена некоторым полезным советам по безопасности PHP, которые вы могли бы с умом использовать в своих проектах. Используя эти небольшие советы, вы можете быть уверены, что ваше приложение всегда проходит проверку безопасности и никогда не скомпрометировано какими-либо внешними веб-атаками.

    Межсайтовый скриптинг (XSS)

    Межсайтовый скриптинг — одна из самых опасных внешних атак, осуществляемая путем внедрения любого вредоносного кода или сценария на веб-сайт. Это может повлиять на ядра вашего приложения, так как хакер может внедрить любой тип кода в ваше приложение, даже не давая вам подсказки. Эта атака в основном происходит на тех веб-сайтах, которые принимают и отправляют пользовательские данные.

    При атаке XSS внедренный код заменяет исходный код вашего веб-сайта, но работает как реальный код, нарушая работу сайта и часто похищая данные. Хакеры обходят контроль доступа вашего приложения, получая доступ к вашим файлам cookie, сеансам, истории и другим жизненно важным функциям.

    Вы можете противостоять этой атаке, используя специальные символы HTML и ENT_QUOTES в своих кодах приложений. Используя ENT_QUOTES, вы можете удалить одинарные и двойные кавычки, что позволит исключить любую возможность атаки межсайтового скриптинга.

    Подделка межсайтовых запросов (CSRF)

    CSRF передает хакерам полный контроль над приложениями для выполнения любых нежелательных действий. Имея полный контроль, хакеры могут выполнять вредоносные операции, перенося зараженный код на ваш сайт, что приводит к краже данных, функциональным изменениям и т. д. Атака вынуждает пользователей менять обычные запросы на измененные деструктивные, такие как неосознанный перевод средств, удаление всю базу данных без каких-либо уведомлений и т. д.

    Атака CSRF может быть инициирована только после нажатия на замаскированную вредоносную ссылку, отправленную хакером. Это означает, что если вы достаточно умны, чтобы выяснить зараженные скрытые скрипты, вы можете легко исключить любую потенциальную атаку CSRF. Между тем, вы также можете использовать две защитные меры для повышения безопасности вашего приложения, то есть с помощью запросов GET в вашем URL-адресе и обеспечения того, чтобы не-GET-запросы генерировались только из вашего кода на стороне клиента.

    Перехват сеанса

    Перехват сеанса — это атака, посредством которой хакер крадет ваш идентификатор сеанса, чтобы получить доступ к предполагаемой учетной записи. Используя этот идентификатор сеанса, хакер может проверить ваш сеанс, отправив запрос на сервер, где массив $_SESSION проверяет время безотказной работы, не оставляя вас в курсе. Это может быть выполнено с помощью атаки XSS или путем доступа к данным, в которых хранятся данные сеанса.

    Чтобы предотвратить перехват сеанса, всегда привязывайте свои сеансы к вашему фактическому IP-адресу. Эта практика помогает вам аннулировать сеансы всякий раз, когда происходит неизвестное нарушение, немедленно сообщая вам, что кто-то пытается обойти ваш сеанс, чтобы получить контроль над доступом к приложению. И всегда помните, ни при каких обстоятельствах не раскрывайте идентификаторы, так как это может впоследствии скомпрометировать вашу личность с помощью другой атаки.

    Предотвращение атак путем внедрения SQL-кода

    База данных является одним из ключевых компонентов приложения, которое в основном становится мишенью для хакеров посредством атаки путем внедрения кода SQL. Это тип атаки, при котором хакер использует определенные параметры URL для получения доступа к базе данных. Атака также может быть осуществлена ​​с использованием полей веб-формы, где хакер может изменить данные, которые вы передаете через запросы. Изменяя эти поля и запросы, хакер может получить контроль над вашей базой данных и может выполнить несколько пагубных манипуляций, включая удаление всей базы данных приложения.

    Для предотвращения атак путем внедрения кода SQL всегда рекомендуется использовать параметризованные запросы. Эти PDO-запросы должным образом заменяют аргументы перед выполнением SQL-запроса, эффективно исключая любую возможность атаки SQL-инъекцией. Эта практика не только поможет вам защитить ваши SQL-запросы, но и сделает их структурированными для эффективной обработки.

    Всегда используйте SSL-сертификаты

    Чтобы обеспечить сквозную безопасную передачу данных через Интернет, всегда используйте SSL-сертификаты в своих приложениях. Это всемирно признанный стандартный протокол, известный как протокол передачи гипертекста (HTTPS), для безопасной передачи данных между серверами. Используя SSL-сертификат, ваше приложение получает безопасный путь передачи данных, что практически исключает вторжение хакеров на ваши серверы.

    Все основные веб-браузеры, такие как Google Chrome, Safari, Firefox, Opera и другие, рекомендуют использовать сертификат SSL, поскольку он обеспечивает зашифрованный протокол для передачи, получения и расшифровки данных через Интернет.

    Скрыть файлы из браузера

    В фреймворках micro PHP существует особая структура каталогов, которая обеспечивает хранение важных файлов фреймворка, таких как контроллеры, модели, файл конфигурации (.yaml) и т. д.

    Большую часть времени , эти файлы не обрабатываются браузером, но остаются видимыми в браузере в течение более длительного периода времени, создавая брешь в безопасности приложения.

    Поэтому всегда храните файлы в общей папке, а не в корневом каталоге. Это сделает их менее доступными в браузере и скроет функциональные возможности от любого потенциального злоумышленника.

    Заключение

    PHP-приложения всегда уязвимы для внешних атак, но, используя приведенные выше советы, вы можете легко обезопасить ядро ​​своего приложения от любой вредоносной атаки. Как разработчик, вы несете ответственность за защиту данных вашего веб-сайта и обеспечение их безошибочности.

    Помимо этих советов, многие методы могут помочь вам защитить ваше веб-приложение от внешних атак, например, использование лучшего решения для облачного хостинга, обеспечивающего оптимальные функции безопасности, облачный WAF, настройка корня документа, внесение IP-адресов в белый список и многое другое.

    Благодарим наших спонсоров

    11 передовых методов обеспечения безопасности PHP

    PHP — один из самых популярных используемых сегодня языков программирования. Он используется миллионами веб-сайтов, в том числе некоторыми из самых известных в Интернете. Хотя PHP — очень мощный язык, он также может быть довольно небезопасным, если не используется должным образом. В этом сообщении блога мы обсудим 11 передовых методов обеспечения безопасности PHP, которые помогут защитить ваш сайт от хакеров и злоумышленников. Мы также поговорим о тестировании приложений на проникновение и о том, как его использовать для поиска уязвимостей в вашем коде.

    Как тестирование приложений помогает бизнесу?

    Ручное тестирование приложений — это процесс выявления уязвимостей в программном обеспечении путем имитации атаки на систему. Этот тип тестирования можно использовать для поиска недостатков в коде, которые могут позволить злоумышленникам получить доступ к конфиденциальным данным или захватить веб-сайт.

    Наиболее распространенные недостатки, выявленные в ходе тестирования приложений на проникновение, связаны с отсутствием методов безопасного кодирования, уязвимостями неправильной конфигурации, нарушенной аутентификацией и контролем доступа, а также утечками информации. Это только основные недостатки, включая, помимо прочего, 10 основных рисков OWASP. Выполняя регулярные проверки приложений на проникновение, вы можете найти и устранить эти уязвимости до того, как ими воспользуются хакеры.

    11 рекомендаций по безопасности PHP

    1. Всегда используйте последнюю версию PHP

    Регулярно выпускаются новые версии PHP с исправлениями и улучшениями безопасности. Используя последнюю версию, вы сможете воспользоваться этими исправлениями и улучшениями, а также любыми новыми функциями, которые могут быть полезны для вашего веб-сайта.

    2. Используйте обновленные зависимости кода и сторонние компоненты  

    Помимо использования последней версии PHP, вы также должны обновлять свой код. Сюда входят любые сторонние библиотеки или фреймворки, которые вы используете. Устаревшее программное обеспечение часто становится целью атак, потому что хакеры знают, что оно с большей вероятностью имеет уязвимости, которые можно использовать.

    3. Защитите свой веб-сервер

    Ваш веб-сервер должен быть правильно настроен для защиты вашего веб-сайта от атак. Это включает в себя отключение всех ненужных служб и правильную настройку прав доступа к файлам. Вы также должны использовать брандмауэр для блокировки нежелательного трафика и систему обнаружения/предотвращения вторжений (IDS/IPS) для отслеживания подозрительной активности.

    4. Не храните пароли с использованием обратимого шифрования

    Есть несколько основных причин, по которым обратимое шифрование вредно. Во-первых, его можно легко взломать и расшифровать, что делает ваши данные уязвимыми для кражи или раскрытия. Во-вторых, его можно использовать для слежки или отслеживания ваших действий, поскольку процесс шифрования и дешифрования оставляет четкий след активности. Наконец, его можно использовать для перечисления всех других паролей пользователей, также при условии, что для процесса шифрования и дешифрования используется статический ключ.

    Вместо этого вы должны хэшировать пароли с помощью надежного алгоритма хеширования, такого как bcrypt или Argonaut. Выходные данные, подготовленные с использованием алгоритмов хеширования, менее уязвимы для атак, чем алгоритмы шифрования. Это делает их более безопасными для хранения паролей или других конфиденциальных данных из-за огромной вычислительной мощности, необходимой для поиска эквивалентов открытого текста (дешифрования). Кроме того, алгоритмы хэширования намного быстрее алгоритмов шифрования, что делает их более подходящими для использования в приложениях, где важна скорость.

    5. Не полагайтесь на файлы cookie для обеспечения безопасности

    Файлы cookie часто используются для хранения информации о пользователях, такой как их статус входа в систему, имя пользователя, предпочтения или даже конфиденциальная информация. Однако файлы cookie по своей сути не являются безопасными и могут быть легко украдены злоумышленниками. Если вам нужно сохранить конфиденциальные данные в файле cookie, вы должны сначала зашифровать его.

    6. Проверка ввода пользователя

    Все действия пользователя должны проверяться до того, как они будут обработаны вашим кодом PHP. Сюда входят данные, введенные в поля формы, параметры URL и полезные данные JSON. Проверяя пользовательский ввод, вы можете помочь предотвратить атаки межсайтового скриптинга (XSS) и другие типы злонамеренного ввода.

    7. Используйте списки разрешенных (ранее белые списки) вместо черных списков (черных списков)

    Черный список — это список элементов, которые не разрешены, а белый список — это список элементов, которые разрешены. При использовании черных списков вы должны быть осторожны, чтобы не пропустить какие-либо несанкционированные элементы. Белые списки намного безопаснее, потому что они разрешают только авторизованные элементы. Вы всегда должны использовать белые списки, когда это возможно.

    8. Ограничить доступ к конфиденциальным файлам

    Некоторые файлы на вашем веб-сервере должны быть доступны только доверенным пользователям. Эти файлы могут включать файл конфигурации, учетные данные базы данных или файлы исходного кода. Ограничив доступ к этим файлам, вы поможете злоумышленникам не получить доступ к конфиденциальной информации.

    9. Убедитесь, что сообщения об ошибках не раскрывают

    Сообщения об ошибках часто могут дать злоумышленникам подсказки о том, как использовать ваш веб-сайт. Например, если злоумышленник попытается получить доступ к странице с ограниченным доступом, он может увидеть сообщение об ошибке «Отказано в доступе». Чтобы предотвратить это, вы должны убедиться, что сообщения об ошибках не раскрывают и не содержат конфиденциальной информации.

    10. Используйте SSL/TLS

    SSL/TLS — это безопасный протокол, который можно использовать для шифрования трафика между вашим веб-сервером и браузером пользователя. Это помогает защититься от атак «человек посередине» и других форм прослушивания. Вы всегда должны использовать SSL/TLS при передаче конфиденциальной информации, такой как пароли или номера кредитных карт.

    11.