Anda dapat menggunakan kit pengembangan perangkat lunak (SDK) Node.js untuk mengonfigurasi aturan akses Layanan Penyimpanan Objek (OSS) berdasarkan header permintaan Referer. Aturan ini memungkinkan Anda menetapkan daftar putih Referer, blacklist, serta menentukan apakah header Referer kosong diperbolehkan atau tidak, sehingga memblokir akses ke file OSS dari Referer tertentu. Dengan demikian, hotlinking dari situs web lain dapat dicegah dan biaya traffic yang tidak perlu dapat dihindari.
Catatan
Sebelum mengonfigurasi perlindungan hotlink, pastikan Anda memahami fitur ini terlebih dahulu. Untuk informasi selengkapnya, lihat Perlindungan hotlink.
Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir internal. Untuk detail wilayah dan titik akhir yang didukung, lihat Wilayah dan titik akhir.
Pada topik ini, instans OSSClient dibuat dengan menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi (Node.js SDK).
Untuk menetapkan atau menghapus aturan perlindungan hotlink, Anda harus memiliki izin
oss:PutBucketReferer. Untuk mengambil aturan perlindungan hotlink, Anda harus memiliki izinoss:GetBucketReferer. Untuk informasi selengkapnya, lihat Berikan kebijakan akses kustom kepada RAM user.
Tetapkan perlindungan hotlink
Kode berikut menunjukkan cara menetapkan aturan perlindungan hotlink.
const OSS = require('ali-oss')
const client = new OSS({
// Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Tentukan nama 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();Ambil konfigurasi perlindungan hotlink
Kode berikut menunjukkan cara mengambil konfigurasi perlindungan hotlink.
const OSS = require('ali-oss')
const client = new OSS({
// Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region ke oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah ditetapkan.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Ganti yourbucketname dengan nama bucket.
bucket: 'yourbucketname'
});
async function getBucketReferer () {
try {
const result = await client.getBucketReferer('bucket-name');
console.log(result);
} catch (e) {
console.log(e);
}
}
getBucketReferer();Hapus aturan perlindungan hotlink
Kode berikut menunjukkan cara menghapus aturan perlindungan hotlink.
const OSS = require('ali-oss')
const client = new OSS({
// Atur yourregion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Atur yourbucketname ke nama bucket.
bucket: 'yourbucketname'
});
async function deleteBucketReferer () {
try {
const result = await client.deleteBucketReferer('bucket-name');
console.log(result);
} catch (e) {
console.log(e);
}
}
deleteBucketReferer();Referensi
Untuk kode contoh lengkap yang digunakan untuk mengonfigurasi perlindungan hotlink, lihat GitHub.
Untuk informasi selengkapnya tentang operasi API yang digunakan untuk menetapkan aturan perlindungan hotlink, lihat PutBucketReferer.
Untuk informasi selengkapnya tentang operasi API yang digunakan untuk mengambil konfigurasi perlindungan hotlink, lihat GetBucketReferer.