> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/ru/hacking-tools/web/php-security-scanner.md).

# Сканер безопасности PHP

Поисковик опасных PHP-функций в PHP Security Scanner: опасные PHP-функции, рискованные шаблоны, влияние эксплуатации, заметки для первичной оценки и рекомендации по исправлению.

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

Используйте поиск функций как основной экран первичной сортировки: ищите по имени функции, категории, влиянию или уровню серьёзности.

## Поиск функций

<table data-view="cards" data-full-width="true" data-search="true"><thead><tr><th>Функция / шаблон</th><th>Категория</th><th>Серьёзность</th><th>Влияние</th><th>Проверка сканера</th><th>Исправление</th></tr></thead><tbody><tr><td><code>system()</code></td><td>Выполнение команд</td><td>Критическая</td><td>RCE от имени веб-пользователя</td><td>Помечайте недоверенные командные строки, интерполяцию, конкатенацию и аргументы, управляемые пользователем.</td><td>Используйте нативные API PHP или жёстко разрешённый список команд и аргументов.</td></tr><tr><td><code>exec()</code></td><td>Выполнение команд</td><td>Критическая</td><td>RCE, захват вывода команды</td><td>Проверьте, доходит ли до команды ввод из запроса, cookie, БД, файла или CLI.</td><td>Уберите использование shell или изолируйте фиксированные команды за списками разрешений.</td></tr><tr><td><code>shell_exec()</code></td><td>Выполнение команд</td><td>Критическая</td><td>RCE с возвращаемым выводом</td><td>Обнаруживайте динамическую сборку команд и вывод, отображаемый в ответах.</td><td>Замените безопасными вызовами библиотек.</td></tr><tr><td><code>passthru()</code></td><td>Выполнение команд</td><td>Критическая</td><td>RCE с необработанным выводом</td><td>Повышайте серьёзность, если достижимо из веб-маршрутов или обработки файлов.</td><td>Избегайте вызовов shell; проверяйте фиксированные наборы входных данных.</td></tr><tr><td><code>proc_open()</code></td><td>Управление процессами</td><td>Критическая</td><td>RCE, взаимодействие с процессом</td><td>Проверьте команду, спецификацию дескрипторов, окружение и рабочий каталог.</td><td>Используйте ограниченные worker-процессы и фиксированные шаблоны команд.</td></tr><tr><td><code>popen()</code></td><td>Управление процессами</td><td>Критическая</td><td>RCE через поток процесса</td><td>Помечайте недоверенные командные строки и чтение из потока.</td><td>По возможности замените на stream/file API PHP.</td></tr><tr><td><code>pcntl_exec()</code></td><td>Управление процессами</td><td>Критическая</td><td>Замена процесса, риск повышения привилегий</td><td>Повышайте серьёзность в контекстах CLI, cron, SUID, sudo и worker.</td><td>Удалите пути выполнения интерпретатора с привилегиями.</td></tr><tr><td><code>`backticks`</code></td><td>Выполнение команд</td><td>Критическая</td><td>Скрытое выполнение shell</td><td>Обнаруживайте интерполяцию переменных внутри выражений backticks.</td><td>Замените явными безопасными API.</td></tr><tr><td><code>eval()</code></td><td>Выполнение кода</td><td>Критическая</td><td>Произвольное выполнение PHP</td><td>Помечайте любое использование; повышайте серьёзность, когда оцениваемая строка динамическая.</td><td>Используйте замыкания, парсеры, фиксированные карты диспетчеризации или безопасные шаблоны.</td></tr><tr><td><code>assert()</code></td><td>Выполнение кода</td><td>Высокая</td><td>Риск выполнения унаследованного кода</td><td>Помечайте строковые assert в старых кодовых базах PHP.</td><td>Используйте только булевы проверки; удалите динамические строки.</td></tr><tr><td><code>create_function()</code></td><td>Выполнение кода</td><td>Высокая</td><td>Устаревший оцениваемый код</td><td>Обнаруживайте старые плагины и код совместимости для PHP 5/7.</td><td>Замените анонимными функциями.</td></tr><tr><td><code>preg_replace()</code> на <code>/e</code></td><td>Выполнение кода</td><td>Высокая</td><td>Устаревшая оцениваемая замена</td><td>Помечайте устаревшую оценку замены в регулярных выражениях.</td><td>Используйте <code>preg_replace_callback()</code>.</td></tr><tr><td><code>mb_ereg_replace()</code> на <code>e</code></td><td>Выполнение кода</td><td>Высокая</td><td>Риск оцениваемой замены</td><td>Проверьте динамические шаблоны и значения замены.</td><td>Используйте логику, безопасную для callback, без оценки.</td></tr><tr><td><code>include</code></td><td>Подключение файлов</td><td>Критическая</td><td>LFI/RFI к выполнению кода</td><td>Помечайте пути, управляемые пользователем, обёртки и приёмы с расширениями.</td><td>Сопоставляйте выбор пользователя с фиксированными файлами.</td></tr><tr><td><code>include_once</code></td><td>Подключение файлов</td><td>Критическая</td><td>LFI/RFI к выполнению кода</td><td>Проверьте динамические пути include и побочные эффекты автозагрузки.</td><td>Используйте фиксированные карты include и канонические пути.</td></tr><tr><td><code>require</code></td><td>Подключение файлов</td><td>Критическая</td><td>Выполнение кода приложения</td><td>Повышайте серьёзность, когда путь содержит данные запроса.</td><td>Отклоняйте динамический ввод для файловой системы.</td></tr><tr><td><code>require_once</code></td><td>Подключение файлов</td><td>Критическая</td><td>Выполнение кода приложения</td><td>Проверьте загрузчики фреймворка, загрузчики плагинов и пути шаблонов.</td><td>Используйте только модули из разрешённого списка.</td></tr><tr><td><code>file_get_contents()</code></td><td>Чтение файла / сети</td><td>Высокая</td><td>LFI, SSRF, раскрытие секретов</td><td>Помечайте недоверенные пути, URL и <code>php://input</code> разбор.</td><td>Канонизируйте пути и блокируйте рискованные схемы.</td></tr><tr><td><code>readfile()</code></td><td>Чтение файла</td><td>Высокая</td><td>Прямое раскрытие файла</td><td>Обнаруживайте обход пути и общедоступные обработчики загрузок.</td><td>Подавайте файлы по ID из утверждённых каталогов.</td></tr><tr><td><code>fopen()</code></td><td>Доступ к файлам / сети</td><td>Высокая</td><td>LFI, SSRF, произвольная запись</td><td>Отслеживайте режим, источник пути и URL-обёртки.</td><td>Проверяйте схему, режим и канонический путь.</td></tr><tr><td><code>file()</code></td><td>Чтение файла</td><td>Высокая</td><td>Раскрытие файла по строкам</td><td>Помечайте имена файлов, управляемые пользователем.</td><td>Используйте фиксированные пути хранения и проверки границ.</td></tr><tr><td><code>SplFileObject</code></td><td>Доступ к файлу</td><td>Высокая</td><td>LFI, обход пути</td><td>Обнаруживайте динамические аргументы конструктора.</td><td>Применить <code>realpath()</code> проверка границ.</td></tr><tr><td><code>file_put_contents()</code></td><td>Запись файла</td><td>Критическая</td><td>Веб-шелл, перезапись, отравление конфигурации</td><td>Повышайте серьёзность, когда имя файла и содержимое недоверенные или путь общедоступен.</td><td>Генерируйте имена файлов и записывайте вне web root.</td></tr><tr><td><code>fwrite()</code></td><td>Запись файла</td><td>Высокая</td><td>Произвольное изменение файла</td><td>Отслеживайте происхождение хэндла из <code>fopen()</code>.</td><td>Ограничьте каталоги с правом записи и типы файлов.</td></tr><tr><td><code>copy()</code></td><td>Запись / перемещение файла</td><td>Высокая</td><td>Размещение или перезапись файла</td><td>Проверьте недоверенность источника и назначения.</td><td>Используйте фиксированные назначения и имена, устойчивые к коллизиям.</td></tr><tr><td><code>rename()</code></td><td>Перемещение файла</td><td>Высокая</td><td>Обход загрузки, перезапись</td><td>Помечайте пути назначения, управляемые пользователем.</td><td>Используйте сгенерированные имена хранения.</td></tr><tr><td><code>unlink()</code></td><td>Удаление файла</td><td>Высокая</td><td>Произвольное удаление файла</td><td>Обнаруживайте недоверенные пути и обход каталога.</td><td>Удаляйте по ID объекта, а не по сырому пути.</td></tr><tr><td><code>chmod()</code></td><td>Права доступа</td><td>Высокая</td><td>Ослабление привилегий</td><td>Помечайте широкие режимы, такие как <code>0777</code> и недоверенные пути.</td><td>Используйте режимы с минимальными привилегиями и фиксированные пути.</td></tr><tr><td><code>chown()</code> / <code>chgrp()</code></td><td>Владение</td><td>Высокая</td><td>Манипуляция привилегиями</td><td>Проверьте сценарии развёртывания и администрирования.</td><td>Не открывайте изменение владения для ввода приложения.</td></tr><tr><td><code>mkdir()</code></td><td>Файловая система</td><td>Средняя</td><td>Обход пути, слабые права доступа</td><td>Помечайте динамические пути и слишком разрешающие режимы.</td><td>Нормализуйте пути и задавайте строгие права доступа.</td></tr><tr><td><code>touch()</code></td><td>Файловая система</td><td>Средняя</td><td>Создание файла, злоупотребление метками времени</td><td>Повышайте серьёзность в cron или привилегированных каталогах.</td><td>Используйте фиксированные пути и проверки владения.</td></tr><tr><td><code>unserialize()</code></td><td>Десериализация</td><td>Критическая</td><td>Внедрение объектов PHP</td><td>Помечайте любое использование с данными из запроса, cookie, загрузки, БД, кэша или очереди.</td><td>Используйте JSON или ограничьте <code>allowed_classes</code>.</td></tr><tr><td><code>Phar</code> / <code>phar://</code></td><td>Десериализация</td><td>Высокая</td><td>Внедрение объектов, вызванное метаданными</td><td>Помечайте принимаемые <code>phar://</code> пути и файловые функции, затрагивающие загрузки.</td><td>Блокируйте обёртки и избегайте путей с метаданными, содержащими объекты.</td></tr><tr><td><code>__wakeup()</code></td><td>Магический метод</td><td>Высокая</td><td>Гаджет для внедрения объектов</td><td>Проверьте действия с файлами, SQL, командами и сетью.</td><td>Сделайте магические методы без побочных эффектов.</td></tr><tr><td><code>__destruct()</code></td><td>Магический метод</td><td>Высокая</td><td>Гаджет для внедрения объектов</td><td>Повышайте серьёзность, если он удаляет, пишет, подключает или выполняет.</td><td>Избегайте опасных побочных эффектов деструктора.</td></tr><tr><td><code>__toString()</code></td><td>Магический метод</td><td>Средняя</td><td>Неявное выполнение гаджета</td><td>Проверьте рендеринг шаблонов и пути логирования.</td><td>Сделайте методы преобразования чистыми.</td></tr><tr><td><code>curl_exec()</code></td><td>Сеть / SSRF</td><td>Высокая</td><td>SSRF, доступ к внутренним сервисам</td><td>Отслеживайте URL, перенаправления, заголовки, прокси и параметры протокола.</td><td>Разрешайте хосты по списку и блокируйте частные диапазоны.</td></tr><tr><td><code>fsockopen()</code></td><td>Сеть</td><td>Высокая</td><td>Прямой доступ к внутренней сети</td><td>Помечайте динамические значения хоста и порта.</td><td>Ограничьте назначения и исходящий трафик.</td></tr><tr><td><code>pfsockopen()</code></td><td>Сеть</td><td>Высокая</td><td>Постоянный доступ к внутренней сети</td><td>Проверьте долгоживущие подключения к сервисам.</td><td>Используйте фиксированные конечные точки.</td></tr><tr><td><code>stream_socket_client()</code></td><td>Сеть</td><td>Высокая</td><td>SSRF и злоупотребление протоколами</td><td>Помечайте динамические схемы, хосты и порты.</td><td>Используйте сетевые цели из разрешённого списка.</td></tr><tr><td><code>SoapClient</code></td><td>Сеть</td><td>Средняя</td><td>Запросы в стиле SSRF</td><td>Проверьте динамические значения WSDL и endpoint.</td><td>Используйте фиксированные WSDL и блокируйте перенаправления.</td></tr><tr><td><code>mysqli_query()</code></td><td>SQL</td><td>Высокая</td><td>SQL-инъекция</td><td>Помечайте SQL, собранный через конкатенацию или интерполяцию.</td><td>Используйте подготовленные выражения.</td></tr><tr><td><code>mysqli_multi_query()</code></td><td>SQL</td><td>Высокая</td><td>Составная SQL-инъекция</td><td>Повышайте серьёзность для динамических многокомандных запросов.</td><td>Избегайте multi-query API для данных, на которые может влиять пользователь.</td></tr><tr><td><code>PDO::query()</code></td><td>SQL</td><td>Высокая</td><td>SQL-инъекция</td><td>Помечайте сырые строки запросов, содержащие переменные.</td><td>Используйте <code>prepare()</code> и связанные параметры.</td></tr><tr><td><code>PDO::exec()</code></td><td>SQL</td><td>Высокая</td><td>SQL-инъекция или разрушительный SQL</td><td>Проверьте действия администратора и миграции.</td><td>Используйте параметризованные выражения.</td></tr><tr><td><code>call_user_func()</code></td><td>Динамическая диспетчеризация</td><td>Высокая</td><td>Злоупотребление callback</td><td>Помечайте недоверенные имена callback.</td><td>Используйте фиксированные карты диспетчеризации.</td></tr><tr><td><code>call_user_func_array()</code></td><td>Динамическая диспетчеризация</td><td>Высокая</td><td>Злоупотребление callback с динамическими аргументами</td><td>Отслеживайте источники callback и аргументов.</td><td>Используйте явные обработчики и типизированный ввод.</td></tr><tr><td><code>$fn()</code></td><td>Переменная функция</td><td>Высокая</td><td>Произвольная диспетчеризация функций</td><td>Помечайте имена функций из данных запроса или БД.</td><td>Сопоставляйте имена с фиксированными функциями.</td></tr><tr><td><code>$object->$method()</code></td><td>Динамический метод</td><td>Высокая</td><td>Злоупотребление диспетчеризацией методов</td><td>Помечайте имена методов из ввода.</td><td>Используйте карты методов из разрешённого списка.</td></tr><tr><td><code>ReflectionFunction</code></td><td>Рефлексия</td><td>Средняя</td><td>Динамический вызов</td><td>Проверьте отражаемые имена и вызов.</td><td>Ограничьте рефлексию внутренними инструментами.</td></tr><tr><td><code>register_shutdown_function()</code></td><td>Отложенный callback</td><td>Средняя</td><td>Скрытый путь выполнения</td><td>Помечайте динамические callback и аргументы.</td><td>Используйте явные фиксированные callback.</td></tr><tr><td><code>move_uploaded_file()</code></td><td>Загрузите</td><td>Высокая</td><td>Веб-шелл, перезапись, обход пути</td><td>Проверьте путь назначения, логику расширений, публичное хранилище и использование исходного имени файла.</td><td>Переименовывайте файлы, используйте разрешённый список расширений, храните вне web root.</td></tr><tr><td><code>getimagesize()</code></td><td>Проверка загрузки</td><td>Средняя</td><td>Слабая проверка содержимого</td><td>Помечайте, если используется как единственная проверка загрузки.</td><td>Сочетайте проверки расширения, MIME, содержимого и хранилища.</td></tr><tr><td><code>ZipArchive::extractTo()</code></td><td>Извлечение архива</td><td>Высокая</td><td>Zip Slip, произвольная запись</td><td>Проверьте имена записей архива и каталог извлечения.</td><td>Канонизируйте каждый извлечённый путь.</td></tr><tr><td><code>phpinfo()</code></td><td>Раскрытие информации</td><td>Средняя</td><td>Утечка конфигурации, путей, модулей и окружения</td><td>Помечайте, если доступно вне локальной разработки.</td><td>Удалите из production.</td></tr><tr><td><code>var_dump()</code> / <code>print_r()</code></td><td>Отладочный вывод</td><td>Низкий</td><td>Утечка данных и секретов</td><td>Повышайте серьёзность, когда используется в ответах или путях исключений.</td><td>Используйте структурированные журналы с редактированием чувствительных данных.</td></tr><tr><td><code>debug_backtrace()</code></td><td>Отладочный вывод</td><td>Средняя</td><td>Раскрытие пути и аргументов</td><td>Проверьте обработчики ошибок и отладочные маршруты.</td><td>Отключите многословный отладочный вывод в production.</td></tr></tbody></table>

