Обеспечение того, чтобы пользовательский код ввода не повредил сервер при выполнении - PullRequest
1 голос
/ 19 октября 2010

Я работаю над веб-приложением, которое позволяет пользователю вводить некоторый код, и он будет скомпилирован и выполнен, и они смогут увидеть результат.Я кодирую приложение на PHP, и мне нужен способ убедиться, что, если пользователь вводит какой-то вредоносный код (это пример PHP), он не может выполнить и уничтожить мой сервер.Пример:

<?php
shell_exec('rm -rf /');
?>

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

1 Ответ

4 голосов
/ 19 октября 2010

Не делайте этого, если вы не специалист по безопасности. Существует бесчисленное множество способов уничтожить вещи, которые вы не можете предвидеть.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...