Zum Inhalt springen

IP-Restriction-Middleware ​

Die IP-Restriction-Middleware beschränkt den Zugriff auf Ressourcen anhand der IP-Adresse des Benutzers.

Import ​

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

Verwendung ​

Für eine unter Bun laufende Anwendung, die nur lokalen Zugriff erlauben soll, kannst du Folgendes schreiben. Gib in denyList die abzulehnenden Regeln und in allowList die erlaubten Regeln an.

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

Übergib als erstes Argument von ipRestriction die für deine Umgebung passende Funktion getConninfo aus dem ConnInfo-Helfer. Für Deno sieht das beispielsweise so aus:

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

//...

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

Regeln ​

Beachte beim Schreiben von Regeln die folgenden Hinweise.

IPv4 ​

  • 192.168.2.0 - Statische IP-Adresse
  • 192.168.2.0/24 - CIDR-Notation
  • * - Alle Adressen

IPv6 ​

  • ::1 - Statische IP-Adresse
  • ::1/10 - CIDR-Notation
  • * - Alle Adressen

Fehlerbehandlung ​

Um den Fehler anzupassen, gib im dritten Argument eine Response zurück.

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

Veröffentlicht unter der MIT-Lizenz.