IP 制限ミドルウェア
IP 制限ミドルウェアは、ユーザーの IP アドレスに基づいてリソースへのアクセスを制限するミドルウェアです。
インポート
TypeScript
import { Hono } from 'hono'
import { ipRestriction } from 'hono/ip-restriction'
使用方法
Bun 上で実行されているアプリケーションの場合、ローカルからのアクセスのみを許可するには、次のように記述します。`denyList` に拒否したいルールを、`allowList` に許可したいルールを指定します。
TypeScript
import { Hono } from 'hono'
import { getConnInfo } from 'hono/bun'
import { ipRestriction } from 'hono/ip-restriction'
const app = new Hono()
app.use(
'*',
ipRestriction(getConnInfo, {
denyList: [],
allowList: ['127.0.0.1', '::1'],
})
)
app.get('/', (c) => c.text('Hello Hono!'))
お使いの環境に適した ConnInfo ヘルパー から `getConninfo` を `ipRestriction` の最初の引数として渡します。たとえば、Deno の場合は次のようになります。
TypeScript
import { getConnInfo } from 'hono/deno'
import { ipRestriction } from 'hono/ip-restriction'
//...
app.use(
'*',
ipRestriction(getConnInfo, {
// ...
})
)
ルール
ルールの記述は、以下の指示に従ってください。
IPv4
- `192.168.2.0` - スタティック IP アドレス
- `192.168.2.0/24` - CIDR 表記
- `*` - 全てのアドレス
IPv6
- `::1` - スタティック IP アドレス
- `::1/10` - CIDR 表記
- `*` - 全てのアドレス
エラー処理
エラーをカスタマイズするには、3 番目の引数に `Response` を返します。
TypeScript
app.use(
'*',
ipRestriction(
getConnInfo,
{
denyList: ['192.168.2.0/24'],
},
async (remote, c) => {
return c.text(`Blocking access from ${remote.addr}`, 403)
}
)
)