2012-03-27 5 views
2

私はそこに同様の記事があることを認識していますが、安心してください、これは重複した投稿ではありません!cronタスクのためだけにPHPファイルを保護するには?

私はgodaddyサーバー上にサイトを持っています。私は私のサーバーのルートの外側にアクセスすることはできません(すべては公開されています)。

私は、CRON上で動作する必要があるdelete.phpファイルを持っています。これはCRONによってのみ実行されます。何らかの理由で誰かがファイルを手動で実行してはなりません。

私はできるだけファイルを保護しようとしていますので、これをセキュリティ上の実験にしましょう。

これまでのところ、私は可能な限り安全なファイルを作ることを目標に、次います

<?php 
$isCLI = (php_sapi_name() == 'cli'); 

if (!$isCLI) { 
    die("cannot run!"); 
} else { 
    if(!isset($_SERVER['REQUEST_METHOD'])){ 
     // Do the task here 
    }else{ 
     die("cannot run!"); 
    } 
} 
?> 

をので、これは論理的に安全ですか?どのようにしてそれをより安全にすることができますか? godaddyは、ファイルを実行する日付/時刻を設定することしかできません。

+2

なぜあなたのcronスクリプトはWebサーバーのドキュメントルートにありますか? – ThiefMaster

+2

ちょうどそれをウェブルートの外側に置いてください。 –

+2

人を読んでください。私は私の根の外側にアクセスできない。私のディレクトリ全体は公開されています。ここでも、godaddyはルートの外側へのアクセスを許可しません。 – Sweepster

答えて

5

cli SAPIを確認するだけで十分です。 (mod_phpでもfastcgiでもcgiでも)apache経由で実行するユーザは、PHPをCLI sapiから呼び出すことはありません。あなたは実際のコードのまわりで醜いelse {}を取り除くことができます。 の末尾にexit;があり、ブロックの場合は、以外のブロックブロックは必要ありません。

しかし、そのような種類のスクリプトをドキュメントルートに置くことは、はるかに簡単です。それが不可能な場合は、また.htaccessを使用して検討してください。

Order deny,allow 
Deny from all 

ファイルを完全にロックダウンするべきではありませんフォルダ内にある場合は、外にそれらのファイルを配置し、もちろん<Files whatever.php>...</Files>

+0

私は、スクリプトをrootに入れない方がきれいだと同意しますが、私が言ったように、それはgodaddyと一緒には不可能です。 – Sweepster

+0

@Jonathan:去年GDから私のサイトを移したのはそれほどの理由です:( –

1

でこれらの行を折り返しますWebrootはそれを行うための好ましい方法でしょう。 一方、すべてのアクセスに対してDeny allルールを定義する.htaccessを作成することができます。このようにしてDeny allはサーバーへの直接アクセスを防ぎますが、PHP CLIはそれにもアクセスできます。

+0

私のhtaccessファイルでどのようにそのような行が表示されるか詳しく説明できますか? – Sweepster

+1

別々のフォルダにある場合: 'Order deny、allow 'と' 'すべてを拒否する 'の2つの行を' にラップしてください... ' – ThiefMaster

+0

CHMODは644へのdelete.phpファイルを有効にしますか? – Sweepster

関連する問題