Todos los productos
Search
Centro de documentos

Object Storage Service:Hotlink protection (PHP SDK V1)

Última actualización: Sep 22, 2026

El kit de desarrollo de software (SDK) de PHP de Object Storage Service (OSS) le permite configurar reglas de acceso basadas en el encabezado de solicitud Referer. Puede crear una lista blanca de Referer, una lista negra de Referer y especificar si se permiten las solicitudes con un Referer vacío. Estas reglas bloquean ciertos Referer para que no accedan a sus archivos de OSS, evitan el hotlinking desde otros sitios web y le ayudan a reducir costos de tráfico innecesarios.

Notas

  • Antes de configurar la protección contra hotlinking, asegúrese de conocer bien esta función. Para obtener más información, consulte Hotlink protection.

  • En este tema se utiliza el endpoint público de la región China (Hangzhou). Si necesita acceder a OSS desde otros servicios de Alibaba Cloud en la misma región, utilice un endpoint interno. Para conocer los detalles sobre las regiones y los endpoints compatibles, consulte Regions and endpoints.

  • Este tema muestra cómo crear una instancia de OSSClient con un endpoint de OSS. Para otras configuraciones, como usar un dominio personalizado o autenticarse con credenciales de Security Token Service (STS), consulte Create an OssClient.

  • Para establecer o borrar la configuración de protección contra hotlinking, debe contar con el permiso oss:PutBucketReferer. Para recuperar dicha configuración, necesita el permiso oss:GetBucketReferer. Para obtener más información, consulte Grant custom access policies to a RAM user.

Configurar la protección contra hotlinking

A continuación se muestra un ejemplo de código para configurar la protección contra hotlinking en un bucket:

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
use OSS\Model\RefererConfig;

// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
$provider = new EnvironmentVariableCredentialsProvider();
// The Endpoint is set to the China (Hangzhou) region. Change it as needed.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "examplebucket";

$refererConfig = new RefererConfig();
// Allow requests with an empty Referer.
$refererConfig->setAllowEmptyReferer(true);
// Add domains to the Referer whitelist. The Referer parameter supports the asterisk (*) and question mark (?) wildcard characters.
$refererConfig->addReferer("http://wwww.aliyun.com");
$refererConfig->addReferer("https://wwww.aliyun.com");
// $refererConfig->addReferer("http://wwww.www.alibabacloud.com/help");
// $refererConfig->addReferer("http://www.?.aliyuncs.com");
try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $ossClient->putBucketReferer($bucket, $refererConfig);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");

Obtener la configuración de protección contra hotlinking

A continuación se muestra un ejemplo de código para consultar la configuración de protección contra hotlinking de un bucket:

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
use OSS\Model\RefererConfig;

// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
$provider = new EnvironmentVariableCredentialsProvider();
// The Endpoint is set to the China (Hangzhou) region. Change it as needed.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "<yourBucketName>";

$refererConfig = null;
try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $refererConfig = $ossClient->getBucketReferer($bucket);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
print($refererConfig->serializeToXml() . "\n");
            

Borrar la configuración de protección contra hotlinking

A continuación se muestra un ejemplo de código para eliminar la configuración de protección contra hotlinking de un bucket:

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
use OSS\Model\RefererConfig;

// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
$provider = new EnvironmentVariableCredentialsProvider();
// The Endpoint is set to the China (Hangzhou) region. Change it as needed.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "<yourBucketName>";

$refererConfig = new RefererConfig();
try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    // You cannot directly clear the hotlink protection configuration. Instead, create a new rule that allows empty Referers to overwrite the existing one.
    $ossClient->putBucketReferer($bucket, $refererConfig);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
            

Referencias

  • Para consultar el código de ejemplo completo sobre la protección contra hotlinking, visite GitHub.

  • Para obtener más información sobre la operación de API que configura la protección contra hotlinking, consulte PutBucketReferer.

  • Si desea conocer más detalles sobre la operación de API que recupera la configuración de protección contra hotlinking, consulte GetBucketReferer.