## Поиск конфигурации

<table data-view="cards" data-full-width="true" data-search="true"><thead><tr><th>Директива</th><th>Серьёзность</th><th>Риск</th><th>Проверка сканера</th></tr></thead><tbody><tr><td><code>disable_functions</code></td><td>Высокая</td><td>Опасные функции выполнения остаются доступными.</td><td>Сообщайте об отсутствии или неполном ужесточении, особенно когда существуют command sink.</td></tr><tr><td><code>open_basedir</code></td><td>Средняя</td><td>PHP может получать доступ к более широким путям файловой системы.</td><td>Помечайте отсутствующие, пустые или слишком широкие значения.</td></tr><tr><td><code>allow_url_fopen</code></td><td>Средняя</td><td>API работы с файлами могут получать URL.</td><td>Повышайте серьёзность для чтения файлов по URL и функций, подверженных SSRF.</td></tr><tr><td><code>allow_url_include</code></td><td>Критическая</td><td>Динамические include могут загружать удалённые ресурсы.</td><td>Критично, если включено вместе с динамическими путями include.</td></tr><tr><td><code>display_errors</code></td><td>Средняя</td><td>Могут утечь stack trace, пути и секреты.</td><td>Помечайте включённые конфигурации production.</td></tr><tr><td><code>expose_php</code></td><td>Низкий</td><td>Раскрытие версии PHP.</td><td>Рекомендуется отключить в production.</td></tr><tr><td><code>file_uploads</code></td><td>Информация</td><td>Существует поверхность атаки через загрузку файлов.</td><td>Сочетайте с проверками пути загрузки, размера, расширения и содержимого.</td></tr><tr><td><code>upload_max_filesize</code></td><td>Средняя</td><td>Слишком большие загрузки и злоупотребление хранилищем.</td><td>Помечайте значения больше, чем требуется приложению.</td></tr><tr><td><code>session.cookie_httponly</code></td><td>Средняя</td><td>Кража session cookie через клиентский скрипт становится проще.</td><td>Рекомендуется включить.</td></tr><tr><td><code>session.cookie_secure</code></td><td>Средняя</td><td>Cookies могут отправляться по HTTP.</td><td>Рекомендуется включать на сайтах HTTPS.</td></tr><tr><td><code>session.cookie_samesite</code></td><td>Низкий</td><td>Может возрасти риск CSRF.</td><td>Рекомендуется явно <code>Нестрогий</code> или <code>Строгий</code>.</td></tr></tbody></table>

