ಲೇಖನಗಳು

ಲಾರಾವೆಲ್ ವೆಬ್ ಸೆಕ್ಯುರಿಟಿ: ಕ್ರಾಸ್-ಸೈಟ್ ರಿಕ್ವೆಸ್ಟ್ ಫೋರ್ಜರಿ (CSRF) ಎಂದರೇನು?

ಈ Laravel ಟ್ಯುಟೋರಿಯಲ್ ನಲ್ಲಿ ನಾವು ವೆಬ್ ಸೆಕ್ಯುರಿಟಿ ಮತ್ತು ಕ್ರಾಸ್-ಸೈಟ್ ರಿಕ್ವೆಸ್ಟ್ ಫೋರ್ಜರಿ ಅಥವಾ CSRF ದಾಳಿಯಿಂದ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೇಗೆ ರಕ್ಷಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ಮಾತನಾಡುತ್ತೇವೆ.

CSRF ಎನ್ನುವುದು ಆಕ್ರಮಣಕಾರರಿಂದ ನಿರ್ವಹಿಸಲ್ಪಡುವ ದುರುದ್ದೇಶಪೂರಿತ ಚಟುವಟಿಕೆಯಾಗಿದ್ದು, ಅವರು ಅಧಿಕೃತ ಬಳಕೆದಾರರ ಪರವಾಗಿ ಕ್ರಿಯೆಗಳನ್ನು ಮಾಡುತ್ತಾರೆ, ವೆಬ್ ಭದ್ರತೆಗೆ ಹಾನಿಕಾರಕವಾಗಿದೆ. ಅದೃಷ್ಟವಶಾತ್, ಲಾರಾವೆಲ್ ಈ ರೀತಿಯ ದುರ್ಬಲತೆಯನ್ನು ತಡೆಯಲು ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.

CSRF ಎಂದರೇನು?

CSRF ದಾಳಿಯು ಬಳಕೆದಾರರ ಸೆಷನ್‌ಗಳನ್ನು ಹೈಜಾಕ್ ಮಾಡುತ್ತದೆ. ಬಳಕೆದಾರರ ಅರಿವಿಲ್ಲದೆ ಗುಪ್ತ ಫಾರ್ಮ್ ಟ್ಯಾಗ್‌ಗಳು ಅಥವಾ ದುರುದ್ದೇಶಪೂರಿತ URL ಗಳ (ಚಿತ್ರಗಳು ಅಥವಾ ಲಿಂಕ್‌ಗಳು) ಮೂಲಕ ವಿನಂತಿಯನ್ನು ಸಲ್ಲಿಸಲು ಬಳಕೆದಾರರನ್ನು ಮೋಸಗೊಳಿಸುವ ಮೂಲಕ ಅವರು ಇದನ್ನು ಮಾಡುತ್ತಾರೆ.

ಈ ದಾಳಿಯು ಬಳಕೆದಾರರ ಸೆಶನ್ ಸ್ಥಿತಿಯಲ್ಲಿ ಬದಲಾವಣೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಡೇಟಾ ಸೋರಿಕೆಗಳು ಮತ್ತು ಕೆಲವೊಮ್ಮೆ ಹ್ಯಾಕರ್‌ಗಳು ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಅಂತಿಮ ಬಳಕೆದಾರರ ಡೇಟಾವನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಬಹುದು.

ಮೇಲಿನ ಚಿತ್ರವು ವೆಬ್ ಭದ್ರತೆಯನ್ನು ಉಲ್ಲಂಘಿಸುವ ಸನ್ನಿವೇಶವನ್ನು ವಿವರಿಸುತ್ತದೆ. ಬಲಿಪಶು ಲಿಂಕ್ (ಸ್ವೀಕರಿಸಲಾಗಿದೆ) ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತಾರೆ, ವೆಬ್‌ಸೈಟ್ ಸರ್ವರ್‌ಗೆ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತಾರೆ, ಅದು ಹ್ಯಾಕರ್‌ನಿಂದ ಬಯಸಿದ ಪರಿಣಾಮಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ, ಅವರು ವೆಬ್‌ಸೈಟ್ ಸರ್ವರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಮತ್ತು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಲು ಉಪಯುಕ್ತವಾದ ಮಾಹಿತಿಯನ್ನು ಸ್ವಾಧೀನಪಡಿಸಿಕೊಳ್ಳುತ್ತಾರೆ.

