I am currently working on a new project which involves using CRON jobs.
The CRON script basically runs an SQL query, generates the data into a file, and send that file to another server via FTP.
The script is on a live website (www.website.com/sendOrders.php)
I don't see any security issues or threats, and I think it is highly unlikely that anyone will find the PHP script on the server. However I don't want the script to be executed by any outsiders.
Is there a way I can protect this script?
Thanks Peter
Why not just move the script outside the Web-root of the server and execute it from CLI? This was there is no chance of anyone else executing it.
If you must have it in the webroot (and there should be no reason for it), just make sure that the client for the request is the server you are running it on, and it should be more than enough.
Here is my solution:
In
cron.php
check if some specific header is sentcron.php
functions.php
How to call cron with curl:
No IP restriction. No GET/POST. If dev mode, skips restriction. You can put script wherever you want.
You could move your "secret files" into a subfolder, then create a .htaccess file in there that prevents access to that file from everyone, except the server that is running the Cronjob.
Example:
If you have shell access you might also put the scripts outside of the accessible folder and run directly via command line or cronjob like this:
php script.php
.This seems rather silly. Why have cron on
machine A
invoke a script via HTTP onmachine B
, when you could simply have machine B's native scheduling system (whatever OS it happens to be) do the job itself?Then you could have the script tucked away somewhere that's not accessible via HTTP and render your security problem completley moot.
If the files are in a folder which shouldn't be locked down completely, wrap those lines in
<Files whatever.php>...</Files>