Aller au contenu

Middleware IP Restriction ​

Le middleware IP Restriction limite l’accès aux ressources selon l’adresse IP de l’utilisateur.

Importation ​

ts
import { Hono } from 'hono'
import { ipRestriction } from 'hono/ip-restriction'

Utilisation ​

Pour une application exécutée sur Bun, vous pouvez autoriser uniquement les accès locaux comme suit. Spécifiez les règles de refus dans denyList et les règles d’autorisation dans allowList.

ts
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!'))

Passez la fonction getConninfo de l’utilitaire ConnInfo adaptée à votre environnement comme premier argument de ipRestriction. Par exemple, sur Deno :

ts
import { getConnInfo } from '@hono/deno'
import { ipRestriction } from 'hono/ip-restriction'

//...

app.use(
  '*',
  ipRestriction(getConnInfo, {
    // ...
  })
)

Règles ​

Suivez les instructions ci-dessous pour écrire les règles.

IPv4 ​

  • 192.168.2.0 - Adresse IP fixe
  • 192.168.2.0/24 - Notation CIDR
  • * - Toutes les adresses

IPv6 ​

  • ::1 - Adresse IP fixe
  • ::1/10 - Notation CIDR
  • * - Toutes les adresses

Gestion des erreurs ​

Pour personnaliser l’erreur, renvoyez une Response dans le troisième argument.

ts
app.use(
  '*',
  ipRestriction(
    getConnInfo,
    {
      denyList: ['192.168.2.0/24'],
    },
    async (remote, c) => {
      return c.text(`Blocking access from ${remote.addr}`, 403)
    }
  )
)

Publié sous licence MIT.