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

السؤال

نشر

1- ازاي لا اعتمد علي localStorage   في الاحتفاظ بالبيانات لان ممكن اي شخص يغير في البيانات ويعطل الموقع

مثال ال token و id

لو غيرتهم وجيت تنشر منتج او تدوينه هيجيب خطأ ازاي احل المشكله ديه

فهل في طريقه اقدر اخزن بيانات علي المتصفح بدون المستخدم ان يعدل عليها

Recommended Posts

  • 0
نشر

بإمكانك تخزين المعلومات ك token في ال cookies (إعدادات ملفات تعريف الارتباط) 

التابع التالي يقوم بالتخزين في cookies

function setCookie(name,value,days) {
    var expires = "";
    if (days) {//هنا نحسب مدة الصلاحية لهذا التوكين تبعً لعدد الأيام التي مررناها
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));//عملية تحويل الايام إلى ميلي ثانية
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "")  + expires + "; path=/";//هنا عملية الوصول الى الكوكيز من المتصفح وتخزين القيم النهائية فيها
}

التابع التالي يقوم باستدعاء القيم من ال cookies

function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }//نقوم بعمليات على السترنغ
    return null;
}

وهكذا نقوم بتنفيذ التوابع

setCookie('token','1234hjk',7);

var x = getCookie('token');//نقوم بتمرير اسم المفتاح الذي نريده
if (x) {
    //استعمل التوكين هنا
}

الطريقة السابقة في حال كنت تستخدم vanilla javascript

في حال كنت تستخدم رياكت فبإمكانك إستعمال هذه المكتبة react-cookie

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Mohammad Al Eik:

بإمكانك تخزين المعلومات ك token في ال cookies (إعدادات ملفات تعريف الارتباط) 

التابع التالي يقوم بالتخزين في cookies


function setCookie(name,value,days) {
    var expires = "";
    if (days) {//هنا نحسب مدة الصلاحية لهذا التوكين تبعً لعدد الأيام التي مررناها
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));//عملية تحويل الايام إلى ميلي ثانية
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "")  + expires + "; path=/";//هنا عملية الوصول الى الكوكيز من المتصفح وتخزين القيم النهائية فيها
}

التابع التالي يقوم باستدعاء القيم من ال cookies


function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }//نقوم بعمليات على السترنغ
    return null;
}

وهكذا نقوم بتنفيذ التوابع


setCookie('token','1234hjk',7);

var x = getCookie('token');//نقوم بتمرير اسم المفتاح الذي نريده
if (x) {
    //استعمل التوكين هنا
}

الطريقة السابقة في حال كنت تستخدم vanilla javascript

في حال كنت تستخدم رياكت فبإمكانك إستعمال هذه المكتبة react-cookie

هل هكذا البيانات لا احد يقدر يغيرها

يعني مثال انا لو دخلت علي cookies موقع اكادميه حاسوب

وغيرت بيانات معينه وحاولت انشر سؤال سيحدث خطأ في الموقع لانه لا يعلم من هو ناشر السؤال

ازاي اتخطي هذه المشكله

  • -1
نشر

يمكنك استخدام الجلسات Sessions بحيث يمكنك توليد كود token و ترسله عند عملية إرسال البيانات و بالتالي يمكنك التحقق من هذا التوكن و من ثم بناءً عليه تدخل البيانات إلى قاعدة البيانات أو لا 

فمثلاً يمكنك إنشاء هذا التوكن باستخدام دالة bin2hex مثل

$_SESSION['token'] = bin2hex(random_bytes(32));

ولجعل الكود أكثر فاعلية يمكنك التأكد بأن الجلسة معرفة أو لا باستخدام if مثل

session_start();
if (empty($_SESSION['token'])) {
    $_SESSION['token'] = bin2hex(random_bytes(32));
}
$token = $_SESSION['token'];

ثم عند عملية الإرسال نتأكد من token المرسل و التوكن الذي تم حفظه في الجلسة و من ثم إذا كان نفس الشيء ندخل البيانات و إذا كان لا ، لا ندخلها. 

if (!empty($_POST['token'])) {
    if (hash_equals($_SESSION['token'], $_POST['token'])) {
         // هنا ندخل البيانات
    } else {
         كود في حالة عدم تساوي token
    }
}

 

  • 1
نشر

نعم بإمكان المستخدم التعديل على الكوكيز لكن ميزتها عن ال local storage هي العمر الإفتراضي للقيمة.

أما عن أنك تقوم بتعديل الكوكيز فيتعطل الموقع.. هذا لن يحدث , بسبب عملية المصادقة التي تتم بواسطة ال token , سوق أوضح لك الفكرة كالأتي:

عندما تسجل دخولك إلى موقع مستقل يعطي المخدم token يتم تخزينه في المتصفح في ال cookies 

وهذا التوكين عبارة بجمع عدة بيانات وتشفيرها وأي تعديل على هذا التوكين من قبل المستخدم سوف تفشل عملية المصادقة بين المخدم والمستخدم ولن يعود بإمكانه القيام العمليات داخل الموقع.

أي ان ممكن ان يتوقف الموقع عن العمل بالنسبة اليك أما عند باقي المستخدمين لن يحدث شيئ كهذا.

 

  • 0
نشر

عندما تقوم بإستخدام الtoken يمكنك جعلها من النوع JWT

وبالتالي تقوم بإضافة كلمة سر إلى التوكين عند توليده من جهة الخادم

وبالتالي عندما يقوم العميل بإرساله يقوم الخادم بالتأكد من صحته عبر الدالة verify , على سبيل المثال إن كنت تستخدم كلمة سر secret يمكنك التحقق من أن التوكين لم يتم التلاعب بها بالnode js عبر الشفرة التالية

JWT.verify(token,'secret')
  .then(()=>doSomething())
  .catch(err=>handleError(err))

إن كان التوكين تم التلاعب به سيتم إلقاء error وإستدعاء الدالة catch

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...