Kirolos Nagy2 نشر 29 ديسمبر 2021 أرسل تقرير نشر 29 ديسمبر 2021 1- ازاي لا اعتمد علي localStorage في الاحتفاظ بالبيانات لان ممكن اي شخص يغير في البيانات ويعطل الموقع مثال ال token و id لو غيرتهم وجيت تنشر منتج او تدوينه هيجيب خطأ ازاي احل المشكله ديه فهل في طريقه اقدر اخزن بيانات علي المتصفح بدون المستخدم ان يعدل عليها 1 اقتباس
1 Mohammad Al Eik نشر 29 ديسمبر 2021 أرسل تقرير نشر 29 ديسمبر 2021 نعم بإمكان المستخدم التعديل على الكوكيز لكن ميزتها عن ال local storage هي العمر الإفتراضي للقيمة. أما عن أنك تقوم بتعديل الكوكيز فيتعطل الموقع.. هذا لن يحدث , بسبب عملية المصادقة التي تتم بواسطة ال token , سوق أوضح لك الفكرة كالأتي: عندما تسجل دخولك إلى موقع مستقل يعطي المخدم token يتم تخزينه في المتصفح في ال cookies وهذا التوكين عبارة بجمع عدة بيانات وتشفيرها وأي تعديل على هذا التوكين من قبل المستخدم سوف تفشل عملية المصادقة بين المخدم والمستخدم ولن يعود بإمكانه القيام العمليات داخل الموقع. أي ان ممكن ان يتوقف الموقع عن العمل بالنسبة اليك أما عند باقي المستخدمين لن يحدث شيئ كهذا. 3 اقتباس
0 Mohammad Al Eik نشر 29 ديسمبر 2021 أرسل تقرير نشر 29 ديسمبر 2021 بإمكانك تخزين المعلومات ك 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 1 اقتباس
0 Kirolos Nagy2 نشر 29 ديسمبر 2021 الكاتب أرسل تقرير نشر 29 ديسمبر 2021 بتاريخ 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 اقتباس
0 شرف الدين حفني نشر 29 ديسمبر 2021 أرسل تقرير نشر 29 ديسمبر 2021 عندما تقوم بإستخدام الtoken يمكنك جعلها من النوع JWT وبالتالي تقوم بإضافة كلمة سر إلى التوكين عند توليده من جهة الخادم وبالتالي عندما يقوم العميل بإرساله يقوم الخادم بالتأكد من صحته عبر الدالة verify , على سبيل المثال إن كنت تستخدم كلمة سر secret يمكنك التحقق من أن التوكين لم يتم التلاعب بها بالnode js عبر الشفرة التالية JWT.verify(token,'secret') .then(()=>doSomething()) .catch(err=>handleError(err)) إن كان التوكين تم التلاعب به سيتم إلقاء error وإستدعاء الدالة catch 1 اقتباس
-1 بلال زيادة نشر 29 ديسمبر 2021 أرسل تقرير نشر 29 ديسمبر 2021 يمكنك استخدام الجلسات 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 اقتباس
السؤال
Kirolos Nagy2
1- ازاي لا اعتمد علي localStorage في الاحتفاظ بالبيانات لان ممكن اي شخص يغير في البيانات ويعطل الموقع
مثال ال token و id
لو غيرتهم وجيت تنشر منتج او تدوينه هيجيب خطأ ازاي احل المشكله ديه
فهل في طريقه اقدر اخزن بيانات علي المتصفح بدون المستخدم ان يعدل عليها
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.