---
title: "Tajomstvá mimo stack trace — Crypto for Laravel | Roundly"
description: "Každý rámec, ktorým tajomstvo prechádza, ho označí #[\\SensitiveParameter] — kľúče, podpisy, tokeny, vstup kódekov a loaderov aj ploché volania fasády."
url: https://roundly-consulting.com/sk/open-source/navody/crypto-for-laravel/tajomstva-mimo-stack-trace
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Crypto for Laravel](https://roundly-consulting.com/sk/open-source/navody/crypto-for-laravel.md)

# Tajomstvá mimo stack trace

PHP skryje argument v stack trace len v rámci funkcie, ktorá ho označí #\[\\SensitiveParameter\]. Balík preto označuje každý rámec, ktorým tajomstvo prechádza, nielen vstupný bod — výnimka vyhodená hlboko vo verifieri, kódeku či loaderi tak do vašich logov a hlásení chýb nikdy neprenesie kľúč, token ani tajný kľúč OTP.

## Čo je označené

- Kľúče, tajné kľúče, peppery a súkromné PEM, tajné kľúče a kódy OTP a otvorený text odovzdaný do Aes256Gcm.
- Oba vstupy ConstantTime::equals() a Crypto::constantTimeEquals(), tak ako PHP označuje oba vstupy hash\_equals() — očakávaná hodnota je samotné tajomstvo, MAC, token či OTP.
- Kompaktný token v Jws::verify(), pretože JWS je zvyčajne bearer token, ktorý sám osebe oprávňuje na prístup.
- Každý podpis, HMAC aj podpis verejným kľúčom, v každom rámci, ktorý ho dostane celý: Hmac::verify(), Hs::verify(), Rs::verify(), Es::verify(), EdDSA::verify(), kontrakt Verifier, KeyVerifier::verify() (Crypto::verifier()), kódek ECDSA (Crypto::ecDer()->fromRaw() / toRaw() / isValid()) a konštruktor FlattenedJws. Rámec overenia JWS drží aj podpisovaný vstup (header.payload) a spolu s podpisom z nich znova poskladáte bearer token.
- Dáta odovzdané do Digest::raw(), hex() a withPepper() — tokeny, heslá, osobné údaje.
- Vstup každého kódeku — Base32, Base64, Base64Url, Hex a metódy Crypto::\*Encode() / \*Decode() — keďže cez ne prechádzajú tajné kľúče OTP, bajty tokenov aj kľúče. Tajný kľúč OTP skopírovaný s medzerami, ktorý sa nepodarí dekódovať, sa tak nikdy neobjaví v stack trace Totp::verify(), Hotp::at() ani ProvisioningUri::totp().
- Vstup každého loadera verejného materiálu: RsaKey::public(), EcKey::public(), OkpKey::ed25519(), Jwk::fromArray() / fromJson(), Certificate::fromPem() / fromDer() / fromBase64() a Chain::fromPems() / fromX5c() / fromPemBundle() vrátane ich podôb cez Crypto::keys() a Crypto::x509(). Súkromné kľúče prichádzajú v tých istých formátoch, takže kľúč odovzdaný omylom — nesprávny súbor, balík len s kľúčom, súkromný či symetrický JWK — zostane mimo stack trace výnimky, ktorá ho odmietne.

Označené nie sú: správy, ktoré podpisujete, overujete alebo z ktorých počítate MAC (samotný podpisovaný vstup k prístupu neoprávňuje), šifrový text, nonce, pridružené dáta, objekty verejných kľúčov, jednotlivé zložky kľúča (súradnice EC, modul či exponent RSA), vstup COSE\_Key / CBOR z autentifikátora (WebAuthn vám súkromný kľúč nikdy neodovzdá) a argumenty s algoritmom, dĺžkou, menovkou (label), diskom, cestou či konfiguračným kľúčom. Označenú množinu stráži architektonický test.

## Aj ploché volania fasády

Štandardný rámec Facade::\_\_callStatic() v Laraveli zaznamená každý argument, ktorý posúva ďalej. Fasáda Crypto ho nahrádza traitom RedactsSensitiveArguments z package-toolkit, ktorý v tomto rámci obalí každý argument označený v manažéri do SensitiveParameterValue a ostatné nechá viditeľné. Crypto::constantTimeEquals($known, $user), Crypto::base64Decode($secret), Crypto::provisioningUri($secret, …) aj skratky loaderov Crypto::jwkFromJson() / jwkFromArray(), Crypto::certificate() a Crypto::chainFrom\*() tak držia tajomstvo mimo stack trace rovnako ako trieda, vnorený prístup či injektovaný CryptoManager. Volania, ktoré najprv vrátia objekt, napríklad Crypto::totp()->verify($secret, $code), tajomstvo cez fasádu vôbec neposúvajú.

## Vlastný Verifier

PHP atribút #\[\\SensitiveParameter\] z rozhrania nededí. Verifier, ktorý implementujete sami, musí svoj parameter $signature označiť sám — tak ako to robí kontrakt aj každý verifier balíka. Pozrite si časť Podpisy a algoritmy.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/crypto-for-laravel.md)
