ਲੇਖ

ਲਾਰਵੇਲ ਵੈੱਬ ਸੁਰੱਖਿਆ: ਕਰਾਸ-ਸਾਈਟ ਬੇਨਤੀ ਜਾਅਲਸਾਜ਼ੀ (CSRF) ਕੀ ਹੈ?

ਇਸ ਲਾਰਵੇਲ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਅਸੀਂ ਵੈੱਬ ਸੁਰੱਖਿਆ ਬਾਰੇ ਗੱਲ ਕਰਦੇ ਹਾਂ ਅਤੇ ਇੱਕ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਕ੍ਰਾਸ-ਸਾਈਟ ਬੇਨਤੀ ਜਾਅਲਸਾਜ਼ੀ ਜਾਂ CSRF ਹਮਲਿਆਂ ਤੋਂ ਕਿਵੇਂ ਸੁਰੱਖਿਅਤ ਕਰਨਾ ਹੈ।

CSRF ਇੱਕ ਹਮਲਾਵਰ ਦੁਆਰਾ ਕੀਤੀ ਗਈ ਇੱਕ ਖਤਰਨਾਕ ਗਤੀਵਿਧੀ ਹੈ, ਜੋ ਇੱਕ ਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਦੀ ਤਰਫੋਂ ਕਾਰਵਾਈਆਂ ਕਰਦਾ ਹੈ, ਵੈੱਬ ਸੁਰੱਖਿਆ ਲਈ ਨੁਕਸਾਨਦੇਹ ਹੈ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਲਾਰਵੇਲ ਇਸ ਕਿਸਮ ਦੀ ਕਮਜ਼ੋਰੀ ਨੂੰ ਰੋਕਣ ਲਈ ਸਾਧਨ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

CSRF ਕੀ ਹੈ?

CSRF ਹਮਲੇ ਉਪਭੋਗਤਾ ਸੈਸ਼ਨਾਂ ਨੂੰ ਹਾਈਜੈਕ ਕਰਦਾ ਹੈ। ਉਹ ਉਪਭੋਗਤਾ ਦੀ ਜਾਣਕਾਰੀ ਤੋਂ ਬਿਨਾਂ ਲੁਕਵੇਂ ਫਾਰਮ ਟੈਗਸ ਜਾਂ ਖਤਰਨਾਕ URL (ਚਿੱਤਰਾਂ ਜਾਂ ਲਿੰਕਾਂ) ਦੁਆਰਾ ਬੇਨਤੀ ਦਰਜ ਕਰਨ ਲਈ ਉਪਭੋਗਤਾ ਨੂੰ ਧੋਖਾ ਦੇ ਕੇ ਅਜਿਹਾ ਕਰਦੇ ਹਨ।

ਇਹ ਹਮਲਾ ਉਪਭੋਗਤਾ ਸੈਸ਼ਨ ਦੀ ਸਥਿਤੀ, ਡੇਟਾ ਲੀਕ ਵਿੱਚ ਤਬਦੀਲੀ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਕਈ ਵਾਰ ਹੈਕਰ ਇੱਕ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਅੰਤਮ ਉਪਭੋਗਤਾ ਡੇਟਾ ਨੂੰ ਹੇਰਾਫੇਰੀ ਕਰ ਸਕਦੇ ਹਨ।

ਉਪਰੋਕਤ ਚਿੱਤਰ ਇੱਕ ਦ੍ਰਿਸ਼ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜਿੱਥੇ ਵੈੱਬ ਸੁਰੱਖਿਆ ਦੀ ਉਲੰਘਣਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਪੀੜਤ ਇੱਕ ਲਿੰਕ (ਪ੍ਰਾਪਤ) ਤੇ ਕਲਿਕ ਕਰਕੇ, ਇੱਕ ਵੈਬਸਾਈਟ ਸਰਵਰ ਨੂੰ ਇੱਕ ਬੇਨਤੀ ਭੇਜ ਕੇ ਇੱਕ ਬੇਨਤੀ ਭੇਜਦਾ ਹੈ ਜੋ ਹੈਕਰ ਦੁਆਰਾ ਲੋੜੀਂਦੇ ਪ੍ਰਭਾਵ ਪੈਦਾ ਕਰੇਗਾ, ਜੋ ਵੈਬਸਾਈਟ ਸਰਵਰ ਨੂੰ ਐਕਸੈਸ ਕਰਨ ਅਤੇ ਹੇਰਾਫੇਰੀ ਕਰਨ ਲਈ ਉਪਯੋਗੀ ਜਾਣਕਾਰੀ ਦੇ ਕਬਜ਼ੇ ਵਿੱਚ ਆਉਂਦਾ ਹੈ।