CSRF ವಿನಂತಿಗಳನ್ನು ತಡೆಯುವುದು ಹೇಗೆ

ಸುಧಾರಿಸಲು ಭದ್ರತಾ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ವೆಬ್, ಪ್ರತಿ ಬಳಕೆದಾರ ಸೆಶನ್‌ನಲ್ಲಿ, ಲಾರಾವೆಲ್ ಸುರಕ್ಷಿತ ಟೋಕನ್‌ಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ, ಇದು ದೃಢೀಕೃತ ಬಳಕೆದಾರರೇ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ವಿನಂತಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಬಳಸುತ್ತದೆ.

ಈ ಟೋಕನ್ ಪ್ರತಿ ಬಾರಿ ಬಳಕೆದಾರರ ಸೆಶನ್ ಅನ್ನು ಮರುಸೃಷ್ಟಿಸಿದಾಗ ಬದಲಾಗುವುದರಿಂದ, ಆಕ್ರಮಣಕಾರರು ಅದನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.

ಸರ್ವರ್ ಸೈಡ್ (ಬ್ಯಾಕೆಂಡ್) ನಲ್ಲಿ ಬಳಕೆದಾರರ ಮಾಹಿತಿಯನ್ನು ಬದಲಾಯಿಸಲು ವಿನಂತಿಯು ಇದ್ದಾಗಲೆಲ್ಲಾ POSTPUTPATCHDELETE, ನೀವು ನಿರ್ದೇಶನವನ್ನು ಒಳಗೊಂಡಿರಬೇಕು @csrf ವಿನಂತಿಯ ರೂಪದಲ್ಲಿ blade HTML. ದಿ @csrf ಆದ್ದರಿಂದ ಇದು ನಿರ್ದೇಶನವಾಗಿದೆ Blade ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಮೌಲ್ಯೀಕರಿಸಲಾದ ಗುಪ್ತ ಟೋಕನ್ ಅನ್ನು ರಚಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.

ನಿರ್ದೇಶನ Blade ಲಾರಾವೆಲ್ ಟೆಂಪ್ಲೇಟ್ ಎಂಜಿನ್‌ನಲ್ಲಿ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಬ್ಲೇಡ್ . ಫೈಲ್ ರಚಿಸಲು blade ನೀವು ಅದಕ್ಕೆ ಹೆಸರನ್ನು ನೀಡಬೇಕು - ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ ರೂಪದಲ್ಲಿ - ಬ್ಲೇಡ್‌ನ ವಿಸ್ತರಣೆಯ ನಂತರ. ಇದರರ್ಥ ಫೈಲ್ ಹೆಸರನ್ನು ಹೊಂದಿರುತ್ತದೆ form.blade.php.

ಫೈಲ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ blade ವೆಬ್ ಪುಟದಲ್ಲಿ ಬಳಕೆದಾರರಿಗೆ ವೀಕ್ಷಣೆಗಳನ್ನು ಸಲ್ಲಿಸಲು. ಒಂದೆರಡು ಪೂರ್ವ ನಿರ್ದೇಶನಗಳಿವೆdefiನೈಟ್ ಅಥವಾ ಬ್ಲೇಡ್ ಶಾರ್ಟ್‌ಹ್ಯಾಂಡ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ನೀವು ಬಳಸಬಹುದು. ಉದಾಹರಣೆಗೆ, @if ಒಂದು ಸ್ಥಿತಿಯನ್ನು ತೃಪ್ತಿಪಡಿಸಲಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ, @empty ದಾಖಲೆಗಳು ಖಾಲಿಯಾಗಿಲ್ಲವೇ ಎಂದು ಪರಿಶೀಲಿಸಿ @auth ಬಳಕೆದಾರನು ದೃಢೀಕರಿಸಲ್ಪಟ್ಟಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಹೀಗೆ.

