1

私はcurl関数がとても苦手です。ネットワーク化されたサイト間でファイルを更新するために毎時ルーチンを実行するスクリプトがあります。

次の 3 つの懸念があります。

  1. 効率
  2. 正確さ
  3. 安全

ある程度テストした後、404 を取得して csv ファイルとして保存し、その後の検証でそれらを削除します。ただし、悪意のある目的で .csv に偽装されている場合でも、csv 以外のファイルは完全に拒否する方がよいでしょう。

その上で、それらを特別なフォルダーに保存します。それらに実行可能な (悪意のある) コードを隠す方法はありますか? 安全を確保するために、このディレクトリを実行不可のままにしておくことにしました。

コードは次のとおりです。

//check file exists first: 
if ( !$fp = curl_init( $url ) )
    return 'Symbiocard not found at this address ('.$url.'). Please upload manually.';

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_NOBODY, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_BINARYTRANSFER, 1 );
$raw = curl_exec( $ch );
curl_close( $ch );
if ( file_exists( $newfile ) ) {
    unlink( $newfile );
} //file_exists( $newfile )
$fp = fopen( $newfile, 'x' );
fwrite( $fp, $raw );
fclose( $fp );

$required_fields = array(
     'symbiostock_site',
    'admin_email',
    'symbiostock_version' 
);

CURLレベルでフィルタリングしたいという理由だけで、検証/ファイル書き込みコードを通過しませんでした。

質問: 正規の csv ファイル (想定される .csv の場所にある 404 またはその他のドキュメントではなく) とのみ通信するように curl を制限するにはどうすればよいですか。

4

1 に答える 1