Правильные права доступа к файлу PHP, который не разрешает выполнение общедоступными

У меня есть файл php, который записывает определенные значения в мою базу данных. Я выполняю этот файл каждые 20 секунд с помощью CRON, но я не хочу, чтобы кто-то мог перейти к местоположению этого файла и выполнить его из Интернета. Я установил права доступа к файлу 644, но я все еще могу перейти на сайт website.com/phpfile.php и записать данные в базу данных. Как я могу предотвратить выполнение сценария публикой?


person Darkstar    schedule 27.12.2015    source источник
comment
Эээ, выложить вне webroot?   -  person frz3993    schedule 28.12.2015
comment
Да, думаю, я могу это сделать, мне просто интересно, почему 644 не работает.   -  person Darkstar    schedule 28.12.2015


Ответы (1)


В типичной настройке, используемой в наши дни, сценарий php не требует, чтобы бит разрешения выполнения выполнялся сервером http. Это потому, что запрос не запускает сценарий, это процесс, основанный на операционной системе. Вместо этого http-сервер только читает файл и передает контент в механизм php, загруженный как модуль. Таким образом, единственное необходимое разрешение - это то, что процесс http-сервера может читать сценарий.

Все было бы иначе, если бы вы использовали php с помощью CGI вместо модуля http-сервера. Но это серьезно сказывается на производительности именно потому, что для каждого запроса нужно разветвлять новый процесс.

person arkascha    schedule 27.12.2015