2012-01-25 29 views
0

私はajaxを使ってPHPスクリプト(例えばcost.php)から価値を得ています。直接アクセスしてその価値を得るのは簡単だろう。私もphpスクリプトは直接アクセスを禁止する

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    //code here 
    die('Invalid Request!'); 
} 

を防ぐために、安全な方法このですから、私ならばcronジョブが動作しない...私は、次を使用している場合はそうはcronジョブが動作しないのと同じスクリプト(cost.php)にcronジョブを実行しています上記のコードを使用して、エンドユーザーからの価値を確保するために何を使用することができますか?ありがとう。

cronジョブの個別の実行するためには
+0

は、なぜあなたは、エンドユーザーから値を隠すでしょうか? phpスクリプトでも定義されているあなたのcronjobから定義されたパスワードを使用してください。値に対するajax呼び出しに対しては、SQLの攻撃防御以外のセキュリティは使用しないでください。 –

+0

スクリプトがAjaxリクエストに値を戻している場合は、ユーザーが見るためのデータが既にそこにあることになります。 – xbonez

+0

私たちはこのスクリプトから値を生成していますが、これは廃止されたくありません。 – seoppc

答えて

0
if (!eregi('cost.php',basename($_SERVER["REQUEST_URI"]))) { die('access denied'); } 
+0

このコードはcronjobでも使えますか? – seoppc

+3

'eregi()'関数は[非推奨](http://uk3.php.net/eregi)です。 – richsage

+1

@richsage:そうだね、言及いただきありがとうございます...ちょうど古いプロジェクトの行をコピーしました。ですから、代わりにpreg_matchを使用してください。 – djot

4

、あなたがphp_sapi_name

に(サーバー側の変数に依存より信頼できる)簡単な使用法を使用することを検討することができます: -

if (php_sapi_name() == "cli") // via cronjob or via cli 
{ 
    die("invalid request"); 
} 

がPS:定数PHP_SAPIは同じ値を持ちますので、次のように書き直すことができます: -

if (PHP_SAPI == "cli") 
{ 
    die("invalid request"); 
} 
0

cronjobの秘密パスワード

if (isset($_REQUEST['cronpw']) && $_REQUEST['cronpw'] == 'supersecret') 
{ 
    // this is the cronjob 
} 
else 
{ 
    // this not 
} 
0

ダイレクトスクリプトアクセスを停止するには、これをコードの先頭に追加します。

if (!defined('BASEPATH')) exit('No direct script access allowed'); 

あなたはAJAXリクエストを許可したい場合は、

if (!defined('BASEPATH') && 
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') 
exit('You are not allowed here...'); 
関連する問題