PHPでfile_get_contentsを使用する場合のセッション認証

マルコ

私のプロジェクトでのダウンロードは、PHPダウンロードスクリプトとセッション認証によって保護されています。

TCPDFの生成では、file_get_contentsと以下のスクリプトを使用して、画像を取得し、PDFを生成します。

stream_context_createはヘッダーPHPSESSIDを送信しますが、認証はまだありません。

pdfexport.php:

    $opts = array( 'http'=>array( 'method'=>"GET",
                  'header'=>"Accept-language: de\r\n" .
                  "Cookie: ".session_name()."=".session_id()."\r\n" ) );
    $context = stream_context_create($opts);
    session_write_close();  

foreach($data['we_files'] as $we_file){ 

    $getimage1 = file_get_contents( URLROOT . "/file.php?path=" .$we_file->image, false, $context);
    $image1_name = tempnam("/tmp", $we_file->image);
    file_put_contents($image1_name, $getimage1);
    $image1_image = new Imagick($image1_name);
    $image1_image->setImageCompression(imagick::COMPRESSION_JPEG);
    $image1_image->setImageCompressionQuality(100);
    $image1_image->thumbnailImage(500, 0);
    $image1 = '@'.base64_encode($image1_image);

echo $image1;
} 

file.php

$path = $_GET["path"];
$search = 'uploads' ;
$pathnew = str_replace($search, '', $path) ;

header('X-Accel-Redirect: /uploads/' . $pathnew);
header('Content-Type:');

Imagickエラー:

Fatal error: Uncaught ImagickException: no decode delegate for this image format `' @ error/constitute.c/ReadImage/509

デバッグ:

Warning: file_get_contents(https://domain.de/file.php?path=uploads/481/8979fc24e116c4577a44424a8814c79b0d5c73d9-19-03-2019-08-28-11-SA-150.jpg): failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in /var/www/clients/...

// DIE(print_r($opts));
Array
(
    [http] => Array
        (
            [method] => GET
            [header] => Accept-language: de
            Cookie: PHPSESSID=5krl856uibhugaf6p6n6hluufq

        )

)
1

//DIE(print_r($_COOKIE));
    Array(
     [PHPSESSID] => 5krl856uibhugaf6p6n6hluufq
    )
    1
ジョニ

あなたは本質的にユーザーセッションをスプーフィングしようとしています:あなたが実際に(潜在的に悪意のある)第三者であるときにあなたがユーザーであるふりをするアクションを実行します。セッションが安全に設定されている場合、それは機能しません。

代わりに、コードでユーザーのアクセス許可を確認し、ファイルシステムを介して画像を読み取る必要があります。

別の方法は、サービスがバックエンドに対して自分自身を認証し、「このユーザーが私にこれを行うことを許可した」という情報を渡す、より複雑なシステムを作成することです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

トークンベースの認証を使用する場合でもセッションは必要ですか

分類Dev

基本認証とSSLでfile_get_contentsを使用する

分類Dev

PHPでfile_get_contentsを使用してCSRFトークンの検証を破ることは可能ですか?

分類Dev

RedisセッションでSpringBoot認証を使用する方法

分類Dev

RedisセッションでSpringBoot認証を使用する方法

分類Dev

RedisセッションでSpringBoot認証を使用する方法

分類Dev

配列でfile_get_contentsを使用するphp

分類Dev

セッションを使用する場合とテンソルフローでセッションを使用する場合の違いは何ですか

分類Dev

apacheを使用する場合のセッションNull

分類Dev

POST本文が最大16000文字を超える場合、file_get_contents( "php:// input")は空です。

分類Dev

可変ロケーションを使用したfile_get_contents()のセキュリティの脆弱性

分類Dev

file_get_contents()を使用した場合のエラー

分類Dev

Laravel認証/セッションをPHPと共有する

分類Dev

PHPでfile_get_contentsがfalseを返した理由を確認する方法

分類Dev

Windows認証を使用してASP.NETMVC 5のセッションにユーザー情報をロードできる場所はどこですか?

分類Dev

file_get_contentsを使用してphpキャッシュを作成します

分類Dev

セッション認証を使用して、TastyPieでcurlを介して認証する

分類Dev

Laravelで認証後にセッションを配置する方法

分類Dev

Laravelでセッションと認証を維持する

分類Dev

HTTP認証とPHPセッションを組み合わせる?

分類Dev

Laravelにセッション認証のみを配置する方法

分類Dev

SSH pubkey認証は、別のセッションがすでに開いている場合にのみ機能します

分類Dev

SSH pubkey認証は、別のセッションがすでに開いている場合にのみ機能します

分類Dev

J2EEセッションを使用する場合、ColdFusionセッションは必要ですか?

分類Dev

PHP:file_get_contentsを使用してAPIにアクセスする-空の応答

分類Dev

Web ページのコンテンツを Java の文字列で取得する (php の file_get_contents() と同様)

分類Dev

file_get_contentsを使用してPHPでデータをPOSTする方法は?

分類Dev

php file_get_contents()が画像の読み込みでスタックする

分類Dev

PHP:クラス__constructorでfile_get_contents()を使用するのは悪い習慣ですか?

Related 関連記事

  1. 1

    トークンベースの認証を使用する場合でもセッションは必要ですか

  2. 2

    基本認証とSSLでfile_get_contentsを使用する

  3. 3

    PHPでfile_get_contentsを使用してCSRFトークンの検証を破ることは可能ですか?

  4. 4

    RedisセッションでSpringBoot認証を使用する方法

  5. 5

    RedisセッションでSpringBoot認証を使用する方法

  6. 6

    RedisセッションでSpringBoot認証を使用する方法

  7. 7

    配列でfile_get_contentsを使用するphp

  8. 8

    セッションを使用する場合とテンソルフローでセッションを使用する場合の違いは何ですか

  9. 9

    apacheを使用する場合のセッションNull

  10. 10

    POST本文が最大16000文字を超える場合、file_get_contents( "php:// input")は空です。

  11. 11

    可変ロケーションを使用したfile_get_contents()のセキュリティの脆弱性

  12. 12

    file_get_contents()を使用した場合のエラー

  13. 13

    Laravel認証/セッションをPHPと共有する

  14. 14

    PHPでfile_get_contentsがfalseを返した理由を確認する方法

  15. 15

    Windows認証を使用してASP.NETMVC 5のセッションにユーザー情報をロードできる場所はどこですか?

  16. 16

    file_get_contentsを使用してphpキャッシュを作成します

  17. 17

    セッション認証を使用して、TastyPieでcurlを介して認証する

  18. 18

    Laravelで認証後にセッションを配置する方法

  19. 19

    Laravelでセッションと認証を維持する

  20. 20

    HTTP認証とPHPセッションを組み合わせる?

  21. 21

    Laravelにセッション認証のみを配置する方法

  22. 22

    SSH pubkey認証は、別のセッションがすでに開いている場合にのみ機能します

  23. 23

    SSH pubkey認証は、別のセッションがすでに開いている場合にのみ機能します

  24. 24

    J2EEセッションを使用する場合、ColdFusionセッションは必要ですか?

  25. 25

    PHP:file_get_contentsを使用してAPIにアクセスする-空の応答

  26. 26

    Web ページのコンテンツを Java の文字列で取得する (php の file_get_contents() と同様)

  27. 27

    file_get_contentsを使用してPHPでデータをPOSTする方法は?

  28. 28

    php file_get_contents()が画像の読み込みでスタックする

  29. 29

    PHP:クラス__constructorでfile_get_contents()を使用するのは悪い習慣ですか?

ホットタグ

アーカイブ