ಆದರೆ ನಿರ್ದೇಶನಕ್ಕೆ ಹಿಂತಿರುಗಿ ನೋಡೋಣ @csrf. ನೀವು ಅದನ್ನು ಹೇಗೆ ಬಳಸುತ್ತೀರಿ ಎಂಬುದು ಇಲ್ಲಿದೆ:

<form method="POST" action="{{route('pay')}}">

    @csrf
    
</form>

Laravel ನ ಹಿಂದಿನ ಆವೃತ್ತಿಗಳು ವಿಭಿನ್ನ ಸೆಟಪ್ ಅನ್ನು ಹೊಂದಿದ್ದವು: ಎರಡೂ ಕೆಲಸ ಮಾಡುತ್ತವೆ ಮತ್ತು ಒಂದೇ ಕೆಲಸವನ್ನು ಮಾಡುತ್ತವೆ.

ನಾವೀನ್ಯತೆ ಸುದ್ದಿಪತ್ರ
ನಾವೀನ್ಯತೆಯ ಪ್ರಮುಖ ಸುದ್ದಿಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳಬೇಡಿ. ಇಮೇಲ್ ಮೂಲಕ ಅವುಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸೈನ್ ಅಪ್ ಮಾಡಿ.
<form method="POST" action="{{route('pay')}}">
    
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
    
</form>

ಸಲ್ಲಿಸಿದ ಫಾರ್ಮ್ ವಿನಂತಿಯಲ್ಲಿ CSRF ಟೋಕನ್ ಕಾಣೆಯಾದಾಗ ಅಥವಾ ಅದು ಅಮಾನ್ಯವಾಗಿ ಕಂಡುಬಂದರೆ, Laravel 419 ಸ್ಥಿತಿ ಕೋಡ್‌ನೊಂದಿಗೆ “ಪುಟ ಅವಧಿ ಮೀರಿದೆ” ದೋಷ ಸಂದೇಶವನ್ನು ಎಸೆಯುತ್ತದೆ.

CSRF ಪರಿಶೀಲನೆ ಹೇಗೆ ಮತ್ತು ಎಲ್ಲಿ ನಡೆಯುತ್ತದೆ

ಮಿಡಲ್ವೇರ್ VerifyCsrfToken Laravel ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ CSRF ಪರಿಶೀಲನೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ದಿ middleware ನಲ್ಲಿ ನೋಂದಾಯಿಸಲಾಗಿದೆ Kernel.php ಮತ್ತು ಡೈರೆಕ್ಟರಿಯಲ್ಲಿದೆ app/Http/Middleware. ಇದರರ್ಥ ದಿ middleware ಇದು API ಗಳಿಗೆ ಸಂಬಂಧಿಸದೆ, ವೆಬ್‌ನಲ್ಲಿನ ವಿನಂತಿಗಳಿಗಾಗಿ ಪ್ರಚೋದಿಸಲ್ಪಡುತ್ತದೆ.

protected $middlewareGroups = [
        'web' => [
           .
           .
           .
           .
           .
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],
    ];

VerifyCsrfToken ಮಿಡಲ್‌ವೇರ್ ವರ್ಗವನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ Illuminate\Foundation\Http\Middleware\VerifyCsrfToken, ಅಂದರೆ CSRF ಪರಿಶೀಲನೆ ಆಗಿದೆ defiತರಗತಿಯೊಳಗೆ ರಾತ್ರಿ.

Laravel CSRF ಪರಿಶೀಲನೆಯನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯಲು ಆಳವಾಗಿ ಅಗೆಯೋಣ.

