全部产品
Search
文档中心

Object Storage Service:Perlindungan hotlink menggunakan OSS SDK untuk PHP 2.0

更新时间:Oct 23, 2025

Gunakan OSS SDK untuk PHP 2.0 guna mengonfigurasi kebijakan kontrol akses berdasarkan header permintaan Referer. Anda dapat menentukan daftar putih Referer, daftar hitam Referer, serta memilih apakah mengizinkan permintaan dengan header Referer kosong. Dengan menerapkan aturan ini, Anda dapat secara efektif mencegah hotlinking tidak sah terhadap sumber daya dan mengurangi biaya transfer data yang tidak diperlukan.

Catatan penggunaan

  • Sebelum mengonfigurasi perlindungan hotlink, pastikan Anda memahami cara kerja fitur ini. Untuk informasi lebih lanjut, lihat Perlindungan Hotlink.

  • Kode contoh dalam topik ini menggunakan wilayah China (Hangzhou) (cn-hangzhou) sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk daftar lengkap wilayah dan titik akhir yang didukung, lihat Wilayah dan Titik Akhir OSS.

  • Mengatur atau menghapus konfigurasi perlindungan hotlink memerlukan izin oss:PutBucketReferer, sedangkan mendapatkan konfigurasi perlindungan hotlink memerlukan izin oss:GetBucketReferer. Untuk informasi lebih lanjut, lihat Memberikan Izin Kustom kepada Pengguna RAM.

Kode contoh

Atur perlindungan hotlink

Kode ini menunjukkan cara mengonfigurasi perlindungan hotlink:

<?php

// Impor file autoloader untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // Wilayah diperlukan. Ini adalah wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // Titik akhir bersifat opsional. Ini adalah nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts); 

// Periksa parameter yang diperlukan namun hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa parameter yang diperlukan hilang.
        exit(1); 
    }
}

// Dapatkan nilai argumen.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Gunakan variabel lingkungan untuk memuat informasi kredensial, termasuk AccessKeyId dan AccessKeySecret.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Atur penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Atur wilayah.
$cfg->setRegion($region);

// Jika titik akhir disediakan, atur titik akhir.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Buat objek permintaan untuk mengatur konfigurasi perlindungan hotlink untuk bucket. Konfigurasikan allowEmptyReferer ke false dan atur daftar Referer.
$request = new Oss\Models\PutBucketRefererRequest(bucket: $bucket,
    refererConfiguration: new Oss\Models\RefererConfiguration(
        allowEmptyReferer: false,
        refererList: new Oss\Models\RefererList([""]),
    )
);

// Panggil metode putBucketReferer untuk mengatur konfigurasi perlindungan hotlink untuk bucket.
$result = $client->putBucketReferer($request);

// Cetak hasilnya.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId // Pengenal unik permintaan.
);

Dapatkan pengaturan perlindungan hotlink

Kode ini menunjukkan cara mengambil konfigurasi perlindungan hotlink:

<?php

// Impor file autoloader untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // Wilayah diperlukan. Ini adalah wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // Titik akhir bersifat opsional. Ini adalah nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa parameter yang diperlukan hilang.
        exit(1); 
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Gunakan variabel lingkungan untuk memuat informasi kredensial, termasuk AccessKeyId dan AccessKeySecret.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Atur penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Atur wilayah.
$cfg->setRegion($region);

// Jika titik akhir disediakan, atur titik akhir.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Buat objek permintaan untuk mendapatkan konfigurasi perlindungan hotlink bucket.
$request = new Oss\Models\GetBucketRefererRequest(bucket: $bucket);

// Panggil metode getBucketReferer untuk mendapatkan konfigurasi perlindungan hotlink bucket.
$result = $client->getBucketReferer($request);

// Cetak hasilnya.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL . // Pengenal unik permintaan.
    'referer config:' . var_export($result->refererConfiguration, true) // Konfigurasi perlindungan hotlink.
);

Referensi

  • Untuk informasi lebih lanjut tentang operasi API yang digunakan untuk mengatur perlindungan hotlink, lihat PutBucketReferer.

  • Untuk informasi lebih lanjut tentang operasi API yang digunakan untuk mendapatkan konfigurasi perlindungan hotlink, lihat GetBucketReferer.