Con el kit de desarrollo de software (SDK) de Ruby, puede configurar reglas de acceso en Object Storage Service (OSS) basadas en el encabezado de solicitud Referer. Estas reglas incluyen una lista blanca de Referer, una lista negra de Referer y la opción de permitir encabezados Referer vacíos. Esta configuración evita que otros sitios web hagan hotlinking de sus archivos de OSS y le ayuda a reducir costos de tráfico innecesarios.
Precauciones
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 ubicados en la misma región, utilice un endpoint interno. Para obtener más información sobre las regiones y los endpoints de OSS, consulte Regions and endpoints.
Este tema muestra cómo crear una instancia de OSSClient con un endpoint de OSS. Para conocer configuraciones alternativas, como usar un dominio personalizado o autenticarse con credenciales de Security Token Service (STS), consulte Initialization (Ruby SDK).
Para configurar la protección contra hotlinking, necesita el permiso
oss:PutBucketReferer. Para consultar las configuraciones de protección contra hotlinking, requiere el permisooss:GetBucketReferer. Para obtener más información, consulte Grant a custom policy.
Configurar la protección contra hotlinking
A continuación se muestra cómo configurar la protección contra hotlinking:
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# The China (Hangzhou) region is used as an example. Replace the Endpoint with the one for your region.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# 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 configured.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name. For example, examplebucket.
bucket = client.get_bucket('examplebucket')
# Set the Referer list for the bucket.
bucket.referer = Aliyun::OSS::BucketReferer.new(
allow_empty: true, whitelist: ['http://www.aliyun.com', 'https:www.aliyun.com'])
Obtener la configuración de protección contra hotlinking
A continuación se muestra cómo recuperar la configuración de protección contra hotlinking:
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# The China (Hangzhou) region is used as an example. Replace the Endpoint with the one for your region.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# 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 configured.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name. For example, examplebucket.
bucket = client.get_bucket('examplebucket')
ref = bucket.referer
puts ref.to_s
Borrar la configuración de protección contra hotlinking
A continuación se muestra cómo borrar la configuración de protección contra hotlinking:
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# The China (Hangzhou) region is used as an example. Replace the Endpoint with the one for your region.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# 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 configured.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name. For example, examplebucket.
bucket = client.get_bucket('examplebucket')
bucket.referer = Aliyun::OSS::BucketReferer.new(allow_empty: true, whitelist: [])
Referencias
Para obtener detalles sobre la operación de API que configura la protección contra hotlinking, consulte PutBucketReferer.
Para obtener detalles sobre la operación de API que recupera la configuración de protección contra hotlinking, consulte GetBucketReferer.