## Входные данные от источника к приёмнику

| Источник           | Примеры                                                           |
| ------------------ | ----------------------------------------------------------------- |
| Запрос             | `$_GET`, `$_POST`, `$_REQUEST`                                    |
| Cookies / сеансы   | `$_COOKIE`, значения сеанса                                       |
| Загрузки           | `$_FILES`, исходные имена файлов, временные пути                  |
| Заголовки          | `$_SERVER['HTTP_*']`, `getallheaders()`                           |
| Сырое тело запроса | `php://input`, декодированный JSON/XML                            |
| CLI / воркеры      | `$argv`, `STDIN`, переменные окружения                            |
| Хранимые данные    | Строки базы данных, записи кэша, очереди, сериализованные столбцы |
| Локальные файлы    | Файлы конфигурации, импорт CSV, временные файлы                   |

## Идентификаторы правил

| Идентификатор правила | Серьёзность | Значение                                                                            |
| --------------------- | ----------- | ----------------------------------------------------------------------------------- |
| `PHP-CMD-001`         | Критическая | Недоверенные входные данные достигают выполнения команд.                            |
| `PHP-EVAL-001`        | Критическая | Недоверенные входные данные достигают выполнения PHP-кода.                          |
| `PHP-INCL-001`        | Критическая | Недоверенные входные данные управляют путями include/require.                       |
| `PHP-DESER-001`       | Критическая | Недоверенные входные данные достигают `unserialize()`.                              |
| `PHP-WRITE-001`       | Критическая | Запись файла, управляемая пользователем, попадает в исполняемый или публичный путь. |
| `PHP-UPLOAD-001`      | Высокая     | Проверка или хранение загрузки может позволить исполняемые файлы.                   |
| `PHP-SSRF-001`        | Высокая     | Недоверенный URL достигает HTTP-, stream-, socket- или cURL-источников.             |
| `PHP-SQL-001`         | Высокая     | Недоверенные входные данные достигают необработанного SQL.                          |
| `PHP-PATH-001`        | Высокая     | Недоверенный путь достигает логики чтения/записи/удаления/перемещения файлов.       |
| `PHP-CALLBACK-001`    | Высокая     | Недоверенное имя функции или метода достигает динамической диспетчеризации.         |
| `PHP-CONFIG-001`      | Высокая     | Опасная конфигурация PHP повышает возможность эксплуатации.                         |
| `PHP-PRIV-001`        | Критическая | Выполнение PHP происходит в контексте SUID, sudo, cron или с привилегиями.          |