ತರಗತಿಯ ಒಳಗೆ, ನಾವು ಕಾರ್ಯವನ್ನು ಹೊಂದಿದ್ದೇವೆ tokensMatch.

protected function tokensMatch($request)
{
     $token = $this->getTokenFromRequest($request);

     return is_string($request->session()->token()) &&
            is_string($token) &&
            hash_equals($request->session()->token(), $token);
}

ಸೆಷನ್ ಮತ್ತು ಇನ್‌ಪುಟ್ CSRF ಟೋಕನ್‌ಗಳು ಹೊಂದಿಕೆಯಾಗುತ್ತವೆಯೇ ಎಂಬುದನ್ನು ಕೋಡ್ ನಿರ್ಧರಿಸುತ್ತದೆ.

ಕಾರ್ಯವು ಎರಡು ಕೆಲಸಗಳನ್ನು ಮಾಡುತ್ತದೆ:

  1. ಪಡೆಯಿರಿ $this->getTokenFromRequest ಗುಪ್ತ ಕ್ಷೇತ್ರ ಅಥವಾ ವಿನಂತಿಯ ಹೆಡರ್ ಮೂಲಕ ಲಗತ್ತಿಸಲಾದ ಒಳಬರುವ ವಿನಂತಿಯಿಂದ ಟೋಕನ್. ಟೋಕನ್ ಅನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ನಂತರ ಟೋಕನ್ ವೇರಿಯೇಬಲ್‌ಗೆ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ.
protected function getTokenFromRequest($request)
{
    $token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');

    if (! $token && $header = $request->header('X-XSRF-TOKEN')) {
        try {
            $token = CookieValuePrefix::remove($this->encrypter->decrypt($header, static::serialized()));
        } catch (DecryptException $e) {
            $token = '';
            }
    }

    return $token;
}

ಕೋಡ್‌ನಲ್ಲಿ ಅದು ಹೆಡರ್‌ನಿಂದ ಟೋಕನ್ ಪಡೆಯುತ್ತದೆ

2. ವಿನಂತಿಯ ಟೋಕನ್ ಮತ್ತು ಸೆಶನ್ ಎರಡನ್ನೂ ಸ್ಟ್ರಿಂಗ್‌ಗೆ ಬಿತ್ತರಿಸಿ ಮತ್ತು ನಂತರ ಬಳಸಿ hash_equals ಎರಡೂ ತಂತಿಗಳು ಸಮಾನವಾಗಿದ್ದರೆ ಹೋಲಿಸಲು PHP ಯಲ್ಲಿ ನಿರ್ಮಿಸಲಾಗಿದೆ. ಈ ಕಾರ್ಯಾಚರಣೆಯ ಫಲಿತಾಂಶವು ಯಾವಾಗಲೂ ಇರುತ್ತದೆ bool (ನಿಜ) ಅಥವಾ (ಸುಳ್ಳು) .

Ercole Palmeri

ನಾವೀನ್ಯತೆ ಸುದ್ದಿಪತ್ರ
ನಾವೀನ್ಯತೆಯ ಪ್ರಮುಖ ಸುದ್ದಿಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳಬೇಡಿ. ಇಮೇಲ್ ಮೂಲಕ ಅವುಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸೈನ್ ಅಪ್ ಮಾಡಿ.

ಇತ್ತೀಚಿನ ಲೇಖನಗಳು

ಮಕ್ಕಳಿಗಾಗಿ ಬಣ್ಣ ಪುಟಗಳ ಪ್ರಯೋಜನಗಳು - ಎಲ್ಲಾ ವಯಸ್ಸಿನವರಿಗೆ ಮ್ಯಾಜಿಕ್ ಜಗತ್ತು

