Puede configurar una lista de permitidos o una lista de bloqueados de Referer y especificar si se permiten solicitudes con Referer vacío en un bucket de Object Storage Service (OSS). Esto evita el acceso no autorizado a los recursos del bucket y previene cargos inesperados por tráfico.
Notas de uso
Antes de configurar la protección contra hotlink, asegúrese de familiarizarse con 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). Para acceder a OSS desde otros servicios de Alibaba Cloud en la misma región, utilice un endpoint interno. Para obtener detalles sobre las regiones y endpoints compatibles, consulte Regions and endpoints.
En este tema se crea una instancia de OSSClient mediante un endpoint de OSS. Si desea crear una instancia de OSSClient con nombres de dominio personalizados o Security Token Service (STS), consulte Initialize OSS SDK for Node.js.
Para configurar la protección contra hotlink, debe contar con el permiso
oss:PutBucketReferer. Para consultar las configuraciones de protección contra hotlink, debe contar con el permisooss:GetBucketReferer. Para obtener más información, consulte Grant a custom policy.
Configurar la protección contra hotlink para un bucket
A continuación se muestra un ejemplo de código para configurar la protección contra hotlink de un bucket:
const OSS = require('ali-oss')
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// 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.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the name of the bucket.
bucket: 'examplebucket'
});
async function putBucketReferer () {
try {
const result = await client.putBucketReferer(client.options.bucket, true, [
'http://www.aliyun.com',
'https://www.aliyun.com'
]);
console.log(result);
} catch (e) {
console.log(e);
}
}
putBucketReferer();
Consultar las configuraciones de protección contra hotlink de un bucket
A continuación se muestra un ejemplo de código para consultar las configuraciones de protección contra hotlink de un bucket:
const OSS = require('ali-oss')
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before you run the sample code, make sure that you have configured environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the name of the bucket.
bucket: 'yourbucketname'
});
async function getBucketReferer () {
try {
const result = await client.getBucketReferer('bucket-name');
console.log(result);
} catch (e) {
console.log(e);
}
}
getBucketReferer();
Eliminar las configuraciones de protección contra hotlink de un bucket
A continuación se muestra un ejemplo de código para eliminar las configuraciones de protección contra hotlink de un bucket:
const OSS = require('ali-oss')
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before you run the sample code, make sure that you have configured environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the name of the bucket.
bucket: 'yourbucketname'
});
async function deleteBucketReferer () {
try {
const result = await client.deleteBucketReferer('bucket-name');
console.log(result);
} catch (e) {
console.log(e);
}
}
deleteBucketReferer();
Referencias
Para consultar el código de ejemplo completo sobre protección contra hotlink, visite GitHub.
Para obtener más información sobre la operación de API que permite configurar la protección contra hotlink de un bucket, consulte PutBucketReferer.
Para obtener más información sobre la operación de API que permite consultar las configuraciones de protección contra hotlink de un bucket, consulte GetBucketReferer.