## Быстрая первичная оценка

| Вопрос                                                                                | Повышение серьёзности                 |
| ------------------------------------------------------------------------------------- | ------------------------------------- |
| Могут ли данные запроса достигать функции?                                            | Повысить до High или Critical.        |
| Выполняет ли функция команды, PHP-код, include или десериализацию?                    | Критично.                             |
| Работает ли она с файлами в web root?                                                 | High или Critical.                    |
| Принимает ли она URL, обёртки, хосты или порты?                                       | High.                                 |
| Запускается ли она из cron, sudo, SUID, воркеров или хуков развёртывания?             | Критично.                             |
| Основана ли проверка только на блок-листах, только на расширениях или только на MIME? | Повысить на один уровень.             |
| Выбирается ли значение из строгого allow-list?                                        | Понизить уверенность или серьёзность. |

## Признаки повышения привилегий

| Признак                                                               | Риск                                                                  |
| --------------------------------------------------------------------- | --------------------------------------------------------------------- |
| PHP-бинарник с SUID                                                   | PHP может выполняться с повышенными привилегиями владельца файла.     |
| Правило sudo разрешает PHP                                            | Пользователь может запускать PHP от имени другого пользователя.       |
| Cron, принадлежащий root, запускает записываемый PHP                  | Записываемый скрипт может стать привилегированным выполнением.        |
| Записываемый web root                                                 | Ошибка записи файла или загрузки может привести к выполнению кода.    |
| Секреты, доступные для чтения всем                                    | Учётные данные приложения могут позволить боковое перемещение.        |
| Скрипты Composer выполняются от имени привилегированного пользователя | Выполнение зависимостей или скриптов может повлиять на развёртывание. |

## Шаблон отчёта

```json
{
  "id": "PHP-CMD-001",
  "severity": "критический",
  "function": "shell_exec",
  "file": "app/Controllers/ReportController.php",
  "line": 84,
  "source": "$_POST['format']",
  "impact": "Удалённое выполнение команд от имени пользователя веб-сервера",
  "fix": "Замените выполнение shell на нативную PHP-библиотеку или строгие аргументы из allow-list."
}
```

## Контрольный список сканера

* Анализировать `.php`, `.inc`, `.phtml`, `.module`, `.theme`, маршруты фреймворка, контроллеры, задания и CLI-скрипты.
* Отслеживайте входные данные из запроса, cookie, загрузок, заголовков, сырого тела, CLI, окружения, базы данных, кэша, очереди и файлов.
* Обнаруживайте приёмники выполнения команд, выполнения кода, include, файловые, сетевые, SQL, десериализации, загрузки, callback, отладки и конфигурации.
* Оценивайте находки по достижимости, санитизации, версии PHP, конфигурации, web root, правам доступа и контексту выполнения.
* Экспортируйте имя функции, категорию, серьёзность, источник, приёмник, файл, строку, влияние, уверенность и исправление.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/ru/hacking-tools/web/php-security-scanner.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