CSRF ਬੇਨਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਰੋਕਿਆ ਜਾਵੇ

ਨੂੰ ਸੁਧਾਰਨ ਲਈ ਸੁਰੱਖਿਆ ਤੁਹਾਡੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦਾ ਵੈੱਬ, ਹਰੇਕ ਉਪਭੋਗਤਾ ਸੈਸ਼ਨ ਵਿੱਚ, Laravel ਸੁਰੱਖਿਅਤ ਟੋਕਨ ਤਿਆਰ ਕਰਦਾ ਹੈ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਵਰਤਦਾ ਹੈ ਕਿ ਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਬੇਨਤੀ ਕਰਨ ਵਾਲਾ ਹੈ।

ਕਿਉਂਕਿ ਇਹ ਟੋਕਨ ਹਰ ਵਾਰ ਜਦੋਂ ਇੱਕ ਉਪਭੋਗਤਾ ਸੈਸ਼ਨ ਦੁਬਾਰਾ ਤਿਆਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਬਦਲਦਾ ਹੈ, ਇੱਕ ਹਮਲਾਵਰ ਇਸ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ।

ਜਦੋਂ ਵੀ ਸਰਵਰ ਸਾਈਡ (ਬੈਕਐਂਡ) ਵਰਗੇ ਉਪਭੋਗਤਾਵਾਂ ਦੀ ਜਾਣਕਾਰੀ ਨੂੰ ਬਦਲਣ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਜਾਂਦੀ ਹੈ POSTPUTPATCHDELETE, ਤੁਹਾਨੂੰ ਨਿਰਦੇਸ਼ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ @csrf ਬੇਨਤੀ ਫਾਰਮ ਵਿੱਚ blade HTML. ਦ @csrf ਇਸ ਲਈ ਇਹ ਇੱਕ ਨਿਰਦੇਸ਼ ਹੈ Blade ਐਪਲੀਕੇਸ਼ਨ ਦੁਆਰਾ ਪ੍ਰਮਾਣਿਤ ਇੱਕ ਲੁਕਿਆ ਹੋਇਆ ਟੋਕਨ ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।

ਨਿਰਦੇਸ਼ Blade Laravel ਟੈਂਪਲੇਟ ਇੰਜਣ ਦੇ ਅੰਦਰ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਸੰਟੈਕਸ ਹੈ ਬਲੇਡ . ਇੱਕ ਫਾਈਲ ਬਣਾਉਣ ਲਈ 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 ਇਹ ਵੈੱਬ ਦੇ ਅੰਦਰ ਬੇਨਤੀਆਂ ਲਈ ਸ਼ੁਰੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, APIs ਨਾਲ ਸਬੰਧਤ ਨਹੀਂ।

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

VerifyCsrfToken ਮਿਡਲਵੇਅਰ ਕਲਾਸ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ Illuminate\Foundation\Http\Middleware\VerifyCsrfToken, ਭਾਵ CSRF ਵੈਰੀਫਿਕੇਸ਼ਨ ਹੈ defiਕਲਾਸ ਦੇ ਅੰਦਰ ਰਾਤ.

ਆਓ ਇਹ ਪਤਾ ਕਰਨ ਲਈ ਡੂੰਘਾਈ ਨਾਲ ਖੋਦਾਈ ਕਰੀਏ ਕਿ ਲਾਰਵੇਲ 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

ਇਨੋਵੇਸ਼ਨ ਨਿਊਜ਼ਲੈਟਰ
ਨਵੀਨਤਾ ਬਾਰੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਖ਼ਬਰਾਂ ਨੂੰ ਨਾ ਭੁੱਲੋ। ਉਹਨਾਂ ਨੂੰ ਈਮੇਲ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ।

ਤਾਜ਼ਾ ਲੇਖ

ਪ੍ਰਕਾਸ਼ਕ ਅਤੇ ਓਪਨਏਆਈ ਆਰਟੀਫੀਸ਼ੀਅਲ ਇੰਟੈਲੀਜੈਂਸ ਦੁਆਰਾ ਸੰਸਾਧਿਤ ਜਾਣਕਾਰੀ ਦੇ ਪ੍ਰਵਾਹ ਨੂੰ ਨਿਯਮਤ ਕਰਨ ਲਈ ਸਮਝੌਤਿਆਂ 'ਤੇ ਹਸਤਾਖਰ ਕਰਦੇ ਹਨ

