• Home
  • Server
  • .htaccess で特定の cookie がある場合と特定のサイトからのアクセスである場合以外は拒否する

.htaccess で特定の cookie がある場合と特定のサイトからのアクセスである場合以外は拒否する

unsplash-logoJamie Street

例えば、 token という名前で foobar という値の Cookie がセットされていて、なおかつ https://example.com からのアクセスの場合だけ表示したいコンテンツがあるとします。

そういったときは .htaccess に下記のように書きます。ただし、Apache 2.4 の場合は別の書き方もできるようです。

.htaccess の書き方

SetEnvIf Cookie token=fobar mytoken
SetEnvIf Referer "^https://example\.com" mysite
SetEnvIf mytoken "^$" !mysite
SetEnvIf mysite "1" member
Order Deny,Allow
Deny from all
Allow from env=member

JavaScript で Cookie をセットする

以下のような JavaScript を、アクセス制限したいリンクのあるページに貼り付ければ良いと思います。

function setCookie (key, val, days, path) {
    var cookie = encodeURIComponent(key) + '=' + encodeURIComponent(val);
    if (days != null) {
        var expires = new Date();
        expires.setDate(expires.getDate() + days);
        cookie += ';expires=' + expires.toGMTString();
    }
    cookie += (path != null) ? '; path=' + path + ';': '; path=/;';      
    document.cookie = cookie;
}
setCookie('token', 'foobar', 10)

以上です。

参考サイト

Recent Entries

Pickup Categories

Movable Type

CMSとして国内5万サイト以上に導入されている Movable Type に関する記事です。

Craft CMS

CMS 業界で注目の Craft CMS に関する記事です。Craft CMS はチーム全体をハッピーにしてくれる素晴らしい CMS です。