ಬಣ್ಣಗಳ ಮೂಲಕ ಉತ್ತಮವಾದ ಮೋಟಾರು ಕೌಶಲ್ಯಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದು ಬರವಣಿಗೆಯಂತಹ ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಕೌಶಲ್ಯಗಳಿಗೆ ಮಕ್ಕಳನ್ನು ಸಿದ್ಧಪಡಿಸುತ್ತದೆ. ಬಣ್ಣ ಹಾಕಲು...

2 ಮೇ 2024

ಭವಿಷ್ಯ ಇಲ್ಲಿದೆ: ಶಿಪ್ಪಿಂಗ್ ಉದ್ಯಮವು ಜಾಗತಿಕ ಆರ್ಥಿಕತೆಯನ್ನು ಹೇಗೆ ಕ್ರಾಂತಿಗೊಳಿಸುತ್ತಿದೆ

ನೌಕಾ ವಲಯವು ನಿಜವಾದ ಜಾಗತಿಕ ಆರ್ಥಿಕ ಶಕ್ತಿಯಾಗಿದೆ, ಇದು 150 ಶತಕೋಟಿ ಮಾರುಕಟ್ಟೆಯತ್ತ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿದೆ...

1 ಮೇ 2024

ಆರ್ಟಿಫಿಶಿಯಲ್ ಇಂಟೆಲಿಜೆನ್ಸ್ ಮೂಲಕ ಸಂಸ್ಕರಿಸಿದ ಮಾಹಿತಿಯ ಹರಿವನ್ನು ನಿಯಂತ್ರಿಸಲು ಪ್ರಕಾಶಕರು ಮತ್ತು OpenAI ಒಪ್ಪಂದಗಳಿಗೆ ಸಹಿ ಹಾಕುತ್ತಾರೆ

ಕಳೆದ ಸೋಮವಾರ, ಫೈನಾನ್ಶಿಯಲ್ ಟೈಮ್ಸ್ ಓಪನ್ ಎಐ ಜೊತೆ ಒಪ್ಪಂದವನ್ನು ಪ್ರಕಟಿಸಿತು. FT ತನ್ನ ವಿಶ್ವ ದರ್ಜೆಯ ಪತ್ರಿಕೋದ್ಯಮಕ್ಕೆ ಪರವಾನಗಿ ನೀಡುತ್ತದೆ…

30 ಏಪ್ರಿಲ್ 2024

ಆನ್‌ಲೈನ್ ಪಾವತಿಗಳು: ಸ್ಟ್ರೀಮಿಂಗ್ ಸೇವೆಗಳು ನಿಮ್ಮನ್ನು ಶಾಶ್ವತವಾಗಿ ಪಾವತಿಸುವಂತೆ ಮಾಡುವುದು ಹೇಗೆ ಎಂಬುದು ಇಲ್ಲಿದೆ

ಲಕ್ಷಾಂತರ ಜನರು ಸ್ಟ್ರೀಮಿಂಗ್ ಸೇವೆಗಳಿಗೆ ಪಾವತಿಸುತ್ತಾರೆ, ಮಾಸಿಕ ಚಂದಾದಾರಿಕೆ ಶುಲ್ಕವನ್ನು ಪಾವತಿಸುತ್ತಾರೆ. ನೀವು ಎಂಬುದು ಸಾಮಾನ್ಯ ಅಭಿಪ್ರಾಯ…

29 ಏಪ್ರಿಲ್ 2024

ನಿಮ್ಮ ಭಾಷೆಯಲ್ಲಿ ಹೊಸತನವನ್ನು ಓದಿ

ನಾವೀನ್ಯತೆ ಸುದ್ದಿಪತ್ರ
ನಾವೀನ್ಯತೆಯ ಪ್ರಮುಖ ಸುದ್ದಿಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳಬೇಡಿ. ಇಮೇಲ್ ಮೂಲಕ ಅವುಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸೈನ್ ಅಪ್ ಮಾಡಿ.

ನಮ್ಮನ್ನು ಅನುಸರಿಸಿ

ಟ್ಯಾಗ್