ਪਿਛਲੇ ਸੋਮਵਾਰ, ਫਾਈਨੈਂਸ਼ੀਅਲ ਟਾਈਮਜ਼ ਨੇ ਓਪਨਏਆਈ ਨਾਲ ਇੱਕ ਸੌਦੇ ਦਾ ਐਲਾਨ ਕੀਤਾ। FT ਆਪਣੀ ਵਿਸ਼ਵ ਪੱਧਰੀ ਪੱਤਰਕਾਰੀ ਨੂੰ ਲਾਇਸੰਸ ਦਿੰਦਾ ਹੈ...

30 ਅਪ੍ਰੈਲ 2024

ਔਨਲਾਈਨ ਭੁਗਤਾਨ: ਇੱਥੇ ਦੱਸਿਆ ਗਿਆ ਹੈ ਕਿ ਕਿਵੇਂ ਸਟ੍ਰੀਮਿੰਗ ਸੇਵਾਵਾਂ ਤੁਹਾਨੂੰ ਹਮੇਸ਼ਾ ਲਈ ਭੁਗਤਾਨ ਕਰਦੀਆਂ ਹਨ

ਲੱਖਾਂ ਲੋਕ ਸਟ੍ਰੀਮਿੰਗ ਸੇਵਾਵਾਂ ਲਈ ਭੁਗਤਾਨ ਕਰਦੇ ਹਨ, ਮਹੀਨਾਵਾਰ ਗਾਹਕੀ ਫੀਸ ਅਦਾ ਕਰਦੇ ਹਨ। ਇਹ ਆਮ ਰਾਏ ਹੈ ਕਿ ਤੁਸੀਂ…

29 ਅਪ੍ਰੈਲ 2024

Veeam ਵਿੱਚ ਸੁਰੱਖਿਆ ਤੋਂ ਲੈ ਕੇ ਜਵਾਬ ਅਤੇ ਰਿਕਵਰੀ ਤੱਕ, ਰੈਨਸਮਵੇਅਰ ਲਈ ਸਭ ਤੋਂ ਵੱਧ ਵਿਆਪਕ ਸਮਰਥਨ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ

Veeam ਦੁਆਰਾ Coveware ਸਾਈਬਰ ਜ਼ਬਰਦਸਤੀ ਘਟਨਾ ਪ੍ਰਤੀਕਿਰਿਆ ਸੇਵਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਨਾ ਜਾਰੀ ਰੱਖੇਗਾ। ਕੋਵਵੇਅਰ ਫੋਰੈਂਸਿਕ ਅਤੇ ਉਪਚਾਰ ਸਮਰੱਥਾਵਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰੇਗਾ...

23 ਅਪ੍ਰੈਲ 2024

ਹਰੀ ਅਤੇ ਡਿਜੀਟਲ ਕ੍ਰਾਂਤੀ: ਕਿਵੇਂ ਭਵਿੱਖਬਾਣੀ ਰੱਖ-ਰਖਾਅ ਤੇਲ ਅਤੇ ਗੈਸ ਉਦਯੋਗ ਨੂੰ ਬਦਲ ਰਿਹਾ ਹੈ

ਪੂਰਵ-ਅਨੁਮਾਨਤ ਰੱਖ-ਰਖਾਅ ਪਲਾਂਟ ਪ੍ਰਬੰਧਨ ਲਈ ਇੱਕ ਨਵੀਨਤਾਕਾਰੀ ਅਤੇ ਕਿਰਿਆਸ਼ੀਲ ਪਹੁੰਚ ਦੇ ਨਾਲ, ਤੇਲ ਅਤੇ ਗੈਸ ਸੈਕਟਰ ਵਿੱਚ ਕ੍ਰਾਂਤੀ ਲਿਆ ਰਹੀ ਹੈ।…

22 ਅਪ੍ਰੈਲ 2024

ਆਪਣੀ ਭਾਸ਼ਾ ਵਿੱਚ ਇਨੋਵੇਸ਼ਨ ਪੜ੍ਹੋ

ਇਨੋਵੇਸ਼ਨ ਨਿਊਜ਼ਲੈਟਰ
ਨਵੀਨਤਾ ਬਾਰੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਖ਼ਬਰਾਂ ਨੂੰ ਨਾ ਭੁੱਲੋ। ਉਹਨਾਂ ਨੂੰ ਈਮੇਲ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ।

ਸਾਡੇ ਨਾਲ ਪਾਲਣਾ