Безопасность через командную строку: это хорошая идея?(PHP) - PullRequest
2 голосов
/ 28 ноября 2010

Можно ли дать полную авторизацию любому запросу, поступающему из командной строки?

Моя идея состояла в том, чтобы сделать эту проверку:

if(isset($_SERVER['argc']) AND $_SERVER['argc']>=2) {
    // it must be the admin, give him full authorization, no further checks needed.
} else {
    // normal web request, authentication needed.
}

Имеет ли это смысл?

Что еще я должен знать, прежде чем начать использовать командную строку для выполнения моих php-скриптов?

Ответы [ 2 ]

1 голос
/ 28 ноября 2010

Безопасно только если на сервере есть только один пользователь. В противном случае вам нужно либо:

  • Проверьте правильность идентификатора пользователя в скрипте
  • Сделать сценарий исполняемым только для этого пользователя

(Предполагается, что сервер Linux)

1 голос
/ 28 ноября 2010

Командная строка - не очень хорошее место для управления вашим веб-приложением: ваше приложение отображает вывод HTML, что не очень хорошо для человека, смотрящего на консоль (не говоря уже о JavaScript, который не будет работать и т. Д.)).

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

Если вы все равно хотите встроить специальный бэкдор в ваше приложение, я бы предложил что-то вроде этого (основанное на Интернете).:

define('ADMIN_BACKDOOR', true); // comment out to disable
$is_admin = defined('ADMIN_BACKDOOR') && $_SERVER['REMOTE_ADDR'] == '127.0.0.1';

Это IMO почти невозможно использовать, и оно позволяет вам получить доступ администратора из естественной среды (браузера).

...