2010-12-08 3 views
6

Что лучший способ гарантировать, что только CRON выполняет PHP скрипты, а не кто-то, кто наткнулся на РНР скриптов ..PHP и хрон: вопросы безопасности

Я думал Пароль Variable .... но это законная команда CRON? :

/usr/local/bin/php -f /home/mysite/public_html/dir/script?password=12345 

Таким образом, люди не могут быть в состоянии выполнить те же команды, при посещении PHP скрипт через HTTP (если они не знают пароля)

Спасибо.

ответ

13

Вы должны держать этот файл вне public_html

/usr/local/bin/php -f /home/mysite/script 
// is secure from public access 
+2

очень хорошо спасибо. – Moe 2010-12-08 12:51:07

+1

элегантное решение .. +1 – 2012-09-26 09:34:46

0

Не помещайте скрипт в свой каталог public_html (или в любом месте под вашим корнем), если вам нужно выполнить его только из cron. Это действительно настолько просто.

0

Вы можете отправить Params в PHP файл через командную строку. Просто не так, как вы думаете.

http://www.php.net/manual/en/reserved.variables.argc.php

Однако, вы также хотите, чтобы держать это из публичной папки HTML, как другие говорят. Поэтому вы НЕ МОЖЕТЕ заниматься серфингом. PHP, запускаемый из командной строки, не обязательно должен находиться в какой-либо папке просмотра веб-сервера.

0

Или вы можете блокировать выполнение по IP не делать что-то вроде этого:

($ _SERVER [ 'REMOTE_ADDR'] == "127.0.0.1") или умереть ('NO ACCESS');

0

Имея пароль может работать, но:

  • Дать пароль в кронтаб это плохая идея, потому что другие местные пользователи могли бы прочитать его
  • Ваш синтаксис не будет работать (это было попробуйте запустить сценарий «script? password = 12345». Параметры не могут быть названы в сценарии оболочки, поэтому вам нужно будет запустить «script.php 12345»

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

1

Предположит, если у не хочет, чтобы кто-нибудь запустить файл через HTTP затем установите хроны с помощью команды PHP, как вы делаете, и добавьте htacess в CRON папки, чтобы блокировать запрос HTTP в папку путем добавления

отказать от всех htacess

Предположим, если и хотят, папка хрон быть защищен паролем, то это может быть сделано, как указано в адресе

http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/

Смежные вопросы