すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:SDK for Node.jsを使用して、OSSオブジェクトへの不正な参照を防ぐためにリファラーベースのホットリンク保護を設定する

最終更新日:Feb 22, 2024

リファラーホワイトリストまたはリファラーブラックリストを設定し、Object Storage Service (OSS) バケットに空のリファラーを含むリクエストを許可するかどうかを指定して、バケット内のリソースへの不正アクセスと予期しないトラフィック料金を防止できます。

使用上の注意

  • ホットリンク保護を設定する前に、この機能に慣れていることを確認してください。 詳細については、「ホットリンク保護」をご参照ください。

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。

  • ホットリンク保護を設定するには、oss:PutBucketReferer権限が必要です。 ホットリンク保護設定をクエリするには、oss:GetBucketReferer権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

バケットのホットリンク保護の設定

次のコードは、バケットのホットリンク保護を設定する方法の例を示しています。

const OSS = require('ali-OSS ')

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  region: 'yourregion' 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 
  bucket: 'examplebucket'
});

async関数putBucketReferer () {
  try {
  const result = await client.putBucketReferer(bucket, true, [
  'http:// www.aliyun.com '、
  'https:// www.aliyun.com'
  ]);
  console.log (結果);
  } catch (e) {
    console.log(e);
  }
 }

putBucketReferer(); 

バケットのホットリンク保護設定の照会

次のコードは、バケットのホットリンク保護設定を照会する方法の例を示しています。

const OSS = require('ali-OSS ')

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  region: 'yourregion' 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 
  bucket: 'yourbucketname'
});

async関数getBucketReferer () {
  try {
    const result = await client.getBucketReferer('bucket-name');
    console.log (結果);
  } catch (e) {
    console.log(e);
  }
}

getBucketReferer(); 

バケットのホットリンク保護設定の削除

次のコードは、バケットのホットリンク保護設定を削除する方法の例を示しています。

const OSS = require('ali-OSS ')
const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  region: 'yourregion' 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 
  bucket: 'yourbucketname'
});

async関数deleteBucketReferer () {
  try {
    const result = await client.de leteBucketReferer('bucket-name');
    console.log (結果);
  } catch (e) {
    console.log(e);
  }
}

deleteBucketReferer(); 

参考資料

  • hotlink保護の完全なサンプルコードについては、『GitHub』をご参照ください。

  • バケットのホットリンク保護を設定するために呼び出すことができるAPI操作の詳細については、「PutBucketReferer」をご参照ください。

  • バケットのホットリンク保護設定を照会するために呼び出すことができるAPI操作の詳細については、「GetBucketReferer」をご参照ください。