Новини високих технологій
» » Функція PHP shell_exec: виконання зовнішньої команди

Функція PHP shell_exec: виконання зовнішньої команди

28-06-2018, 15:27
249
Практично всі мови програмування включають в себе можливість запуску зовнішнього коду або команд оболонки операційної системи. Наявність такої можливості вважається правилом пристойності і повної функціональності мови. Використання такої можливості вважається загрозою безпеки і відсутністю повної функціональності програми, написаної мовою. PHP надає програмісту можливість запустити зовнішню команду і забезпечує передачу результатів запуску в змінну у вигляді тексту.

Операційна середовище і зовнішня команда

Вибір не особливо великий, але різноманітність варіантів може поставити в глухий кут. Якщо сервер, на якому запущений PHP, знаходиться під управлінням Windows, то особливих непередбачених ситуацій не буде. У сімействі линуксоидов можливі різні невизначеності.


У будь-якому випадку запуск зовнішнього коду - це загроза. Тому застосування можливості PHP shell_exec() - це продумане і зважене рішення. Зазвичай метою застосування такої можливості є періодичний запуск зовнішнього додатку, який збирає інформацію і переміщує її в папки веб-ресурсу. Часто використовується запуск зовнішнього коду для передачі статистики роботи сайту, фінансового звіту та ін. Варіантів, коли управління з веб-ресурсу вимагає «зовнішнього сприяння», дуже багато, але переважно, коли будь-який контакт з «зовнішнім середовищем» виповнюється «власними силами» без використання PHP shell_exec().

Синтаксис і логіка використання

Виклик зовнішнього коду виконується шляхом присвоювання результату виклику функції shell_exec() деякої змінної.
В даному випадку apache & PHP встановлені на робочому комп'ютері з Windows 10. Відразу виявилися проблеми з кирилицею і очевидно невідповідність потоків виводу команди операційній системі звичайного потоку, сприйманого браузером. Для коректного відображення виводу потрібно аналізувати роботу shell_exec(). В PHP приклади тестування повинні бути максимально жорсткими для досягнення безпечного використання.
Будь-яка операційна система допускає формування командного рядка, коли в одному рядку записується відразу кілька команд. Функція shell_exec допускає використання такої командного рядка. У всіх випадках застосування функції слід передбачити набір тестових прикладів, на якому перевірити безпеку використання звернення до операційної системи.
Цікаво по темі
Deus ex: системні вимоги і рекомендації
Deus ex: системні вимоги і рекомендації
Системні вимоги для Bulletstorm цікавили користувачів відразу після анонса гри. Адже кожен хотів зіграти в настільки амбітний шутер від першої особи.
Зміст і використання JavaScript void
Зміст і використання JavaScript void
Відсутність значення і значення undefined - раритет найдавніших часів інформаційних технологій, але навіть в сучасному світі у них є місце і
Запуск cmd від імені адміністратора: кілька найпростіших способів
Запуск cmd від імені адміністратора: кілька найпростіших способів
Командний рядок (cmd), як відомо, є дуже потужним інструментом, який дозволяє не тільки використовувати деякі недокументовані можливості операційної
PHP sprintf: форматування та обробка рядків
PHP sprintf: форматування та обробка рядків
Функція PHP sprintf дозволяє оформити рядок даних для візуального відображення або подальшої обробки, перетворити число в шістнадцяткову, вісімкову