اذهب إلى المحتوى
  • 1

كيف اعالج هذه مشكله. CSRF token mismatch

فارس محمد11

السؤال

السلام عليكم ورحمة الله وبركاته لدي مشكله في مشروع لارافل واريد مساعدتكم

كيف اعالج هذه مشكله. CSRF token mismatch

وفي middleware VerifyCsrfToken في داله handle

$this->except

في هذه array وضعت كل routes الي تعرض بيانات في datatable

رغم وضعت في صفحه الرئيسية

<meta name="csrf-token" content="{{ csrf_token() }}">

وهذه في ملف jquery

$.ajaxSetup({

headers: {

'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')

}

});

وهذه مع ajax

headers: {

'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')

تم التعديل في بواسطة فارس سعيد محمد
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

 

عندما تعمل علي local host , قد تواجه مشكلة مع الاتصالات غير الآمنة (HTTP). المشكلة تنحصر في أن متصفح Chrome يمنع إرسال بيانات حساسة عبر اتصالات غير آمنة. الفكرة الأساسية هنا هي أن عندما يكون الاتصال غير آمن باستخدام بروتوكول HTTP، يمكن للمتصفح منع إرسال بيانات حساسة مثل كلمات المرور أو المعلومات الشخصية. ومع ذلك، عندما يتم رفع الموقع إلى الخادم باستخدام الاتصال المؤمّن (HTTPS)، فإن هذه المشكلة تحل بسبب الطريقة التي يتم بها تشفير الاتصال وتأمينه من خلال شهادات SSL/TLS

حل هذه المكشله اذا كنت لا تريد انت ظهر معاك يجب وضع كومنت علي هذه الكود 


\App\Http\Middleware\VerifyCsrfToken::class
web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
// \App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\HandleInertiaRequests::class,
\Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class,
],


ستجده داخل هذه المسار App/ http/kernel..php وعند الرفع علي الاستضافه يجب حذفه 

و الافضل لمنع حدوث هذه المشاكل  ان تكتب داخل كل form هذه الكود 
 

{{ csrf_token() }}

مثال 
 

<form method="POST" action="/submit">
    {{ csrf_token() }}
    <div class="mb-3">
        <label for="name" class="form-label">الاسم</label>
        <input type="text" class="form-control" id="name" name="name">
    </div>
    <div class="mb-3">
        <label for="email" class="form-label">البريد الإلكتروني</label>
        <input type="email" class="form-control" id="email" name="email">
    </div>
    <button type="submit" class="btn btn-primary">إرسال</button>
</form>

في هذا المثال، تم استخدام @csrf داخل النموذج لتضمين رمز الرمز الأمني CSRF. عندما يتم عرض الصفحة، سيقوم Laravel تلقائياً بتوليد رمز CSRF وإضافته إلى النموذج كحقل مخفي. عندما يتم إرسال النموذج، سيقوم Laravel بفحص رمز CSRF والتأكد من أنه متطابق مع القيمة الموجودة في الجلسة، وإلا فإنه سيرفض الطلب.

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1
بتاريخ 1 دقيقة مضت قال فارس سعيد محمد:

المشكله حلت عندما وضعت كومنت ولاكن هل هذه لن يوؤثر علي الامان

سيؤثر بطبع ولاكن كما ذكرت عند الرفع علي السيرفر يجب حذف الكومنت من الكود وسيعمل طبيعي جدا او اتباع الخطوات التي ذكرتها لك

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

وعليكم السلام ورحمة الله وبركاته.

إن ال csrf token هو token مخصص للعنواين التى تقوم باضافة او تعديل او حذف بيانات (POST,PUT,PATCH,DELETE)

لكن العناوين الخاصة باحضار الصفحات او البيانات (GET) لا تحتاج الى csrf token  .

حيث أن ال csrf token هو مخصص للتاكد من الشخص الذى قام بارسال هذا الطلب هو من على موقعك وليس من اى مكان اخر للحفاظ على امان البيانات  .

لذلك يجب عليك ان تجعل كل الroutes الخاصة بال datatable هى من نوع GET وليس POST.

وهل يمكنك ارسال ال route الخاص بال datatable وايضا كود ال ajax كاملا 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 ساعة قال Taha Khalid:

 

عندما تعمل علي local host , قد تواجه مشكلة مع الاتصالات غير الآمنة (HTTP). المشكلة تنحصر في أن متصفح Chrome يمنع إرسال بيانات حساسة عبر اتصالات غير آمنة. الفكرة الأساسية هنا هي أن عندما يكون الاتصال غير آمن باستخدام بروتوكول HTTP، يمكن للمتصفح منع إرسال بيانات حساسة مثل كلمات المرور أو المعلومات الشخصية. ومع ذلك، عندما يتم رفع الموقع إلى الخادم باستخدام الاتصال المؤمّن (HTTPS)، فإن هذه المشكلة تحل بسبب الطريقة التي يتم بها تشفير الاتصال وتأمينه من خلال شهادات SSL/TLS

حل هذه المكشله اذا كنت لا تريد انت ظهر معاك يجب وضع كومنت علي هذه الكود 


\App\Http\Middleware\VerifyCsrfToken::class
web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
// \App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\HandleInertiaRequests::class,
\Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class,
],


ستجده داخل هذه المسار App/ http/kernel..php وعند الرفع علي الاستضافه يجب حذفه 

و الافضل لمنع حدوث هذه المشاكل  ان تكتب داخل كل form هذه الكود 
 

{{ csrf_token() }}

مثال 
 

<form method="POST" action="/submit">
    {{ csrf_token() }}
    <div class="mb-3">
        <label for="name" class="form-label">الاسم</label>
        <input type="text" class="form-control" id="name" name="name">
    </div>
    <div class="mb-3">
        <label for="email" class="form-label">البريد الإلكتروني</label>
        <input type="email" class="form-control" id="email" name="email">
    </div>
    <button type="submit" class="btn btn-primary">إرسال</button>
</form>

في هذا المثال، تم استخدام @csrf داخل النموذج لتضمين رمز الرمز الأمني CSRF. عندما يتم عرض الصفحة، سيقوم Laravel تلقائياً بتوليد رمز CSRF وإضافته إلى النموذج كحقل مخفي. عندما يتم إرسال النموذج، سيقوم Laravel بفحص رمز CSRF والتأكد من أنه متطابق مع القيمة الموجودة في الجلسة، وإلا فإنه سيرفض الطلب.

 

المشكله حلت عندما وضعت كومنت ولاكن هل هذه لن يوؤثر علي الامان

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال Taha Khalid:

سيؤثر بطبع ولاكن كما ذكرت عند الرفع علي السيرفر يجب حذف الكومنت من الكود وسيعمل طبيعي جدا او اتباع الخطوات التي ذكرتها لك

شكرا لك

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...