Rozpoczynamy naszą nową serię o funkcjach bezpieczeństwa Laravela 11 na górze informacji o wydaniu. Pierwszą zmianą związaną z bezpieczeństwem, na którą się natkniemy, jestreszta domyślnej aplikacji Oprogramowanie pośredniczące:
Wcześniej nowe aplikacje Laravel zawierały dziewięć programów pośredniczących. To oprogramowanie pośredniczące wykonywało różne zadania, takie jak uwierzytelnianie żądań, przycinanie ciągów wejściowych i weryfikowanie tokenów CSRF.
W Laravelu 11 te oprogramowanie pośredniczące zostało przeniesione do samego frameworka, dzięki czemu nie zwiększają struktury aplikacji. Nowe metody dostosowywania zachowania tego oprogramowania pośredniczącego zostały dodane do struktury i mogą być wywoływane z pliku aplikacji
`bootstrap/app.php`
.->withMiddleware(function (Middleware $middleware) { $middleware->validateCsrfTokens( except: ['stripe/*'] ); $middleware->web(append: [ EnsureUserIsSubscribed::class, ]) })
Chociaż jest to świetne rozwiązanie do zmniejszania ilości szumu w domyślnym szkieletie aplikacji, zwłaszcza, że większości z nich nie trzeba zmieniać w większości aplikacji, utrudnia to znalezienie oprogramowania pośredniczącego związanego z zabezpieczeniami i wprowadzenie zmian, które należy wprowadzić.
Aby ułatwić zorientowanie się, co jest dostępne i do czego służy, oto różne obecnie dostępne metody konfiguracji oprogramowania pośredniczącego:
Wyłącz szyfrowanie
plików cookie Laravel automatycznie szyfruje wartości plików cookie, aby zapewnić bezpieczeństwo. Jeśli chcesz uzyskać do nich dostęp poza Laravel, możesz wyłączyć szyfrowanie określonych wartości. (Dokumenty Laravel)
->withMiddleware(function (Middleware $middleware) {
$middleware->encryptCookies(except: [
'cookie_name',
]);
})
Wyłącz ochronę
CSRFCzasami trzeba wyłączyć ochronę CSRF na określonych trasach, takich jak elementy webhook lub zewnętrzne interfejsy API. (Dokumenty Laravel)
->withMiddleware(function (Middleware $middleware) {
$middleware->validateCsrfTokens(except: [
'stripe/*',
'http://example.com/foo/bar',
'http://example.com/foo/*',
]);
})
Wykluczanie parametrów z walidacji
podpisanego adresu URLSerwisy społecznościowe, biuletyny e-mailowe i analityka uwielbiają dołączać dodatkowe parametry do adresów URL, gdy użytkownicy je klikają, jednak te dodatkowe parametry mogą zepsuć podpisane adresy URL. Aby tego uniknąć, można wykluczyć te dodatkowe parametry z walidacji. (Dokumenty Laravel)
->withMiddleware(function (Middleware $middleware) {
$middleware->validateSignatures(except: [
'fbclid',
'utm_campaign',
'utm_content',
'utm_medium',
'utm_source',
'utm_term',
]);
})
Konfigurowanie zaufanych hostów i serwerów proxy
Ważne jest, aby skonfigurować zaufane hosty i serwery proxy, aby zapobiec wysyłaniu złośliwych żądań do aplikacji przez przekazywane ataki zatruwania hostów . Najczęstszym przykładem jest wyzwalanie wiadomości e-mail dotyczących resetowania hasła , które zawierają linki do wstrzykniętej domeny atakującego1. (Dokumenty Laravel)
->withMiddleware(function (Middleware $middleware) {
$middleware
->trustProxies(at: [
'192.168.1.1',
'192.168.1.2',
])
->trustHosts(
at: ['laravel.test']
);
})
Zezwalaj na określone trasy podczas konserwacji
Czasami trzeba zezwolić na działanie określonych tras, gdy włączony jest tryb konserwacji.
->withMiddleware(function (Middleware $middleware) {
$middleware->preventRequestsDuringMaintenance(except: [
'stripe/*',
]);
})
Włączanie ograniczania
interfejsu APIDobrym pomysłem jest włączenie rozsądnego ograniczania przepustowości interfejsu API, aby zapobiec nadużyciom i złośliwym działaniom. (Dokumenty Laravel)
->withMiddleware(function (Middleware $middleware) {
$middleware->throttleApi(limiter: 'api', redis: true);
})
Unieważnianie sesji "internetowych" na innych urządzeniach
Jako dodatkową warstwę bezpieczeństwa możesz unieważnić wszystkie aktywne sesje na innych urządzeniach, klikając przycisk lub po zmianie hasła. (Dokumenty Laravel)
->withMiddleware(function (Middleware $middleware) {
$middleware->authenticateSessions();
})
Uff! Było ich kilka, ale dotarliśmy do końca.
Mam nadzieję, że posłuży to jako przydatne źródło informacji - niektóre z nich nie są (jeszcze) w pełni udokumentowane i nie ma szybkiej strony referencyjnej.