©Sergey Emelyanov 2025 | Alle Rechte vorbehalten
In modernen Web-Entwicklung werden täglich vertrauliche Daten wie Passwörter, API‑Tokens und persönliche Kundeninformationen verarbeitet. Tritt ein Fehler auf, können diese sensiblen Werte in automatisch erzeugten Stacktraces landen – und damit in Logfiles oder sogar vor den Augen Ihrer Anwender. PHP 8.2 führt das Attribut #[SensitiveParameter] ein, das genau dieses Risiko minimiert.
function verifyApiToken(string $token): bool {
// Fehler: Division durch Null simuliert
$x = 1 / 0;
return true;
}
verifyApiToken('crm-Api-Token-123456');
Bei einem Fehler erhalten Sie typischerweise eine Stacktrace wie
1. {main}() /var/www/html/public/index.php:0
2. verifyApiToken($token = 'crm-Api-Token-123456') /var/www/html/src/Service/TokenService.php:12
Gelangen diese Logs in ein unsicheres Log‑Archiv oder wird die Fehlermeldung auf einer Debug‑Seite angezeigt, offenbart sich Ihr API‑Token.
function verifyApiToken(
#[\SensitiveParameter]
string $token
): bool {
// gleiche Fehlersimulation
$x = 1 / 0;
return true;
}
verifyApiToken('crm-Api-Token-123456');
Der Stacktrace zeigt nun
1. {main}() /var/www/html/public/index.php:0
2. verifyApiToken($token = '[Sensitive Parameter]') /var/www/html/src/Service/TokenService.php:12
Der Parameterwert wird durch “[Sensitive Parameter]” ersetzt.
class CrmApiClient {
public function fetchCustomerData(
#[\SensitiveParameter]
string $apiToken,
int $customerId
): array {
// HTTP-Request…
}
}
3.2 Passwort‑Reset‑Controller
Ein typisches Szenario: Ein Kunde fordert ein neues Passwort an. Sie verarbeiten den Reset-Token so:
class PasswordController {
public function resetPassword(
#[\SensitiveParameter]
string $resetToken,
string $newPassword
): Response {
// Fehler oder Ausnahmen möglich
}
}
Sollte die Validierung schiefgehen, bleibt der Reset‑Token verborgen.
3.3 Massenimport vertraulicher Daten
Beim CSV‑Import von Kundendaten mit Passwörtern sind die Passwörter Parameter einer Import‑Methode. Schützen Sie sie ebenfalls:
function importCustomers(
array $rows,
#[\SensitiveParameter]
string $defaultPassword
): void {
// Import‑Logik…
}
// rector.php
use Rector\SensitiveParameter\Rector\FunctionLike\AddSensitiveParameterAttributeRector;
return static function (Rector\Config\RectorConfig $rectorConfig): void {
$rectorConfig->ruleWithConfiguration(
AddSensitiveParameterAttributeRector::class,
[
'sensitive_parameters' => ['password', 'token', 'apiToken', 'resetToken'],
]
);
};
Rector ergänzt automatisch alle Parameter mit passenden Namen um das Attribut.
©Sergey Emelyanov 2025 | Alle Rechte vorbehalten