Transform RulesでHTTP応答ヘッダーを変更

HTTPヘッダーは、Webの仕組みの中心となるものです。これらは、、クライアントとサーバー間で、適用するセキュリティ権限やクライアントに関する情報などの追加情報を渡し、正しいコンテンツを提供するために使用されます。

本日、すべてのCloudflareプランで、提供するTransform Rules内の3番目のアクション「HTTP応答ヘッダーの変更」が利用可能になることを発表します。この新機能により、Cloudflareユーザーは、TrafficがCloudflareを介してクライアントに戻るときに、HTTP応答ヘッダーを設定または削除することができます。これにより、お客様はリクエストがどのように処理されたかという情報、デバッグ情報、さらにはリクルートメッセージなどでレスポンスを充実させることができます。

以前は、HTTP応答ヘッダーの変更はCloudflare Workerを使用して行われました。本日は、コードを1行も記述せずにこれを行う、さらに簡単な方法を紹介します。

World Wide Webの荷札

Image of baggage check-in at an airport.

HTTPヘッダーを、空港でチェックインするときにバッグに付けられる「荷札」だと考えてください。

通常、これらの数字や文字が何を意味するのかを知る必要はありません。自分のスーツケースを搭乗デスクから正しい飛行機に運び、目的地で正しい荷物カルーセルに戻すための重要な役割を担っていることはご存知でしょう。

この札には、スーツケースの重量、目的地の空港コード、手荷物タグ番号、航空会社、通関情報などに関する情報が含まれています。これらの属性はすべて、荷物が正しい目的地にただ到着するだけでなく、最も安全で効率的な方法で到着するために不可欠です。

HTTPヘッダーは、インターネット上の荷札です。これは、ブラウザからの要求が正しい宛先に到着し、トラフィックが正しい設定を使用して最も安全で効率的な方法でブラウザに返されるようにするために不可欠です。

HTTP応答ヘッダーはどうやって使いますか?

HTTPヘッダーは「要求」と「応答」の双方のやり取りに使用されます。「要求」はクライアントのファイルの要求時に、「応答」はサーバーが結果として返す時に存在します。本日発表された機能は、特にHTTP応答のヘッダーに関係します。

HTTP応答ヘッダーは、ブラウザがデータを正しく処理するのに役立つ情報とともに、正しいデータがブラウザに返されるようにするために使用されます。一般的な応答ヘッダーには、返されたコンテンツの種類をブラウザに通知する「Content-Type」が含まれます。例として、「Content-Type: text/html」または「Content-Type: image/png」があります。もう1つの一般的なヘッダーは「Server:」です。これには、HTTP要求の処理などに使用される、ソフトウェアに関する情報が含まれています。例として、「Server: cloudflare」があります。

基本的なHTTPのトラフィック処理以外にも、これらの応答ヘッダーには多くの用途があります。その1つが、セキュリティ改善です。コンテンツセキュリティポリシー(CSP)、オリジン間リソース共有(CORS)、HTTP Strict Transport Security(HSTS)などのセキュリティメカニズムはすべて、Webサイト訪問者のセキュリティを向上および強化するための応答ヘッダーとして実装されています。

たとえば、CSPの主要な目的は、クロスサイトスクリプティング(XSS)攻撃を軽減して報告することです。XSS攻撃は、悪意のあるスクリプトが信頼できるWebサイトに挿入されたときに発生します。攻撃者がアプリケーションを使用して、ブラウザ側のスクリプトなどの悪意のあるコードを別のエンドユーザーに送信できるようにします。エンドユーザーとWebサイトまたはアプリケーションとのやり取りの安全性が損なわれる、パスワードなどの機密情報を第三者に吸い上げられるといったことが、このスクリプトを使用すると可能になります。

これを防止するために、CSPがWebサイト管理者によってHTTP応答ヘッダーとして追加されます。 CSP応答ヘッダーは、ブラウザが実行可能なスクリプトの有効な発行元であると見なすドメインを指定します。CSP互換ブラウザ は、許可されたドメインから受信したファイルにロードされているスクリプトのみを実行し、他のすべてのスクリプトを無視します。

CSPは、値に含まれるポリシーとともに「Content-Security-Policy」ヘッダーを設定することでHTTP応答に追加されます。たとえば、 一般的なWebサーバーであるNGINXを使用する場合、管理者は構成に次のような行を設定します:

