タイトルだけでは何をしたいのか?がわからないので、事例ベースで話を進めます。


P2278912


以前、SOY Shopで注文番号をCODE39規格でバーコードを作成してみるの記事の延長上で、納品書に注文番号のバーコードを載せ、梱包が終わった後に納品書にあるバーコードをスキャンしたら、SOY Shop内のデータベースの注文状態を自動で変更するという機能を作成しました。

※上記の機能は標準機能ではありません。


この機能はタブレット内のブラウザで動かす為のWebアプリにしましたが、タブレットでSOY Shopの管理画面にログインしてから利用だと使用までが面倒なので、公開側ページでバーコードの読み取り用のページを設けて、IPアドレスを紐付けた鍵を持ったブラウザのみアクセス可能にするといったプラグインを設けました。


この機能は他にも使える用途がありそうなので、アクセス制限のみ切り分けたプラグインを作成して、標準機能として同梱することにしました。




仕組みは最初に特定のブラウザ以外はアクセスできないページを設けます。

※アクセス制限に関する設定はアクセス制限プラグイン内にあります。


access_restinction_plugin


アクセスしたい端末のブラウザで、SOY Shopの管理画面にログインして、アクセス制限プラグインの詳細画面でブラウザの登録をします。

この時の設定内容は、アクセス用の鍵の値を生成し、アクセスを許可したいブラウザにクッキーとして持たせます。

SOY Shop側ではブラウザに渡した鍵のデータとブラウザのアクセス元のIPアドレスをデータベースに格納します。

※クッキーのSameSiteはStrictにして、鍵の安全性を高めます。

SOY CMS / SOY ShopのクッキーやセッションでSameSiteの設定を行う


これで、特定の端末の特定のブラウザのみ制限されたページにアクセス出来るようになりました。

鍵データとIPアドレスを組み合わせることで、鍵を偽装したとしても、端末を同一のネットワークに繋がない限りは鍵のデータを使用することができません。


鍵のデータには任意の有効期限を設け、有効期限内に制限されたページにアクセスがなかった場合は鍵のデータを破棄します。


今回対応分を含んだパッケージは下記のサイトからダウンロード出来ます。

https://saitodev.co/soycms/soyshop/