NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Safe Fetch for Laravel

Validácia a predbežná kontrola

Nebezpečné URL adresy odmietnite už pri odoslaní formulára. Pravidlo prejde, keď ochrana URL adresu pustí (SafeFetch::allows()), a zlyhá pre všetko, čo nie je reťazec:

use RoundlyConsulting\SafeFetch\Rules\SafeUrl;

$request->validate(['feed' => ['required', 'string', 'max:2048', new SafeUrl]]);
$request->validate(['feed' => ['required', 'string', 'max:2048', 'safe_url']]);
$request->validate(['hook' => ['required', new SafeUrl(SafeFetch::policy()->allowHosts(['*.partner.example']))]]);
$request->validate(['hook' => ['required', SafeUrl::withoutLookup()]]);             // no DNS lookup
$request->validate(['dev_hook' => ['required', 'safe_url:http']]);                   // http as well
  • Jedna správa bez ohľadu na dôvod — safe-fetch::validation.safe_url, „Pole :attribute musí byť URL adresa, ktorú táto aplikácia smie načítať.“ (aj v angličtine) — takže formulár používateľovi nikdy neprezradí, aké interné mená existujú. Správa, ktorú pravidlu zadáte sami, má prednosť.
  • Textové pravidlo prijíma jediný parameter, http (safe_url:http → policy()->allowHttp()). Akýkoľvek iný parameter vyhodí InvalidArgumentException, namiesto toho, aby sa ticho ignoroval.
  • new SafeUrl(?DestinationPolicy $policy = null, bool $lookup = true) prijíma vlastné pravidlá; ak potrebujete presný dôvod, zavolajte SafeFetch::vet().
  • URL adresa sa pri načítaní posúdi znovu — DNS sa medzitým môže zmeniť.

Bez prekladu DNS

SafeUrl::withoutLookup(?DestinationPolicy $policy = null) posudzuje cez SafeFetch::precheck(): všetky pravidlá okrem prekladu — tvar, schému, port, blokovaných hostiteľov a hostiteľov aplikácie, zoznam povolených, localhost a adresu zapísanú priamo v plnom rozsahu. Formulár tak nečaká na DNS ani nezlyhá, kým sa meno ešte neprekladá. Použite ho, keď sa URL adresa uloží teraz a zavolá neskôr:

$request->validate(['endpoint' => ['required', 'string', SafeUrl::withoutLookup($policy)]]);
$stored = SafeFetch::precheck($request->input('endpoint'), $policy)->toString();

precheck() vráti CanonicalUrl alebo vyhodí DestinationRejected a vyvolá DestinationRefused s via precheck. Meno, ktoré prejde, sa aj tak môže preložiť na privátnu adresu — ochrana ho pri každej požiadavke posúdi v plnom rozsahu. Ak sa URL adresa musí preložiť hneď, použite SafeFetch::vet().

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.