add_header Content-Security-Policy "default-src 'self';" always;

Cloudflare Workersを使用する場合、コードは次のようになります:

response.headers.set("Content-Security-Policy":"default-src 'self' example.com *.example.com",)

ブラウザがHTTP応答を受信すると、コンテンツセキュリティポリシーヘッダーの存在を検出し、適切に動作します。

HTTP応答ヘッダーの動的変更

これらのヘッダーがHTTP応答に存在することを確認するのは、多くの場合、リバースプロキシの仕事です —つまり、クライアントと、クライアントに返されるHTTP応答データを強化することを目的とするサーバーの間に位置するサーバーです。

「HTTP応答ヘッダーの変更」は、Transform Rules内ですべてのCloudflareプランで利用できるようになりました。すべてCloudflare内で、訪問者に返される前にHTTP応答ヘッダーを変更する機能を提供します。これは、SaaSプロバイダーやその他のサードパーティサービスなど、管理者が完全に制御できないオリジンからの応答である場合に特に重要です。

Screenshot of "Transform Rules"

ルールの変換により、ユーザーは次の3つのオプションのいずれかを使用して、ルールごとに最大10個のHTTP応答ヘッダーの変更を許可されます:

Screenshot showing Transform Rules actions

「Set dynamic」は、HTTP応答ヘッダーの値をHTTP応答ごとに動的に入力する必要がある場合に使用されます。例としては、Cloudflareボット管理の「bot score」、または訪問者の国を各HTTP応答に追加することが含まれます。

Screenshot showing Transform Rules being used to dynamically set HTTP response headers.

注:これらの値は、対応するHTTP要求を使用して計算されます。つまり、応答ヘッダーで返されるボットスコアは、HTTP要求に基づいて計算されます。同様に、「ip.src.countryの値はWebサイト訪問者の国」となり、応答のオリジンではありません。

「Set static」を使用して、ヘッダーの値に静的なリテラル文字列を入力する必要があります。このオプションは、CORSまたはCSPポリシーの設定などの単純なヘッダー作成に使用する必要があります:

Screenshot showing Transform Rules actions being used to statically set HTTP response headers.

どちらの「set」の例でも、指定された名前のヘッダーがHTTP応答にすでに存在する場合、その値は削除され、指定された値に置き換えられます。

「Remove」は最後のオプションであり、指定された名前のすべてのHTTP応答ヘッダーを削除するために使用する必要があります。たとえば、「Link」HTTP応答ヘッダーが確実に削除されるようにする場合は、次のようなルールを使用します:

Transform Rule showing the header 'link' being removed from the HTTP response.

Cloudflare の関数 は、「set dynamic」ヘッダー変更内で使用できます。これらの関数は次のとおりです:

  • concat()
  • regex_replace()
  • to_string()
  • lower()

一般的に使用される関数は、さまざまな種類のデータのリストを取得し、連結して単一のヘッダー値を形成するために使用されるconcat()およびto_string()です。例えば、`concat(“score=”,to_string(cf.bot_management.score))`の結果は、「score=85」のようなヘッダー値になります。

注:正規表現関数は、BusinessプランとEnterprise プランのお客様のみが利用できます。

Webサイト向けに最適化する

HTTP応答ヘッダーの変更機能をCloudflareに移行するもう1つの大きな利点は、ルールビルダーで提供されるフィルタリングのレベルです。通常、CORSやCSPなどのテクノロジーは、Webサイト全体で、またはよくてもディレクトリごとに応答ヘッダーとして設定されます。

Transform Rulesを使用すると、管理者は、訪問者の出身国、ボットスコア、ユーザーエージェント、要求されたファイル名やファイル拡張子、リクエスト方法 などの多くのパラメーターに基づいてヘッダーを設定できます。

これにより、管理者は、 認証済み ボットと未検証ボット、低ボットスコアトラフィックに対して、より厳格なコンテンツセキュリティポリシーがセットアップできるようになります。

今すぐお試しください!

HTTP応答ヘッダーの変更機能は、他の多くのユースケースの中でも、操作の改善、機密データの削除、セキュリティの強化に使用できます。今すぐ、最新の変換ルール をお試しください。