لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 01/22/21 في كل الموقع
-
مرحبا مروان، سيأخذ الموقع عمولة لكل عملية بيع ناجحة على الشكل التالي: اقتطاع قيمة ثابتة تساوي 0.35$ اقتطاع نسبة مئوية قدرها 3.5$ من المبلغ المتبقي كل 1$ سيقتطع منه : نطرخ 0.35$ x = 1 x = x - 0.35 x = 0.65 نحسب النسبة و نعيد طرحها من المبلغ المتبقي لتصبح y = x * 3.5 / 100 y = 0.65 *3.5 / 100 = 0.02275 x = x - y = 0.65 - 0.02275 = 0.62725 أرباحك من 1$ لمعاملة ناجحة يكون 0.62725 X هو المبلغ الذي نطبق عليه العلاقة الرياضية و y هو قيمة الخصم بنفس الطريقة .. أرباحك لمعاملة بقيمة 10$ يكون 9.31225. تعديل: على الأغلب يوفر كل مزود خدمة دفع الكتروني توثيق بكيفية حساب نسبته وربما يأخذ النسبة من المبلغ الكلي ثم يضيف القيمة الثابتة، المثال السابق يوضح العمليات الحسابية بشكل عام. بالتوفيق3 نقاط
-
يبدو العمل المستقل من المنزل حلمًا يتحقق لهؤلاء العالقين في دوامة الدوام الكامل، إلا أنه بدوره يحمل في طياته مشاكله الخاصة، الجسدية والنفسية، والتي لا تكون واضحة في البداية، وقد يشكل التعامل معها أكبر تحدٍ يواجهك كمستقل، إلا أنه يمكن الفوز به، إذا كنت ترحب ببعض التغييرات في أسلوب حياتك. بالنسبة لكاتب المقال وربما بالنسبة لك أيضًا، أكبر تحديات هي: العزلة، ونقص التمارين، والإجهاد العقلي، سيتحدث المقال عنها على حدى، وكيف يمكن التعامل معها. سلبية العمل من المنزل يخبرنا كاتب المقال عن مدى شعوره بأنه محظوظ في أول يوم بعد أن استقال من آخر عمل مكتبي له ليبدأ مسيرته كمستقل متفرغ، إذ يستيقظ المرء الساعة التاسعة صباحًا ويحضر فطورًا معدًا من القلب، ويتلذّذ بأول كوب قهوة قبل الشروع في العمل، ولا تبدأ صعوبات أسلوب الحياة الجديد هذا بالظهور إلا بعد الأسابيع الأولى القليلة. العزلة لا تشعر بقيمة القدرة على الانخراط الاجتماعي السهل أثناء قيامك بأي عمل عادي إلا عندما تبدأ العمل كمستقل، فحينما عمل صديقنا في مطبخ، كان زملاؤه يمازحون بعضهم البعض طوال اليوم، وعمل آخر جعله يجلس في مهجع محاطًا بكثير من الأشخاص الذين كان يعرفهم، إذ لا يمكنك تجنب الانخراط الاجتماعي إذا كانت حياتك تعتمد عليه. عندما بدأ صاحبنا مسيرته كمستقل، كان يمكن أن تمر أيام كاملة دون أن يحادث أحدًا إلا بالرسائل النصية أو البريد الإلكتروني أو الاتصالات الهاتفية، ومن المؤكد أن العديد منكم مر بهذا، ويمكن لهذا أن يؤثر عميقًا، ويسبب لك القلق خصوصًا إذا كنت مستقلًا يعيش وحده. يمكن لعمل كهذا أن يتسبب بجداول عمل غريبة ويوتر علاقاتنا الاجتماعية الهشة أساسًا، وقبل أن تدرك ذلك ستجد نفسك ذلك الشخص ذا اللحية الشعثاء الذي يبتاع البسكويت في منتصف الليل مرتديًا خفّين. نقص التمرن ينتج عن الجداول اليومية الغريبة عادة سيئة أخرى، نقص التمرن، حيث يمكن أن يكون جسدك رشيقًا طوال حياتك لكن تفسد ساعات الجلوس الطويلة أمام الحاسوب ذلك في سنة أو سنتين، فيمكن أن يسبب هذا مشاكل قلبية، فتجد نفسك تتعرّق أكثر من الإنسان العادي بعد الجلوس من مشية خفيفة لمدة خمس دقايق، فتكون قد عوّدت جسدك على عدم التمرن والحركة. والمعلومة الصادمة هي أن هذا شائع بين المستقلين، الذي قد يعرضون أنفسهم لخطر أكبر من أمراض القلب والأوعية الدموية إذا ظلوا ملتصقين بالحاسوب، أغلبنا غير معتاد على التمرن في المنزل، بل يرونه نشاطًا غير منزلي، فيتهمون العمل المكتبي بتسبيب المشاكل الصحية بساعات عمله الطويلة، بينما يرتكبون نفس الخطأ في عملهم المستقل. الإجهاد النفسي هذه مشكلة أقل شيوعًا بين المستقلين إلا أن هذا ليس مؤشرًا إيجابيًا، فالسبب هو بيئة العمل الغريبة التي تسمح لك باستخدام فيس بوك أو Reddit أو أي مصدر تشتيت تختاره وتضيع وقتك به بعيدًا عن الضغط، فكأننا نستبدل مشكلة بأخرى. لكن تجنب الإجهاد العقلي أو الإنهاك أكثر من مسألة مصادر تشتيت، فيمكن للبعض قضاء أيام على مشروع واحد دفعة واحدة باستثناء بعض الاستراحات القصيرة، والبقاء مستيقظين طيلة بعض الليالي، مؤدين بأنفسهم إلى كارثة. للمشكلة عدة تجليات، فصاحبنا مثلًا يعاني من قلة الإنتباه للتفاصيل، قد تعاني أنت من نسيان مواعيدك النهائية، أو شيء مشابه، والفظيع في الإجهاد العقلي هو استمراره لفترة دون أن يُلاحَظ إلا عندما يكون قد نال من أدائنا. يقود هذا إلى نقطة سيتم تكرارها في أقسام المقال التالية: أفضل وسيلة للتعامل مع هذه المشاكل هي الإجراءات الوقائية منها، وسنتحدث الآن عن كيفية تطبيقها. كيفية التعامل مع هذه المشاكل التعامل مع العزلة كمستقلين، فإن أبسط طريقة للتخلص من العزلة هي إيجاد محيط عمل تعاوني، من المحتمل أن هذا الاقتراح قد خطر لك إذا كنت تعمل كمستقل منذ مدة، لنناقش إذًا بعض الحلول الأخرى. تزويد جدول عملك بالمكافآت لنفسك فكرة جيدة، يمكنك وضع موعد محدد لك لأخذ راحة وقضاء بعض الوقت مع أصدقائك بعد أن تنجز قدرًا جيدًا من مشروعك، هل أنهيت مشروعك خلال المدة المطلوبة، لم لا تتناول العشاء مع أصدقائك إذًا؟ قد يبدو نهجًا آليًا، لكن قد تكافئ نفسك بطريقة مختلفة، كالانضمام إلى دورة لليوغا أو دروس رقص، ما يقودنا إلى القسم التالي. التعامل مع نقص التمرن يمكنك تبني حلول في غاية الفعالية حيث تحل مشكلتين في النفس الوقت، كالانضمام إلى تمارين جماعية حيث يحل لك مشكلتين سبق لنا ذكرهما: العزلة، والنقص التمرن. في حالة صديقنا الكاتب، فإنه يأخذ دروسًا في الرقص، لذا علاوة على مقابلته لأشخاص جدد وإعادة جسمه لرشاقته، فإنه يكسب مهارة جديدة، أليس انتصارًا ساحقًا؟ النادي الرياضي خيار وارد، لكن إذا لم تكن من محبيه فهناك العديد من التمارين اليومية التي يمكنك القيام بها في المنزل بقليل من الاستثمار للبدء، مثل P90X، أو Insanity، أو DDP Yoga. التعامل مع الإجهاد العقلي وها قد وصلنا إلى مشكلتنا الأخيرة، الإجهاد العقلي، والمقال سيختصرها عليك ليتجنب إجهادك ولا يتسبب بها. أفضل وسيلة للتعامل مع هذه المشكلة هو التقليل من حدوثها قدر الإمكان، ستواجه دومًا كمستقل مواعيد نهائية مباغتة تستنزف قواك العقلية، لكن يمكن احتواء الضغط الناتج بتنظيم عبء العمل، وهذه بعض النصائح لمجابهة الإجهاد: حاول الالتزام بجدول حتى لو كان غير رسمي، إذ سيساعدك في تقدير مدة التي تلزم كل مشروع. ارفض المواعيد النهائية اللامعقولة، فلن يستفيد أحد من ضغطك على نفسك بالعمل بلا مغزى. نفّس عن نفسك بطريقتك المفضلة سواء كانت الطبخ، أو تناول الطعام في الخارج، أو الخروج مع الأصدقاء، أو لعب لعبة فيديو جديدة. خاتمة المشاكل السابق ذكرها من عزلة ونقص التمرّن والإجهاد العقلي ليس مما يجب التغاضي عنه، وإلا انحرفت بحياتك عن الطريق السوي وضرّت صحتك على المدى البعيد. الوقاية هي النهج الأساسي لمجابهة هذه المشاكل والتخلص منها إلى الأبد، لنراجع إذًا معًا خلاصة الحلول لها: كرّس وقتًا لأصدقائك وقابل أناسًا جدد. اجعل أسلوب حياتك أكثر حيوية واختر أي تمرين تفضله، طالما أنه يبعدك عن الكرسي. ابقِ حياتك الوظيفية مرتبة ومارس هواياتك المفضلة. ما المشكلة التي تعتبرها الأكبر حول العمل في المنزل؟ شاركنا تجربتك في تعليق في الأسفل! ترجمة -وبتصرف- للمقال How to Work From Home (And Stay Physically and Mentally Healthy) لصاحبه Alexander Cordova1 نقطة
-
أنهينا إلى هنا كلّ المواضيع الأساسية المتعلّقة بحماية المستخدم وأجهزته وخدماته التي يستعملها، كما شرحنا أساسيات الأمان الرقمي والوعي فيه بالإضافة لمواضيع شتّى. وسنتطرق في هذا الفصل الأخير إلى مجموعةٍ من المواضيع المتقدمة المتعلّقة بالمجال. لا ترتبط هذه المواضيع ببعضها البعض بصورة كاملة لكن من المفيد جدًا أن يطّلع عليها المستخدم ويتعلّمها لزيادة أمانه الرقمي والتعمّق فيه أكثر. الهندسة الاجتماعية الهندسة الاجتماعية (Social Engineering) هي تصنيف لمجموعة من الممارسات التي يمارسها المخترقون على الضحايا بهدف جعلهم يُضعفون حمايتهم جزئيًا أو كلّيًا طواعيةً بدلًا من الاعتماد بالكامل على اختراق الأنظمة الإلكترونية. قد تشتمل الهندسة الاجتماعية على عمليات اختراق للأنظمة والأجهزة كالمعتاد لكن يجب أن يكون ضمن العملية عامل بشري اجتماعي وإلّا لا يُعتبر ضمن الهندسة الاجتماعية. رسائل التصيّد الاحتيالي (Phishing) ورسائل البريد والصفحات الإلكترونية المزوّرة كلّها أمثلة على أساليب الهندسة الاجتماعية. فهذه الأساليب مثلًا لا تعتمد على أن يقوم المُختَرِق باختراق جهاز الضحية وسحب البيانات منها بنفسه بسبب ثغرة في البرمجيات مثلًا، بل تعتمد على عوامل نفسية واجتماعية للضحية ليقوم هو بتسليم بياناته الحسّاسة (اسم المستخدم وكلمات المرور مثلًا) للمُختَرق دون أن يعلم بذلك (أو حتّى مع علمه في بعضه الأحيان). تشمل الأمثلة التي يتّبعها المُختَرقِون: إرسال صفحة فيس بوك مزوّرة إلى المستخدمين المُراد اختراقهم، وتُسرق حساباتهم عند إدخالهم اسم المستخدم وكلمة المرور. إرسال رسائل بريدية أو SMS إلى الضحية المطلوب اختراقها من نوعية: "لقد ربحت مبلغ كذا، أرسل لنا حوالة بنكية صغيرة لنعالج طلب تحويل أموالك" أو "والدك أصيب في حادث سيّارة ويحتاج مبلغًا ماليًا كبيرًا لمتابعة العلاج، أرسل لنا على هذا الحساب البنكي" وما شابه ذلك من اللعب على العواطف. اختراق حسابٍ واحد فقط لأحد الموظّفين في أحد المؤسسات التي يريدون اختراقها، ثمّ يستعملون حساباته الإلكترونية لإرسال مستندات ووثائق تحتوي برمجياتٍ خبيثة إلى الموظّفين العاملين مع ذاك الموظّف وهؤلاء بدورهم لن يشكّوا بشيء وسيفتحون الملفّات الخبيثة مباشرةً ويعتبرونها آمنة 100% لأنّها قادمة من صديقهم. ويمكنهم فعل أكثر من ذلك من طلب البيانات الحساسة أو كلمات المرور وسيسلّمونها مباشرةً لأنّ هذا الطلب - يظنّون - قادم من صديقهم أو رئيسهم في العمل، وهكذا تنتشر البرمجيات الخبيثة في كامل المؤسسة وتُسرق جميع البيانات. طلبات المساعدة الاجتماعية، مثل "امرأة أرملة ولها طفلان وبحاجة لمساعدة" وما شابه ذلك. قد تتضمن الهجمات الرقمية مزيجًا من الهجمات على الأنظمة بالإضافة إلى بعض عوامل الهندسة الاجتماعية؛ فيُمكن مثلًا الاعتماد على أحد الثغرات الموجودة في أحد مواقع الويب بالإضافة إلى قيام الضحية بتفعيل إجراء معيّن من طرفه لكي تنجح عملية الاختراق ككل. من أشهر الأمثلة الحديثة على الهندسة الاجتماعية ما حصل في شركة تويتر مؤخّرًا (شهر يوليو من سنة 2020م) [1]، حيث نجح مراهق أمريكي في الـ17 من عمره بشنّ هجوم هندسة اجتماعية على موظّفي الدعم الفنّي في تويتر ليتمكّن من استخدام بيانات بعضهم للوصول إلى 45 حساب لأشخاص مهمّين حول العالم مثل بيل غيتس ودونالد ترامب وإيلون ماسك وغيرهم، ثمّ نشر عليها تغريداتٍ مزيّفة تدّعي أنّه سيُرسل عملات رقمية (بتكوين) لكلّ من يرسل له مبلغًا بسيطًا على عنوانٍ معيّن. أُلقي القبض على المُراهق وتبيّن أنّه قد جمع أكثر من 100 ألف دولار أمريكي بهذه الطريقة. المشكلة مع الهندسة الاجتماعية هي أنّها ليست شيئًا يُمكن تأمينه أو الحماية ضدّه؛ فهي في الواقع منبثقة عن مفاهيم الوعي التي شرحناها في أوّل فصلٍ من هذه السلسلة لكنّها قد تستعمل أساليب متقدمة جدًا لخداع المستخدمين، كما قد تُوظَّف لجلب بيانات هامشية غير مهمّة عن الأنظمة في نظر الناس لكنّها مفيدة جدًا للمُخترقين، حيث يمكن عبر دمجها في عمليات الاختراق الحقيقية للأنظمة أن تصبح مزيجًا مدمّرًا جدًا. كما أنّه من المستحيل الحماية ضدّها على نطاقٍ واسع؛ فالشركات التي توظّف مئات وآلاف الموظّفين حول العالم وفي مختلف الأمكنة والقطاعات لا تمتلك الموارد الكافية لتحصين كامل موظّفيها وتعليمهم حول هذه المواضيع. وبالتالي فإنّ معظم الأنظمة التي تراها حولك هي قابلة للاختراق في الواقع سواءٌ من الناحية التقنية أو من الناحية الاجتماعية، لكن ما يردع المخترقين عن محاولة فعل ذلك ليس صعوبة الاختراق بل قدرة الجهات القانونية ومراكز الاستخبارات نفسها على تتبعهم وكشفهم والقبض عليهم كذلك إن فعلوا مثل هذه الأمور، فسلاح الردع هنا ليس الحماية بل هو القدرة على الانتقام من طرف السلطات في حال حصل ذلك. والهندسة الاجتماعية علمٌ يستعمل في أكثر من مجرّد مجال الأمان الرقمي، بل قد تستعمله الدول بين بعضها البعض لاستمالة الأفراد العاملين في الجهة الأخرى إلى جانبهم وبالتالي اختراقها. وواقعنا الشرق أوسطي خيرُ مثالٍ على ذلك حيث أصبح العملاء والمُخترقون أكثر عددًا من السكّان الأصليين. يمكنك أنت - كشخص - تحصين نفسك ضد الهندسة الاجتماعية عبر اتباع نصائح الوعي الرقمي التي ذكرناها في مقدّمة هذه السلسلة، ثمّ متابعة قراءة المزيد من الكتب والموارد حولها على الشبكة. الحماية من ثغرات العتاد يمكن للعتاد كذلك أن يُصاب بالثغرات الأمنية. إنّ قطع العتاد الموجودة على جهازك - مثل المعالج واللوحة الأمّ - تعتمد على عدّة أشياء لتعمل: طرف نظام التشغيل والتعريفات موجودة فيه لقطع العتاد. طرف برامج التعريف الثابتة (Firmware) للعتاد نفسه لكنّها لا تخزّن على نظام التشغيل أو القرص الصلب، بل في ذاكرة ROM (وليس RAM) على اللوحة الأمّ. طرف العتاد الفيزيائي وطريقة تصميم الدارات الإلكترونية فيه، فهذه الدارات في النهاية تستقبل وتعالج بيانات وبالتالي يمكن لعملياتها هذه أن تكون آمنة أو لا. أشهر ثغرات العتاد في عصرنا الحالي هما ثغرتا Spectre وMeltdown؛ وهما ثغرتان في أنظمة حماية الذاكرة العشوائية (RAM) أثناء عملها مع معظم المعالجات الحديثة [2]. وقد أصيبت بها جميع معالجات Intel وAMD وARM تقريبًا وترقيعها تطلّب تحديثاتٍ أمنية على المستويات الثلاثة؛ تحديث لتعريفات نظام التشغيل وتحديث لبرامج التحديث الثابتة بالإضافة إلى تعديلات فيزيائية للمعالجات الجديدة لتجنّب هذه الثغرات. وقد كان هذا مكلفًا جدًا على الشركات وكبّدها خسائر كبيرة بالمليارات، كما سببت ترقيعات هذه الثغرات انخفاضًا بأداء الحواسيب يصل إلى 30%. وهاتان الثغرتان ليستا الوحيدتين بل هناك العشرات من ثغرات العتاد التي اكتُشفت من وقتها. ولهذا على المستخدم متابعة التطوّرات دومًا وتحديث أنظمته وأجهزته إلى آخر الإصدارات. وتأمين أجهزة المستخدم ضدّها (بعد اكتشافها وإصلاحها من طرف الشركات بالطبع) ممكن عبر تحديث نظام التشغيل أوّلًا بأوّل، ثمّ تحديث برامج التعريف الثابتة (Firmware) وفق إرشادات الاستخدام الصادرة عن الشركات المصنّعة. وفي بعض الحالات يستحيل ترقيع المعالجات القديمة لتجنّب الثغرات وبالتالي يكون من الواجب هنا استبدال كامل الجهاز أو المعالج فيه بواحدٍ أحدث. البيانات الوصفية للملفّات وخطورتها عند مشاركتك لملفٍّ ما مع أحدهم عبر الإنترنت من جهازك فإنّ الملفّ يأخذ معه شيئًا من البيانات الوصفية (Metadata) الخاصّة بك. وهذه البيانات مخفية داخل الملفّ ولا تظهر في محرر النصوص أو البرامج بل تحتاج برامج خاصّة لعرضها. ويختلف حجم وكمّ ونوعيّة هذه البيانات بناءً على نظام التشغيل والبرامج المُستعملة في إنشاء وتعديل الملفّات. من الأمثلة على البيانات الوصفية: تاريخ إنشاء الملفّ لأوّل مرّة. تاريخ آخر تعديل على الملفّ. تواريخ تعديل الملفّ على فترات مختلفة. اسم صانع الملفّ الأصلي. اسم من قام بتعديل الملفّ. وقت الحرير الإجمالي للملفّ (كم دقيقة قام الناس بالعمل عليه؟). اسم البرنامج المُستعمل في إنشاء الملفّ. إصدار البرنامج المُستعمل في إنشاء الملفّ. وغير ذلك (تختلف البيانات الوصفية بناءً على صيغة الملفّ والبرامج والأنظمة المُستعملة في العمل عليه). وكما ترى فيمكن لهذه البيانات أن تكشف الكثير عنّ أصحابها وقد تكون معلوماتٍ حسّاسة في بعض الأحيان، وبالتالي - إن كان نموذج الخطر الخاصّ بك مرتفعًا - فعليك إزالتها قبل مشاركتها مع الآخرين. بعضهم يخزّن بيانات الملفّ كاملة في البيانات الوصفية للملفّات ويترك محتوى الملفّ نفسه فارغًا تجنّبًا لإثارة الشبهات في تخزينها داخل الملفّ وهذا ممكن نظريًا يمكنك استعمال برنامج exiftool من سطر الأوامر على لينكس لاستعراض وتعديل وحذف البيانات الوصفية للملفّات. فقط اكتب اسم البرنامج متبوعًا بفراغٍ وبعده مسار الملفّ لرؤية البيانات الوصفية: يمكنك مراجعة توثيق البرنامج لرؤية طريقة استعماله لتعديل وحذف البيانات الوصفية. يعمل البرنامج كذلك على أنظمة ويندوز وماك (واجهة نصّية) وبالتالي يمكنك تحميله من موقعه الرسمي على https://exiftool.org نظام Qubes OS وفائدة استخدامه هناك توزيعات لينكس مختلفة بأنماطٍ متعددة من الحماية لكنّ أبرزها ما يُعرف بـQubes OS، وهي توزيعة لينكس مبنية بنظام الحوسبة الافتراضية (Virtualization) والحاويات (Containers) وهو ما يجعلها - نظريًا - من أأمن أنظمة التشغيل في العالم. طريقة عمل هذه التوزيعة مختلفة عن كلّ توزيعات لينكس الأخرى، فكلّ مكوّناتها من النواة ومكوّنات نظام التشغيل والبرامج الأخرى مفصولةً عن بعضها البعض في حاويات وهمية منفصلة، وبالتالي حتّى لو نجح المخترقون مثلًا في اختراق متصفّح فيرفكس الخاصّ بك فلن يتمكّنوا من الوصول إلى أيّ شيءٍ آخر مخزّن على نظامك ولا حتّى ملفّاتك الأخرى، وهذا لأنّها مفصولة عن حاوية برنامج فيرفكس، وقِس على ذلك. الحاويات (Containers) هي أشبه بمناطق معزولة في نظام التشغيل تمتلك مواردها وعملياتها الخاصّة بعيدًا عن بقية العمليات الأخرى في نظام التشغيل. مثلًا يمكنك تشغيل توزيعة لينكس (أوبونتو مثلًا) ضمن حاوية على نظام تشغيلك الحالي، وبالتالي تعتبر كأنّها نظام تشغيل وهمي يعمل بصورة منفصلة عن بقية البرامج على نفس نظامك الحالي (لا يوجد إمكانية للبرامج التي تعمل ضمن تلك الحاوية أن تصل إلى ملفّاتك ونظامك الحقيقي). يمكنك تشغيل عشرات ومئات الحاويات في نفس الوقت إن أردت حسب احتياجاتك. من المفيد أن يطّلع عليها المستخدمون الراغبون في حمايةٍ أكبر على Qubes-OS.org استخدام DNS مشفّر منفصل لقد شرحنا في السابق فائدة استخدام نظام DNS من جهة ثالثة غير نظام الـDNS القادم من مزوّد خدمة الإنترنت الخاصّة بنا في فصل "تأمين الأشياء الأساسية - تأمين الموجّه"، لكن هناك طبقة إضافية من الحماية لأنظمة DNS وهي التشفير؛ حيث يمكنك أن تشفّر الطلبات بينك وبينك نظام الـDNS نفسه كذلك. هذه الميّزة موجودة فعليًا في متصفّح فيرفكس باسم DNS-over-HTTPS من إعدادات الشبكة ويمكنك تفعيلها: لكن ما نتحدّث نحن عنه الآن هو نظام DNS مشفّر منفصل كامل تتحكّم أنت به (Dedicated Encrypted DNS)، حيث تثبّته على حاسوب Raspberry Pi صغير مثلًا أو على أحد الخواديم التي تمتلكها، ثمّ تستعمل عنوان الآي بي الخاصّ بذاك الخادوم في الموجّه (الراوتر Router) الخاصّ بك بدلًا من استعمال خدمات شركة خارجية. والعملية صعبة ومعقّدة بعض الشيء وتتطلب عتادًا منفصلًا ولهذا لم نشرحها في هذه السلسلة، لكن يمكنك معرفة المزيد عبر برنامج DNSCrypt وهو مجاني ومفتوح المصدر ويعمل على الأجهزة والخواديم المختلفة: https://www.dnscrypt.org تحليل تدفّق الشبكة تدفّق الشبكة (Network Traffic) هو البيانات التي تُحمّل وُترفع في شبكة الاتصال المرتبطة بالجهاز. فأيّ جهاز (هاتف محمول أو حاسوب) إمّا يُرسل وإمّا يحمّل البيانات من الشبكة، وبالتالي يمكن تحليل هذا التدفّق ورؤيته لمعرفة بعض المعلومات عنه (الجهة التي يذهب إليها بالإضافة إلى معلومات الترويسات "Headers" وغير ذلك). وهذا مفيدٌ جدًا ﻷنّك ستصبح قادرًا على معرفة الاتصالات التي تجريها أجهزتك ومع أيّ خواديم (Servers) وتابعة لمن، وبالتالي يمكنك معرفة ما إذا كنتَ مُخترَقًا أم لا أو إن كان هناك بعض التطبيقات التي ترفع أجزاءً يجب ألّا ترفعها من بياناتك مثلًا. لأنّه بما أنّك تراقب كامل تدفّق الشبكة فيمكنك معرفة ورؤية كلّ الاتصالات التي تجريها أجهزتك على تلك الشبكة. تحليل التدفّق عملية ممكنة على الحواسيب والأجهزة المحمولة، فقط كلّ ما عليك فعله هو تثبيت أحد برامج تحليل الشبكات (Network Analyzer) على نظام التشغيل المناسب لك ثمّ استعماله وفق التوثيق الرسمي له. لم نشرح العملية في هذه السلسلة لأنّها فوق مستوى القارئ الذي وُجّه له هذه السلسلة لكن العملية ليست أكثر من مجرّد تثبيت البرنامج ثمّ اتباع الشرح الرسمي. من أشهر برامج تحليل الشبكات على الحواسيب المحمولة برنامجٌ اسمه Wireshark، وهو مجاني ومفتوح المصدر. يمكنك تحميله من موقعه الرسمي وتثبيته على أنظمة ويندوز أو ماك أو لينكس. بعدها يمكنك مراجعة التوثيق الرسمي الخاصّ به لتعلّم استخدامه وكيفية مراقبة تدفّق الشبكة اللاسلكية/السلكية التي أنت متصلٌ بها. أمّا على الهواتف المحمولة فلا يوجد - على حدّ علمنا - برمجيات مفتوحة المصدر بنفس الجودة والكفاءة. لكن يمكنك البحث في متجر التطبيقات الخاصّ بك عن "Network analyzer" وستجد الكثير من التطبيقات التي يمكنك تجريبها ومراجعتها. بعد تثبيت البرنامج عليك تشغيله لرؤية أسماء المواقع والخدمات التي تتصل بها أجهزتك. عليك: تفحّص الجهاز في الحالة العادية وعلى مدة طويلة (أيام مثلًا)، هل يُرسل بياناتٍ بصورة مفاجئة إلى أحد مواقع الإنترنت أو عناوين آي بي لخواديم معيّنة؟ تفحّص أي تطبيق تشتبه به أنّه قد يُرسل شيئًا من بياناتك إلى عناوين ويب معيّنة. فقط افتح التطبيق المشبوه وتصفّحه لبضعة دقائق ثمّ راقب تدفّق الشبكة وما إذا كانت تظهر عناوين ويب جديدة يتم الاتصال بها. محاولة النظر في محتويات حزم البيانات (Packets) التي تُرسل في تدفّق الشبكة. هل يوجد بها أيّ بيانات حساسة لك؟ قد تُرسل التطبيقات المختلفة على نظامك البيانات إلى عناوين الآي بي (مثل 78.45.4.34) أو إلى أسماء نطاقات مسجّل (example.com). يمكنك فتح تلك العناوين في متصفّحك لرؤية ما إن كانت تعمل وراء خواديم ويب أم لا. إن كان الجواب لا فيمكنك معرفة المزيد عن تلك العناوين (مثل موقعها الجغرافي ولمن هي تابعة) عبر خدمات مثل Who.is. الخدمات اللامركزية البنية التقليدية للاتصالات في شبكة الإنترنت هي بنية Client-Server (برنامج عميل، برنامج خادوم) حيث يتصل البرنامج العميل (المتصفّح غالبًا) بالخادوم ليجلب البيانات منه، يكون عنوان الآي بي الخاصّ بالخادوم ثابتًا لا يتغيّر ويعرفه كلّ المستخدمين ليتمكّنوا من الوصول إليه عبر اسم نطاق معيّن (Domain Name) يكون مربوطًا به. لكن هناك بنية أخرى للاتصالات وهي بنية النظير للنظير (Peer to Peer) أو تُعرف رمزًا بـP2P. وهذه البنية مختلفة عن البنية السابقة حيث لا تتطلب وجود خادومٍ مركزي للاتصال بل تتصل أجهزة العملاء (Clients) بين بعضها البعض مباشرةً لتبادل البيانات. لأنّه بما أنّ كلّ جهازٍ من أجهزتنا يمتلك عنوان آي بي ومنافذ (Ports) خاصّة به فيمكن للأجهزة الأخرى حول العالم كذلك أن تتصل به، إن سمح لها المُستخدم بذلك وعطّل الجدار الناري الخاصّ براوتر الشبكة واستخدم البرامج المناسبة. أشهر مثال على ذلك هو ما يعرف شعبيًا بالتورنت (Torrent) وله ما يُعرف بالباذرين (Seeders) والنظراء (Peers) الذين يحمّلون البيانات المرفوعة من الباذرين. ومن بين الأمثلة على ذلك متصفّح تور، وهو متصفّح مبني على فيرفكس يستعمل تقنية النظير للنظير لإجراء اتصالات آمنة ومشفّرة للمستخدمين. لكن صارت الخدمات اللامركزية في السنوات الأخيرة أكثر من ذلك بكثير؛ حيث ضجر الكثير من المستخدمين من سياسات الشركات العملاقة مثل فيس بوك ويوتيوب وجوجل وأمازون وغيرها، ووجدوا أنّ أفضل طريقة لإنشاء محتوىً سهل التداول وغير قابل للحجب والمراقبة وفرض السياسات عليه هو عبر جعله يعمل باتصالات النظير للنظير. نذكر من بينها المشاريع مفتوحة المصدر التالية: Mastodon: أنشئ شبكتك الاجتماعية الخاصّة بك على شكل عُقَد (Nodes) يمكن وصلها بالشبكات الاجتماعية للآخرين أو فصلها متى ما أردت. وهو في الواقع بديل لامركزي لخدمة تويتر. Diaspora: شبكة اجتماعية لامركزية أشبه بفيس بوك. Beaker Browser: متصفّح ويب يعمل بالكامل بتقنية النظير للنظير، وبالتالي تُنشأ صفحات الويب الخاصّة بك أو تحمّلها من الآخرين عبر الشبكة وبروابط مباشرة بينك وبينهم دون الحاجة للمرور بخواديم أحد. Sia: خدمة مشاركة ملفّات لامركزية مثل جوجل درايف وغيرها، لكنّ الملفّات تستضاف على أجهزة جميع المستخدمين بصورة آمنة ومشفّرة ومقطّعة. العملات الرقمية ظهرت سنة 2009م أوّل عملة رقمية ناجحة وهي بتكوين (Bitcoin). وهي عملة لامركزية تعتمد على تقنية النظير للنظير (Peer to Peer) لإجراء المعاملات المالية الرقمية. والبتكوين في الواقع ما هي إلّا مجموعة بيانات وبالتالي قيمتها قادمة من قيمة السوق المحيط بها والذي يتعامل بها وليست من شيءٍ معيّن. تخزّن جميع معاملات بتكوين من إرسال وتحويل وغير ذلك في قاعدة بيانات عملاقة مشتركة بين جميع المستخدمين اسمها بلوكتشين (Blockchain)، وهي مشفّرة ومؤمّنة بصورة كبيرة تضمن أنّ المعاملات التي تجري بها غير قابلة للتعديل أو التغيير من قبل الآخرين، وبالتالي يمكن لشخصين مثلًا أن يتبادلا البتكوين بينهما دون خوفٌ من طرفٍ قد يتدخّل بينهما. إنّ إجراء عمليات بيع وشراء العملات الرقمية يحصل إمّا من طرف محفظات المستخدمين (Users Wallets) مباشرةً بين بعضهم البعض، أو بين منصّات تداول العملات الرقمية (e-Wallets) وهذا هو الخيار الأشهر والأسهل لأنّ الأوّل سيتطلّب الكثير من الجهد والتعب لتأمين البيانات وإجراء المعاملات، بينما يمكنك في دقائق إجراء عمليات البيع والشراء عن طريق أحد منصّات العملات الرقمية. وبفضل طبيعة العملات الرقمية فإنّ تبادلها مجهول تمامًا، حيث تحصل عمليات تحويل بتكوين بين الأطراف المختلفة عن طريق عناوين مشفّرة مجهولة الهوية لا يُعرف أصحابها وبالتالي تتخفّى عن أعين المراقبة (إلّا أنّ الدول مثلًا يمكنها محاولة معرفة صاحب عنوان معيّن عن طريق سجّلات المستخدمين وبياناتهم في منصّات التداول إن كانت تحت أراضيها لكن هذا غير مضمون). هناك منصّات عالمية للتداول ومنصّات محلّية، ويمكنك البحث في بلدك عن تلك المنصّات ورؤية ما إذا كانت تدعم البيع والشراء داخل بلدك أم لا. هناك الكثير من العملات الرقمية (المئات وربّما الآلاف منها) وهي تجارة رائجة جدًا في يومنا هذا بل هي الموضة الحالية المالية في عصرنا. وبسبب هذا فقد ازداد الإقبال عليها في العالم العربي، لكن هناك العديد من النصائح والمعلومات الواجب تذكّرها عند التعامل بالعملات الرقمية: لا يمكن استرجاع البتكوين في حال إرسالها إلى عنوانٍ خاطئ أو غير صحيح بتاتًا. إن اختُرق حسابك وسُرقت البتكوين منه فقد ضاعت للأبد. تحتاج حاليًا عمليات بتكوين ما بين 10 دقائق إلى عدّة ساعات لإجراء ما يعرف بالتأكيدات (Confirmations) وهي ببساطة عمليات التأكّد من نظيرين (Peers) آخرين من العملية وأنّها صحيحة. إنّ إنشاء محفظتك الخاصّة بك للعملات الرقمية على حاسوبك هو الخيار المنصوح به لكنّه من المستحيل على معظم قرّاء هذه السلسلة تطبيقه لصعوبته وصعوبة تأمين الأموال التي عليه بعدها، وبالتالي فإنّ أفضل حلّ هو استخدام المنصّات الجاهزة للعملات الرقمية. هناك رسوم استقبال وإرسال تؤخذ منك من قبل تلك المنصّات عند كلّ عملية تجريها. منصّات التداول خاضعة للدول التي تعمل بها وبالتالي هي تحت قوانينها، وهي تمتلك كامل معاملاتك المالية معها بالإضافة إلى كلّ عناوين الاستقبال التي استعملتها وبالتالي يمكنها معرفة نشاطاتك بالتعاون مع الدولة. وتستعمل الدول تلك المعلومات غالبًا من أجل جمع الضرائب كما في حالة Coinbase والولايات المتّحدة. استعمل نصائح تأمين الحسابات التي شرحناها مسبقًا في هذه السلسلة لتأمين حسابك على تلك المنصّات، مثل استخدام الاستيثاق الثنائي وكلمة مرور قوية وغير ذلك. متابعة آخر أخبار الحماية والأمان والخصوصية يمكنك متابعة آخر أخبار الحماية والخصوصية بالإضافة إلى آخر التطورات والأبحاث في المجال عن طريق متابعة المواقع والمراكز التالية. وتمامًا كما هناك ما يسمّى بـ"مراكز التفكير" (Think Tanks) في السياسة فهناك مراكز أبحاث شبيهة في الأمان الرقمي: CitzenLab: مركز أبحاث حول الأمان الرقمي مركزه في كندا، لديه العشرات من التقارير والأبحاث المهمّة حول الخصوصية والأمان في العصر الحديث لم يُسبَق إليها من قبل. Upturn: مركز أبحاث متخصص بانتهاكات الخصوصية وسبل الوقاية منها. The Hacker News: موقع إخباري متخصص في أخبار الاختراقات والحماية حول العالم. r/Privacy على موقع ريديت: مجتمع متخصص بالخصوصية وآخر أخبارها على منصة النقاش الشهيرة Reddit. اقرأ أيضًا المقال السابق: كيف تعرف أنك اخترقت في العالم الرقمي وماذا تفعل حيال ذلك؟ النسخة الكاملة من كتاب دليل الأمان الرقمي1 نقطة
-
طُوّرت على مدار تاريخ الإنترنت العديد من الأدوات والطرق للتأكد من حماية المواقع من الاختراق، أو على الأقل جعله مستعدًا لمجابهة ذلك الخطر. أيًا كان مشروعك، متجرًا إلكتروني، أو مدونة عصرية أو حتى موقعًا لإحدى الشركات، تجب مراعاة تدابير الحماية في كل الأوقات. إذا كنت مطور/مصمم ويب، فمهمتك لم تعد تقتصر على بناء صفحات ويب جميلة، بل عليك المحافظة عليها محمية من جميع الجهات التي قد ترغب باختراقك واستغلال موقعك. ستحتاج لإجراء تدابير أمنية لمنع حصول شيء كذلك. هنالك العديد من الطرق لاختراق المواقع، لذلك يجب وضع تدابير حماية متعددة لقطع جميع تلك الطرق. لكن لا وجود لطريقة محددة قادرة على حمايتك بالكامل من المخترقين، أفضل ما يمكنك فعله هو تصعيب المهمة على المخترقين على نحو كافِ لدرجة تجعلهم ييأسون من المحاولة. طرق الاختراق الشائعة كما أسلفنا، هناك العديد من الطرق يستعملها المخترقون لتخطي حماية الموقع بهدف تدميره أو التلاعب به. سنذكر هذه الطرق حتى يمكنك إجراء تدابير وقائية للتصدي لهذه المحاولات. حقن استعلامات SQL لا يمكن إنكار أن حقن استعلامات SQL (SQL Injection) هي إحدى أكثر طرق الاختراق خطرًا على كل من المواقع والأنظمة. على نحو عام، تتضمن هذه الطريقة إدخال استعلامات SQL في حقول الإدخال مثل حقول تسجيل الدخول أو حتى شريط العناوين الخاص بالمتصفح. بفعل ذلك يتمكن المخترق من الوصول لقواعد البيانات الخاصة بالموقع أو النظام. عندما تدخل اسم المستخدم وكلمة السر في حقل تسجيل الدخوليُدرَج النص الذي أدخلته إلى استعلام SQL. ذلك الاستعلام سيفحص البيانات التي أدخلتها ويوازنها بقاعدة بيانات الموقع أو النظام. بمجرد تطابق القيم المدخلة مع المسجلة ستحصل على تصريح دخولك، إذا لم تتطابق فلا يسعك الدخول. حقن قواعد البيانات يحدث عندما يحاول المخترق إدراج استعلامات SQL في حقول الإدخال الخاصة بموقعك. في العادة سيفحص الموقع البيانات المدرجة ويتأكد من صلاحيتها. إذا حدث واحتوت بياناتك مجرد علامة اقتباس (‘) بنهاية بيانات اسم المستخدم قد تفسرها قاعدة البيانات كاستعلام SQL بنَّاء، وهكذا سيُعدُّ استعلامًا صحيحا. قد لا يدخل المخترقون إلى موقعك عن طريق ذلك الاستعلام بالتحديد، لكن هذه الطريقة ستسمح لهم بالوصول إلى اسم قاعدة بياناتك، والجداول وحقول المفاتيح. وبامتلاك هذه البيانات سيحتاجون فقط إلى إدخال استعلام SQL في أحد حقول موقعك، عندها سيتمكنون من رؤية كامل محتويات قاعدة بياناتك. كيف يمكن التصدي لحقن SQL التأكد من إدخال نوع البيانات الصحيح الاستعلام باستخدام الوسائط (Parameters) تحديد الصلاحيات ترشيح IIS موحَّد تفعيل توثيق طلبات الاستعلام فكر باستخدام إطار لربط العلاقات بالكائنات (ORM) هجمات XSS الهجمات بالسكربتات العابرة للمواقع Cross Site Scripting، التي تُعرف اختصارًا بهجمات XSS، هي إحدى أكثر طرق الاختراق التى يصعب التصدي لها. في الأعوام السابقة، واجه كلٌّ من Microsoft، و MySpace، و Google صعوبات كبيرة في التعامل مع تلك الهجمات. تعتمد هجمات XSS على إرفاق سكربتات خبيثة مكتوبة بلغة جافا سكربت بالروابط الداخلية بهدف التحكم بسجلات الجلسات (Sessions) الخاصة بالموقع، أو اختطاف الإعلانات أو سرقة المعلومات الشخصية. لابد أنك تذكر حدوث هذا: قمت بالضغط خطأً على إعلان غريب الشكل، فأرسلك إلى صفحة شبيهة بتطبيقات الدردشة. ثم ترى رسالة من فتاة لطيفة تطلب منك الضغط على رابط ما للدردشة معها. وعند الضغط على الرابط يظهر لك عنوان URL غريب الشكل مثل العنوان التالي: [%63%61%74%69%6f%6e%3d%274%74%70%3a%2f%2f%77%7…] قد تعتقد أن لا شئ قد حدث ولكن لا، أنت مخطئ بالتأكيد. هذه الروابط تساعد على سرقة ملفات تعريف الارتباط (Cookies) والتي بدورها تعين المخترق على سرقة معلوماتك الشخصية. كيف يمكنك التعامل مع برمجيات تخطي المواقع لا تسمح بإدخال بيانات غير موثوقة إلا إذا تطلب الأمر ذلك خلّص (Escape) وسوم HTML عند معالجة البيانات المدخلة للحقول خلّص خصائص العناصر قبل إدراج البيانات على الموقع خلّص نصوص JavaScript من الحقول حتى تتفادى تسلل بيانات غير موثوقة إلى قيم جافاسكريبت. تخطي الاستيثاق كما يوحي الاسم، تخطي الاستيثاق مخيف. يستهدف عادةً التطبيقات أو أنظمة إدارة المحتوى سيّئة التصميم، ويمكن له إحداث فوضى عارمة بموقعك. يحدث الاختراق على نحو مشابه للتالي: البحث وإيجاد صفحة تسجيل دخول ضعيفة الحماية. فتح الشفرات المصدرية للصفحة. نسخ الشفرات إلى محرر نصِّي. حذف تعليمات JavaScript الخاصة بإدارة التصاريح وتعديل رابط أو اثنين. حفظ التغييرات على النص البرمجي. فتح الملف البرمجي الجديد على متصفحك، سجل الدخول كما لو أنك تمتلك الموقع. وهكذا نجح الاختراق! هل موقعك عُرضة لهذا الاختراق؟ هذا يعتمد على إجابة الأسئلة التالية: هل يقوم خادم موقعك بتشغيل العمليات مستعملًا صلاحيات الجذر، أو مدير النظام، أو النظام المحلي أو حسابات إدارية أخرى؟ هل يُمنح موقعك/تطبيقك صلاحيات الوصول لقاعدة البيانات عبر حساب SA (بالنسبة لأوراكل) أو حسابات أخرى مشابهة؟ هل يمتلك تطبيقك القدرة على الوصول لقاعدة البيانات عبر حسابات تمتلك صلاحيات أعلى من المطلوب؟ هل تعمل الحوسبة الافتراضية بخادم موقعك باستعمال كل الصلاحيات أو بثقة كاملة ببيئات عمل J2EE و NET.؟ هل بالإمكان تحديد إمكانية الوصول لموارد موقعك باستعمال قدرات المنصة المستعملة؟ إذا أجبت بنعم ولو على سؤال واحد فموقعك معرَّض للخطر. كيف يمكنك حماية موقعك تطوير الموقع، واختبارات الأداء ومنهجية التطوير يجدر القيام بها باستعمال أقل صلاحيات ممكنة. تأكد من أن الحسابات التى تدير بيئة العمل محدودة الإمكانات بأقصى قدر ممكن. لا يجوز أن يستخدم خادم موقعك صلاحيات مدير النظام، أو صلاحيات الجذر، أو غيرها من الحسابات الحسّاسة. حدّدد صلاحيات حسابات المستخدمين بموقعك على نحو يتناسب مع حاجتهم. لا يجوز أن تحظى حسابات الشركاء بصلاحيات إدارية والعكس صحيح. عليك استخدام حسابات مختلفة لمهام مختلفة. التدابير الشائعة لمنع الاختراق حافظ على الملحقات والبرامج محدَّثة باستمرار لا شيء يسعد المخترق أكثر من برمجية/ملحق منتهي الصلاحية. عادةً هذه هي أهدافهم المفضلة لاحتوائها على أعطال، أو خلل أو ثغرة أمنية. هذا هو السبب الرئيسي لتحديثها أساسا. لنقلها بهذه الطريقة، أنت تستخدم نوعًا ما من أقفال الأبواب تم التحايل عليه ألاف المرات. هل تتوقع أن يواجه اللص التالي مشكلة في التعامل معها؟ لذا استمع لهذه النصيحة، حدّث الآن! استخدم كلمات مرور قوية كم مرة تمت التوصية بهذا؟ من المهم للغاية استعمال كلمات مرور قوية. ربما لا تدرك أن المخترقين يحاولون سرقة كلمات مرورك باستمرار. إذن، كيف ننشىء كلمة مرورفعّالة؟ طريقة التبديل هذه طريقة جيدة للحفاظ على كلمات مرورك آمنة. حسب المبدأ، عليك استبدال الأحرف والأرقام بأحرف خاصة باستخدام طريقتك الشخصية. مثلاً: استعمل رمز '@' عوضًا عن حرف 'a' استعمل رمز '$' عوضًا عن حرف 's' استعمل رمز '%' عوضًا عن المسافات استعمل الرقم '0' عوضًا عن حرف 'o' استعمل رمز '!' عوضًا عن حرف 'i' بهذه الطريقة قمنا بتحويل كلمة سر بسيطة مثل ‘whoisjohngalt’ إلى كلمة أكثر تعقيدًا ‘wh0!$j0hng@lt’. طريقة Business Insider ابتكرت مجلة Business Insider مؤخرًا طريقة لتشكيل كلمة مرور قوية يسهل تذكرها. طبقًا للمجلة عليك إنشاء كلمة مرور طويلة لأنها تجعل الحواسيب تستغرق وقتًا طويلًا لتكتشفها. المبدأ الرئيسي لهذه الطريقة هو إنشاء كلمات مرور طويلة جدًا باستخدام كلمات غير ذات علاقة بك أو ببعضها. استخدم أداة Google Webmaster لدى Google طريقة لمساعدتك في تأمين موقعك. باستعمال أدوات Webmaster ستحظى بتنبيهات في حال العثور على برمجيات خبيثة. في حال اختراقك وعدم قدرتك على إزالة الاختراق، ستساعدك غوغل عن طريق إضافة موقعك للقائمة السوداء مما يمنحك متسعًا من الوقت للتعامل مع البرمجيات الخبيثة بموقعك، أيضًا هذه الخدمة تتيح لك رؤية تفاصيل المشكلة المرصودة. لا تعرض رقم إصدار WordPress بجانب تحديثك لمنصة التدوين، عليك دائمًا منع المخترقين من معرفة أي من إصدارات WordPress تستعمله. فعل ذلك سيمنعهم من استغلال ثغرات الحماية في موقعك. يمكنك فعل ذلك بتعديل ملف functions.php الخاص بموقعك وإضافة التعليمات التالية: function remove_version() { return ''; } add_filter('the_generator', 'remove_version'); تشديد الحماية على ملف htaccess. عادةً، حماية ملف htaccess متساهلة افتراضيًّا، لكن يمكنك تخصيصها لحمايتك من الاختراق عبر التلاعب بعناوين URL، أو حقن قواعد البيانات أوغيرها. هنالك الكثير من الطرق لتعديل ملف htaccess. لكننا سنشير إلى أكثرها جدوى. تذكّردائمًا أخذ نسخ حتياطية من الملف. order allow,deny deny from all أضف الاستعلامات التالية لمنحك مزيدًا من الأمان، علمًا أنه لن يُسمَح بالوصول غير المرغوب فيه، وستمنع زواحف محركات البحث من الوصول إلى ملف wp-admin.php. يمكن تطبيق تعليمات مماثلة على ملفات أخرى مثل install.php و eror_log. RewriteEngine On RewriteBase / RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]RewriteRule ^(.*)$ - [F,L]RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR]RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]RewriteCond %{QUERY_STRING} tag\= [NC,OR]RewriteCond %{QUERY_STRING} ftp\: [NC,OR]RewriteCond %{QUERY_STRING} http\: [NC,OR]RewriteCond %{QUERY_STRING} https\: [NC,OR]RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)||ê|"|;|\?|\*|=$).* [NC,OR]RewriteCond %{QUERY_STRING} ^.*("|'|<|>|\|{||).* [NC,OR]RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR]RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ RewriteRule ^(.*)$ - [F,L] الخاتمة التعرض للاختراق بالتأكيد محبط. أنت ترى ثمرة جهودك تنهار مثل برج رملي. لكن درهم وقاية سيكون دائمًا أفضل من دينار علاج، لذا بينما كل شيء على ما يرام قم بتحسين وإصلاح كل ما يمكن إصلاحه تحسبًا لوقوع الكوارث. ترجمة -وبتصرف- للمقال Security Advice for Preventing Your Website from Being Hacked من إعداد فريق موقع 1stwebdesigner1 نقطة
-
بسم الله الرحمن الرحيم، أنا ياسمين، مترجمة عربي-إنجليزي. إن كنتم تجدون صعوبة في استعمال بعض البرامج مثل SDL Trados Studio أو Memo Q أو تبحثون عن كات تولز مجّانيّة، أقدّم لكم وسائل سهلة الإستعمال توفّر عليكم الجهد ستفيدكم جدّا إن كنتم في بداية الطريق. - MateCat ولعلّ المتطوّعين مع منظمة مترجمون بلا حدود سيجدون الإسم مألوفا، هذا لأن المظمة تستعمل MateCat للترجمة. -Smartcat -Wordfast anywhere هي النسخة المجانية للفريلانسرز . -OmegaT //أنا مترجم فريلانسر ولم أحتج إلى استخدام كات تولز مطلقًا والدنيا جميلة وليس لدي أي مشكلة؟ ج: الديناصور لم يكن يعلم بموعد انقراضه. أنصحك بمواكبة التكنولوجيا قبل فوات الأوان. أنت لا تدري كم فرصة فوّت بسبب عدم إلمامك بأي من تلك البرامج. إن كنتم تستعملون وسائل أخرى، ينكنكم مشاركتها معنا. وفقكم الله ورزقنا وإيّاكم.1 نقطة
-
مرحبا بكم جميعاً؛ سؤال يراود ذهني منذ أيام وهو لماذا تستخدمون Adobe Photoshop في تنفيذ مهمة تصميم مواقع الويب، فهل هذا منطقي فعلاً ؟ من اسمه واضح أنه برنامج Photoshop مختص في تحرير الصور وتحسينها وما شابه . عندما نذكر Adobe Illustrator فهو واضح بأنه أنشئ خصيصاً لإنشاء الـ Vector و الصور الكرتونية والرسومات ... . عندما نسمع Adobe إِكس دِي فهو مخصص لتصميم واجهات المواقع وتطبيقات الجوال. من له فكرة عن لماذا يفضل أُناس تصميم المواقع باستخدام Adobe Photoshop . | تحياتي للجميع . | ليلة سعيدة .1 نقطة
-
1 نقطة
-
يمكنك البحث عن " laravel ecommerce open source projects " في محرك البحث Google، أو في Github.1 نقطة
-
بالنسبة لتسجيل الدخول، يمكن إرسال البيانات عن طريق استخدام Form كالتالي: <form action="action_page.php" method="post"> <div class="container"> <label for="uname"><b>Username</b></label> <input type="text" placeholder="Enter Username" name="uname" required> <label for="psw"><b>Password</b></label> <input type="password" placeholder="Enter Password" name="psw" required> <button type="submit">Login</button> </div> </form> حيث نقوم باستبدال اسم الصفحة: action_page.php بالصفحة المراد استقبال البيانات فيها والتعامل معها.1 نقطة
-
بالنسبة للسؤال الثاني: عند الضغط على زر التعديل يتم إرسال متغير واحد فقط وهو قيمة id <td><a class='btn btn-success btn-xs' href='editdep.php?id=$depId'>update</a></td> وفي حال أردت إرسال أيضاً باقي القيم التي سيتم تعديلها مباشرةً بقاعدة البيانات يجب عليك إرسالها كالتالي بوضع علامة & للفصل بينها: <td><a class='btn btn-success btn-xs' href="editdep.php?id=$depId&depName=$depName&depDes=$depDes">update</a></td> ويجب تعديل صفحة editdept.php كالتالي: <?php // --> الكود القديم $id = $_GET['id']; require_once("../DBConnection.php"); require_once("../settings.php"); $con = new DBConnection($localhost); $depId = $_POST['depId']; $depName = $_POST['depName']; $depDes = $_POST['depDes']; $cmd = $con->runQuery("update department set depName= '$depName' , '$depDes' where Id = $depId"); // --> الكود الجديد $id = $_GET['id']; $depName = $_GET['depName']; $depDes = $_GET['depDes']; require_once("../DBConnection.php"); require_once("../settings.php"); $con = new DBConnection($localhost); $cmd = $con->runQuery("update department set depName = $depName , depDes = $depDes where Id = $id"); ?> حيث يتم تمرير المتغيرات عن طريق الرابط وبالتالي لاستخدامها في PHP عن طريق GET بالنسبة للسؤال الرابع: يجب عليك تغيير ترتيب العمليات، بما أنك قمت بربط الجدولين sweets و products بمفتاح ثانوي، يجب أولاً التأكد من وجود الصنف الأساسي قبل إضافة الصنف الثانوي، ففي حالتك يتم إضافة صنف ثانوي لصنف أساسي غير موجود وبالتالي لا يمكن ربطه عن طريق المفتاح. ملاحظة: أيضاً يجب عليك الانتباه لاستعمال علامات التنصيص المفردة والمزدوجة في PHP أثناء التعامل مع المتغيرات، فعند استعمال علامات تنصيص مفردة لا تتم معالجة المتغير وبالتالي لا نحصل على قيمته، مثال: $x = 5; echo 'the value of x is: $x'; النتيجة: the value of x is $x أما: echo "the value of x is: $x"; النتيجة: the value of x is: 5 وفي حال أردت استعمال علامات التنصيص المفردة يجب دمجها مع المتحول كالتالي 'the value of x is: ' . $x أما بالنسبة للسؤال الثالث فلم أجد الكود الموافق لعملية الإضافة ضمن الملفات المرفقة من قبل حضرتك، ربما يجب عليك وضع جميع الملفات المتعلقة بالمشروع بملف واحد وضغطها ثم رفعها للسهولة، وفي حال أمكن إرفاق صورة لبنية الجداول في قاعدة البيانات لنتمكن من معالجة باقي المشاكل بشكل أفضل.1 نقطة
-
السلام عليكم ورحمة الله وبركاته تحيه طيبه للجميع ارغب بستخدام بوابة دفع الاكترونية ولكن تواجهني مشكلة اني لم افهم العموله الذي تاخذها هذه البوابة او طريقة الاستقطاع صورة لتوضيح الامر الان هنا مكتوب 3.5% + $0.35 per successful sale كيف يتم حساب ذلك وليكون المثال بدولار على سبيل المثال لو قام زبون بدفع 1 دولار الى عن طريق هذا المنصة كيف سيتم الخصم من هذا 1 دولار؟ ياليت اذا احد سبق وجرب الامر ولديه فكره يفيدنا1 نقطة
-
مرحبًا مروان إن دفع المستخدم 1 دولار يتم خصم 0.35$ (خمسة وثلاثين سنت) وهذه الأخيرة ثابتة في كل عمليات البيع ثم يتم خصم 3.5% أولًا أي يتم خصم 0.02275$ وبالتالي يصبح ما يتم خصمه 2.275 + 0.35 = 0.37275$1 نقطة
-
اوكي حاضر هذه قاعده البيانات .. تحتوي ع الادمن اللي هو المتحكم الرئيسي .. جدول الشكاوي - جدول الاقسام - جدول المنتجات - جدول الطلبات - جدول المستخدمين لقد قمت بعمل كل جدول في صفحه لوحدها من اجل ان يكون التعديل اذا في خلل اسهل sweets.sql complaints.php users.php admin.php welcome.php DBConnection.php index.php1 نقطة
-
1 نقطة
-
مرحباً هبة، هل يمكنك إضافة صور من الكود التي تتعلق بهذه العمليات؟ أو رفع الكود الخاص بذلك لنتمكن من مساعدتك بشكل أفضل.1 نقطة
-
يعرف هذا بنوع الأعمدة أو نوع البيانات في قواعد البيانات. Boolean: يستخدم لتحديد نوع البيانات في العمود الذي يجب أن تخزن فيه قيمة تكون إما true أو false مثال: لو لدي عمود اسمه confirmed وفي موقع يوجد سؤال لديه اختيارين إما نعم أو لا فعندما يضغط المستخدم نعم تقوم بتخزين true في هذا العمود $table->boolean('confirmed'); string : لتخزين بيانات من نوع نص وعندما وعندما تقوم بتنفيذ تهجير البيانات بشكل فعلي ستجد أن العمود الذي قمت تحديد له نوع string في قاعدة البيانات ظاهر من نوع (varchar(255 وهو يستخدم لتخزين النصوص القصيرة مثال : لو أردنا تخزين اسم المستخدم نقوم بإنشاء عمود اسمه name ولإن الأسماء الذي نقوم بتخزينها لا تتجاوز ال255 حرف نقوم باستخدام النوع ال string $table->string('name'); integer : نقوم باستخدام هذا النوع للعمود الذي نريد تخزين فيه أرقام صحيحة $table->integer('votes'); text : نقوم باستخدام هذا النوع للعمود لنصوص الطويلة الذي من الممكن أن تتجاوز ال255 حرف مثال : لو أردنا تخزين وصف لمنتج معين في الموقع نقوم بإنشاء عمود اسمه description ومن النوع text $table->text('description'); لو أردت التعرف على المزيد من أنواع البيانات المستخدمة في ملف التهجير يمكنك زيارة التوثيق الرسمي للارافل1 نقطة
-
مرحباً أحمد، بالنظر إلى نوعية البيانات المرفقة في الصورة نجدها مصفوفة أغراض يتم جلبها من API بحيث يكون لكل عنصر من هذه المصفوفة عدد من الصفات التي يمكنك الوصول إليها وطباعتها أو التعامل معها. ولكن يجب عليك توضيح ماهي لغة البرمجة التي تقوم باستعمالها لمعالجة هذه البيانات، وما هي المشكلة التي تواجهها بالتحديد لنتمكن من مساعدتك.1 نقطة
-
مرحباً ولاء: هناك بعض الملاحظات التي يجب مراعاتها يجب تغيير الخطوط وأنصح مثلاً بخط cairo ال form ستكون أفض إذا أخذت الحقول ال width كامل السابق والتالي يجب أن يكونو أكبر من النصوص أسفلهم وبينهم مسافة والأسهم تكون أصغر في المقاسات الصغيرة يجب أن تراعي أن يكون الكلام ضمن حدود الصفحة يجب مراعاة المسافات بين العناويين الرئيسية وال div الموجود أسفلها توجد مسافات كبيرة يرجى تقليلها بين العناويين الرئيسيى والشرح يرجى ضبط المسافة بين ال tags وبعضها يرجى ضبط المسافات في المقاسات الصغيرة لل footer1 نقطة
-
وصلتني مؤخرًا رسالة من مُتابعة تنوي إطلاق مشروع متعلّق بالتّجارة الإلكترونية: أهلاً أندرو، أنفقت 5500 دولارًا على (الدورة التعليمية x) على الإنترنت، وأشعر أني تعرضتُ للاحتيال، ولم أجد المجال الذي يجب أن أستهدفه NICHE بعد أُعاني من تكدس في المعلومات بسبب الدروس والنِقاشات الأسبوعية. أبلغ من العمر 60 سنة، أحب الموضة والجمال، جدة، عزباء وأعيش وحيدة، مُحتاجة للمال، لدي القدرة على العمل لكن ليست لدي خبرة بالإنترنت، طالعتُ مقالاتك وسؤالي هو: كيف أكتشف مجالًا مُخصّصًا Niche؟ أرجو المساعدة! -أليس أتلقى عددًا مُدهشًا من الرّسائل المُشابهة على بريدي الإلكتروني، من المؤلم قراءتها، لماذا؟ لأنك ترى شخصًا في ضائقة مالية (امرأة عزباء تبلغ 60 سنة، وليس أقل) تنفق مبلغًا كبيرًا من المال في استثمار يبدو جليًا أنه لم يكن جيدًا، فحتى بوضع خسارتها للمال جانبًا، هذه السيدة الآن مُضطربة ومُحبطة. وقد يكون للأمر علاقة بتلك الفكرة السائدة التي تقول بوجود "خلطة" التي من الممكن بفضلها أن تجعل الجميع ينعمُ بالثراء عن طريق الإنترنت. هذه ليست دعوة ضد البرامج والدورات التعليمية عبر الإنترنت أو ضد المُنتجات التعليمية في حد ذاتها، فعند وقوع هذه الأخيرة بين أيدي الأشخاص المُناسبين ولمّا تحتوي على المادة عالية الجودة، يُمكن لهذه البرامج أن تكون استثمارًا جيدًا. عندما بدأت، أنفقت 800 دولار شهريًا، للالتحاق بدورة تعليمية حول تحسين أداء محركات البحث SEO والتسويق عبر الإنترنت، عمومًا الـ 4000 دولار التي أنفقتها يُمكن القول أنّها كانت استثمارًا جيدًا، فبفضلها تمكنت من تحصيل مئات الآلاف من الدولارات على شكل زوار، الفرق الأساسي بين حالتي وحالة أليس أنني كنت في وضعية مثالية لتجسيد ما تعلمته، سواء تعلق الأمر بالإطار الزمني أو المهارات. الأمر الذي أريد إيصاله كرسالة، أنه لن يكون من الحكمة إطلاق مشروع متجرك الخاص، إذا كان ما ترنُو إليه واحدًا من الأهداف التي سأذكرها لاحقًا. ليس الهدف مما أكتب تثبيطك والحط من عزيمتك، وإنما لتقديم وجهة نظر واقعية لما لا يُعرض على صفحات بيع البرامج والدورات التعليمية. الشيء الوحيد الأكثر سُوءًا من تأجيل مخططات إطلاق مشروعك أو تجارتك هو تضيع شهور بل ربما أعوام من الوقت والمال بسبب عدم النزاهة في إبراز المطلوب لتحقيق النجاح. 1- تبحث عن الربح السريع إن كان هدفك هو تحقيق ربح سريع، فإطلاق متجر إلكتروني سيكون حقًا فكرة سيئة، إنشاء متجر إلكتروني عملٌ شاق يحتاج أشهرًا عديدة من البحث والتحضير، كما يحتاج في العادة إلى سنين لجني العائدات الضخمة والنتائج المرغوبة، فإذا كنت مُحتاجًا لمدخول إضافي لسداد إيجار هذا الشهر أو لا تملك ما يكفي لتغطية مصاريفك واحتياجاتك، فأفضل ما قد تُراهن عليه هو زيادة مدخولك عن طريق عمل تقليدي كأجير في أقرب الآجال. هذا لا يعني أن تحكم على نفسك بالعمل أجيرًا لبقية حياتك، وإنما في الحقيقة هذا ما تحتاجه لتسوية أمورك العالقة من مصاريف وحاجيات، فأي شخص يُغريك بإمكانية البدء سريعًا في جني الأموال المُعتبرة بواسطة مشروع صغير على الإنترنت –خاصة مع "نظام" مُعد مُسبقًا-فهو يبيعك وهمًا يستحيل تحقيقه. مثلها مثل جميع المشاريع التقليدية الأخرى، التجارة الإلكترونية تحتاج وقتًا لتنمو وتكبُر. سيكون مطلوبًا منك أيضًا اتخاذ قرارات لتحقيق أفضل منفعة، تكون طويلة الأمد وتخدم مشروعك، وهو ما يتعارض عادة مع الاحتياجات المالية التي تتميز بالإنفاق الحاني قصير الأمد. فإن كنت ممن يستخدم كل سنت من الأرباح في سداد الفواتير، فلن تستطيع تحمل عملية إعادة استثمار وتمويل مشروعك. 2- تبحث عن ضمانات مما يصِلني بشكل مُستمر ومتكرر على بريدي الإلكتروني: "كيف يُمكنُني أن أكون مُتأكدًا من نجاح هذا المشروع؟ لا يمكنني تحمل إضاعة الوقت في فكرة غير ناجحة." لا توجد ضمانات في عالم ريادة الأعمال، فبالرغم مما قد تُبرمجك الدورة التعليمية على الإيمان به. يبقى المكان الوحيد الذي يضمن لك مدخولًا معلومًا، مُحددًا وفي وقته هو –لقد حزرته! –هي تلك الوظيفة التقليدية التي تعمل فيها كأجير. كونك رائد أعمال يتطلب منك هذا الوضع اتخاذ قرارات وإجراءات من دون ضمانات النجاح، تلك التي تتخذها مُتبعًا استراتيجيةً، تفكيرًا جيدًا وخطةً مُحكمة، ثم مع نهاية اليوم تمضي قُدُمًا إلى الأمام غاضًا النظر ومُتغلبًا على شُكوكٍ اعترتك جراء اتخاذك لقرارات سابقة، فمع كل مشروع كنت أطلقته، كانت لي شُكوكٌ وتحفظات حول ما إذا كنت سأنجح أم لا، في حين انتهت بعض تلك المشاريع بطريقة مُرضية، انتهت أخرى بطريقة غير تلك. فما كنُت أبدًا لأعرف النتيجة لولا أني تغلبت على شعور الخوف وأخذت زمام المُبادرة. ثقّف نفسك، ابحث، ثابر، ومن ثم اتخذ القرار مُتغلبًا على مخاوفك وتحفظاتك. هو فعلًا الخيار الوحيد الذي تملك. فإن كُنت لا تستطيع تحمل وقع الخسارة (رهانُك على نجاح المشروع كمثال)، فلا تبدأ فيه أصلًا. 3- لا ترغب في التّراجع خطوة إلى الخلف البدء في مشروعك التجاري الخاص يتطلب نوعًا من التضحيات، وعادة ما يتعلّق ذلك بالوقت والمال، تحتاج أن تملك واحدة من العُملتين، فإن لم يكون بمقدورك استثمار واحدة من الاثنتين، فلن يكون بمقدورك بناء مشروع فعّال. كلّ قصة نجاح مشروع لها علاقة جِوار مع الاستثمار، التضحية والتراجع بشكل مؤقت. بالنسبة لي، كنت أعمل كالمجنون وأدخرُ كالبخيل لمدة عامين توفيرًا للمال، بحيث يمكنني بعدها التخلي عن عملي والتركيز على مشروعي، وكمثال آخر حدث مع صديق والذي كان مُجبرًا على التضحية بعطلة نهاية الأسبوع كي يستطيع العمل على متجره الإلكتروني. وحتى بيل غايتس لم يعُد يرتاد هارفارد ليجرب حظه في إطلاق مايكروسوفت –خطوة كهذه، حينها، حتمًا كانت تُعتبر تراجعًا كبيرًا إلى الخلف. 4- معرفتك التّقنية محدودة جدًا المُلاحظ بشكل كبير اليوم سُهولة إطلاق مشروع على الإنترنت، حتى مُقارنةً مع الأعوام القليلة التي خلت، فخدمات مثل Shopify وBigCommerce جعلت أمر إنشاء متجر إلكتروني مُمكنًا حتى بدون خبرة برمجية مُسبقة وبرصيد تكنولوجي معرفي بسيط، لكن إذا كنت تصفُ نفسك بمن "لا يجيد استعمال الإنترنت" Not Web Savvy (كأليس)، فالأكيد أنك ستجد صعوبة ومشقة. أن تملك "معرفة بالإنترنت" هو ما ستدفعه كتكلفة محاولة الحصول عل مشروع تجاري فعّال. فإن كنت تجد صعوبة في إنشاء بريد إلكتروني، إدارة خدماتك المصرفية عبر الإنترنت أو استعمال فيس بوك، ستصاب حينها بإحباطٍ شديد جراء محاولة إنشاء متجر إلكتروني، وحتى مع توفر كلّ الأدوات سهلة الاستعمال، فعلى بساطتها لا يزال استعمالها يتطلب مهارات أساسية في استعمال الإنترنت، مثلها مثل الموارد الأخرى التي تحتاجها لبناء، تسويق وإدارة متجرك. كُن قويًا، شُجاعًا ولا تترك للإحباط مجالًا مما يبعث على الأمل توفر إمكانية إطلاق مشروع تجاري ناجح، حتى مع عدم توفر الأرضية الملائمة والقوية لإطلاق مشروعك. سيتطلب الأمر ترتيب أولوياتك المالية بحيث تكون مُؤَمنًا أكثر ماليًا من خلال الاستفادة المادية من الوظيفة الحالية أو تسريع المشروع مُستفيدًا من التقنيات التكنولوجية البسيطة. الظروف المذكورة أعلاه ليست ثابتة وراسخة أو سمات وصفات قد جُبلت وثبّتت. كلها عوامل قابلة للتغيير بالجهد ومع الوقت. أما إذا تقدم بك السن كأليس وصِرت خارج قالب العشرينيات من العمر التقليدي المتعارف عليه في أوساط رُواد الأعمال على الإنترنت، فرجاءً لا يأخذنّ الإحباط منك مأخذًا ولا تُفسر المعنى من المقال أنه يٌقلل من احتمالية النجاح. تحدثتُ في الأسبوع الماضي مع صديق يعمل في مجال التجارة الإلكترونية وكمُدرب أيضًا، أين أخبرني عن حوالي 70 شخصًا عملِ معهم أطلقوا مؤخرًا متاجر إلكترونيًة رائعًة. وأنا شخصيًا وصلني عدد مُعتبر من الرسائل الإلكترونية من مُقربين فاق عددهم 60 يُزاولون تجارتهم الإلكترونية من موقعي قوة وكفاءة. الخلاصة؟ احرص على أن تُطلق مشروعك التجاري من المكان وبالتوقعات المُناسبين، حينها ستزيد من احتمالات النجاح. ترجمة –وبتصرف-للمقال 4 Signs You Shouldn’t Start an Online Store لصاحبه أندرو يوديران.1 نقطة
-
" السلام عليكم ورحمة الله وبركاته " اريد تعلم برمجة والالعاب بي استخدام منصة يونتي ولكن اريد تعلم لغة سي شارب اريد قناة او دورة ولكن باللغة عربيه وهل تعلم الاساس الأساسيات لغة سي شارب كافي او يلزمني احترافها؟1 نقطة
-
لطالما وفّر إطار العمل Laravel آليات سهلة للاستيثاق Authentication بالطرق التقليدية مثل استمارات Forms تسجيل الدخول في واجهة الوِب؛ إلا أن الأمر لم يكن سهلا بما فيه الكفاية بالنسبة للاستيثاق من الطلبات القادمة عبر واجهة تطبيقات برمجية. يأتي الإصدار 5.3 بحزمة جديدة، تُسمّى Passport، تهتم بتيسير استخدام Laravel لضبط خادوم Oauth وإعداده. يتناول هذا الدرس كيفية إعداد Laravel ليوفّر وظيفة خادوم Oauth اعتمادا على حزمة Passport. خادوم Oauth من المحتمل جدّا أنه سبق لك التعامل مع خادوم Oauth؛ مثلا عند استخدام حسابات على الشبكات الاجتماعية (فيس بوك، تويتر، … إلخ) للتسجيل في موقع على الشبكة. الفكرة التي تنبني عليها آلية الاستيثاق هذه هي تفويض عمليّة الاستيثاق إلى خادوم Oauth. نفترض مثلا أن لديك موقعا يستخدم هذه الآلية؛ عند تسجيل دخول الموقع عن طريق الحساب على فيس بوك فإن ما يحدُث هو التالي: يلج المستخدم إلى الموقع ويختار طريقة تسجيل الدخول (فيس بوك). يُنقَل المستخدم إلى صفحة تسجيل الدخول في فيس بوك حيثُ يُطلَب منه تسجيل الدخول إن لم يكن سبق له ذلك ثم يؤكّد سماحه لموقعك باستخدام حسابه على فيس بوك. يُعاد توجيه المستخدم إلى الموقع مع تسجيل دخوله إليه. يفترض هذا الدرس أن لديك إلماما بكيفية عمل خواديم Oauth للتصريح بالدخول. يمكن الاطّلاع على مقال مدخل إلى OAuth 2 للمزيد عن هذا الموضوع. إن كنتَ تبحث عن كيفية تسجيل الدخول إلى تطبيقك باستخدام حساب على موقع يوفّر وظيفة Oauth فراجع درس تسجيل الدخول عبر الشبكات الاجتماعية في Laravel باستخدام Socialite. إعداد خادوم Oauth على Laravel 5.3 يحتاج إعداد Passport على Laravel لتنفيذ بضعة أوامر وتحرير ملفات إعداد؛ إلا أن العملية عموما سهلة. ابدأ بتثبيت الإصدار 5.3 من Laravel: composer create-project --prefer-dist laravel/laravel laravel53oauth "5.3.*" نستخدم composer لإضافة حزمة Passport إلى متطلبات المشروع: composer require laravel/passport نسجّل مزوّد الخدمة Passport في ملفّ الإعداد config/app.php. افتح الملف ثم أضف السطر التالي إلى مصفوفة providers: Laravel\Passport\PassportServiceProvider::class, تأكّد من إعدادات قاعدة البيانات ثمّ نفّذ أمر التهجير Migration التالي: php artisan migrate ستلاحظ تنفيذ تهجيرات إضافية علاوة على تلك التي تأتي مبدئيّا مع Laravel: Migration table created successfully. Migrated: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_100000_create_password_resets_table Migrated: 2016_06_01_000001_create_oauth_auth_codes_table Migrated: 2016_06_01_000002_create_oauth_access_tokens_table Migrated: 2016_06_01_000003_create_oauth_refresh_tokens_table Migrated: 2016_06_01_000004_create_oauth_clients_table Migrated: 2016_06_01_000005_create_oauth_personal_access_clients_table يأتي مزوّد الخدمة Passport مع تهجيرات لإنشاء جداول تخزّن عملاء Client التطبيق ومعلومات رموز الوصول Access tokens. ثم ننفّذ الأمر التالي الذي سيولّد مفاتيح التعميّة Encryption keys الخاصّة بمشروع كما أنه ينشئ رموز الوصول ويخزّنها في جدول البيانات المناسب: php artisan passport:install ننتقل الآن إلى نموذج المستخدم User ونضيف إليه السّمة Trait المسمّاة HasApiTokens. يُصبح النموذج على النحو التالي (بعد نزع التعليقات للاختصار): <?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; // استيراد السّمة use Laravel\Passport\HasApiTokens; class User extends Authenticatable { // استخدام السمة use HasApiTokens, Notifiable; protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ]; } توفّر هذه السّمة مجموعة من الدوال المساعدة التي تتيح الحصول على رموز الوصول الخاصّة بالمستخدمين ومدى الصلاحيّات Permissions scope المتاح للعميل. الخطوة المواليّة هي استدعاء الدالة Passport::routes ضمن الدالة boot الموجودة في مزوّد خدمة الاستيثاق app/Providers/AuthServiceProvider.php: public function boot() { $this->registerPolicies(); Passport::routes(); } لا تنس استدعاء الصنف Laravel\Passport\Passport في مزوّد خدمة الاستيثاق: use Laravel\Passport\Passport; يمكنك ملاحظة المسارات الجديدة التي أضافتها الدالة Passport::routes بتنفيذ أمر Artisan التالي الذي يسرُد لائحة بالمسارات الموجودة في المشروع: php artisan route:list الخطوة الأخيرة هي تعديل ملف الإعداد config/auth.php وتحديد قيمة driver في المصفوفة api لتصبح passport بدلا من token: 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], يعتمد Laravel مبدئيا على رموز للاستيثاق من الطلبات القادمة عبر واجهة التطبيقات البرمجية؛ إلا أن هذه الرموز المبدئية لا تتيح إلا القليل من الخيارات، عكس ما يوفّره Passport. بهذا نكون أنهينا إعداد Laravel لأداء وظيفة خادوم Oauth. اختبار خادوم Oauth المرحلة المواليّة بعد إعداد Laravel ليعمل خادوم Oauth هي اختبار ما أعددناه. سنحتاج لعميل نجرّب عن طريقه الاستيثاق من الخادوم. نعيد النظر، قبل الانتقال للجانب التطبيقي من الاختبار، في كيفية الاستيثاق من مستخدم في خادوم Oauth. تضمّ العمليّة ثلاثة أطراف: المستخدِم، الخادوم والعميل. يريد المستخدِم تسجيل الدخول إلى العميل بالاعتماد على معلوماته الموجودة في الخادوم: ينقُل العميل المستخدِم إلى صفحة تسجيل الدخول على الخادوم. يُسجّل المستخدم الدخول إلى حسابه على الخادوم عن طريق بريده الإلكتروني وكلمة السّر. يتحقّق الخادوم من بيانات المستخدِم، ثم ينشئ - إذا كانت البيانات صحيحة - رمز وصول خاصًّا بالمستخدِم ويعيده إلى العميل. يستعمل العميل رمز الوصول الذي أرسله إليه الخادوم في طلباته المقبلة للتدليل على أن المستخدم فوّضه التعامل باسمه مع الخادوم. إنشاء مستخدمين للاختبار نبدأ بإنشاء مستخدمين لتجربة الاستيثاق. ننفذ أمر Artisan التالي لإنشاء صنف بذر Seed جديد: php artisan make:seeder UsersTableSeeder ثم نعدّل الدالة run لإنشاء مستخدمَيْن جديديْن: public function run() { $user1 = [ 'name' => 'Med Ahmed Eyil', 'email' => 'medeyil@laravel.com', 'password' => Hash::make('1234'), ]; $user2 = [ 'name' => 'Fatima Benziane', 'email' => 'fbenziane@laravel.com', 'password' => Hash::make('4567'), ]; User::create($user1); User::create($user2); } لا تنس استيراد النموذج User: use App\User; ثم نعتمد صنف البذر بتعديل الدالة run في الصنف DatabaseSeeder: public function run() { $this->call(UsersTableSeeder::class); } ثم ننفذ أمر البذر: php artisan db:seed جهّزنا الآن طرفيْن من الأطراف الثلاثة التي تحدثنا عنها، بقي العميل. إعداد العميل يوفّر Laravel بواسطة Passport مسارات من بينها المسار oauth/token/ الذي يمكّن من الحصول على رمز وصول. ينتظر المسار المعطيَات التاليّة: طريقة منح الصلاحيّة grant_type. معرّف المستخدم client_id. عبارة سر العميل client_secret. يحدّد المعطى grant_type طريقةَ توليد رموز الوصول. بما أننا نريد أن يطلُب الخادوم من المستخدم بريده الإلكتروني وكلمة السّر لكي يولّد رمز وصول للتطبيق العميل، فإن هذا المعطى سيأخذ القيمة password. يمكن لهذا المعطى أن يأخذ قيما أخرى حسب الطريقة التي تريد للتطبيقات العميلة أن تصل بها إلى موارد محميّة على خادومك. يعيّن المعطى الثاني معرّف العميل الذي نريد الاستيثاق منه؛ أما عبارة السّر فمهمتها إثبات أن العميل لديه ترخيص للاستيثاق بخادوم Oauth الذي أعددناه. سنحتاج أيضا لتمرير بريد المستخدم الإلكتروني وكلمة سره، بما أننا اخترنا طريقة password لتوليد الرموز. نعود لمشروع Laravel حيث يوجد الخادوم ثم ننفذ الأمر التالي: php artisan passport:client --password What should we name the password grant client? [Laravel Password Grant Client]: > Academy Password Client Password grant client created successfully. Client ID: 3 Client Secret: 17ZNjWn5A1I3mYOhGXZQFNACTdyt9Nwxup9jXG4M يطلُب الأمر أعلاه إنشاء تصريح لعميل للاستيثاق بخادوم Oauth ويحدّد طريقة توليد رموز الوصول بـpassword. يطلُب الأمر اسمًا للعميل ثم بعد كتابته وتأكيده يمنحنا معرّفا للعميل وعبارة سرّ. ملحوظة: رمز الوصول المولَّد فريد Unique، القيمة التي ستظهر لديك مختلفة حتما عن القيمة الظاهرة هنا. نعرّج قليلا، قبل الانتقال إلى العميل، على قاعدة البيانات وننظر في الجدول oauth_clients. لاحظ في الجدول وجود العميل الذي أنشأناه للتو، إضافة إلى عميليْن آخرين؛ أنشأهما الأمر passport:install عندما نفّذناه. تمكن ملاحظة أن قيمة العمود password_client بالنسبة للعميل الذي أنشأناه هي 1 للدلالة على أنه من نوع password. نأتي الآن للعميل، الذي يمكن أن يكون تطبيق وِب، تطبيقا للأجهزة المحمولة أو غيره. بالنسبة لي سأختار إضافة Postman على متصفح Chrome، وهي إضافة تمكّن من اختبار واجهات التطبيقات البرمجية. إرسال الطلبات نشغّل خادوم Passport بتنفيذ الأمر: php artisan serve ثم نفتح واجهة Postman ونعطيه المسار oauth/token/ ونمرّر له المعطيات التي تحدّثنا عنها سابقا. نحدّد نوع الإجراء بـ POST، ونختار تبويب Body لأننا في صدد ذكر بيانات جسم الطلب، ونختار x-www-form-urlencode للترميز. يؤدي استخدام الترميز x-www-form-urlencode إلى إرسال البيانات بنفس الطريقة التي تُرسَل بها بيانات استمارة Form على موقع وِب باستخدام الإجراء POST. إن كنتَ تُفضّل سطر الأوامر فبإمكانك تنفيذ أمر curl التالي والذي يؤدي نفس المهمّة (الخيار d- لاستخدام الترميز x-www-form-urlencode): curl -d "grant_type=password&client_id=3&client_secret=17ZNjWn5A1I3mYOhGXZQFNACTdyt9Nwxup9jXG4M&username=medeyil@laravel.com&password=1234" http://localhost:8000/oauth/token نحصُل بعد ذكر المعطيات الصحيحة وتنفيذ الطلب على الرد التالي: { "token_type": "Bearer", "expires_in": 31536000, "access_token":"رمز طويل هنا" , "refresh_token": "رمز طويل هنا" } تتضمن الإجابة أربعة حقول: نوعية الرمز token_type. يعني النوع bearer أن بإمكان الرمز منح الوصول إلى الخادوم دون الحاجة لذكر معلومات إضافية (مثل مفاتيح التعمية). مدة صلاحيّة الرمز expires_in. يحدّد مدّة صلاحيّة الرمز، بالثواني. يحدّد Laravel مبدئيا مدة طويلة (حوالي سنة)؛ إلا أنه يمكن تغيير هذه المدة. رمز الوصول access_token. رمز التحديث refresh_token. يُستخدَم لطلب رمز وصول جديد عند انتهاء مدة صلاحية رمز الوصول الحالي. حصلنا على رمز الوصول؛ سنرى الآن كيفية استخدامه للوصول إلى موارد على الخادوم. يُرسِل العميل من الآن فصاعدا رمزَ الوصول الذي حصل عليه مع كل طلب موجّه للخادوم يحتاج للاستيثاق. إن نظرت في ملفّ مسارات واجهة التطبيقات البرمجية routes/api.php فستجد أن المسار user/ محميّ بـ auth:api: Route::get('/user', function (Request $request) { return $request->user(); })->middleware('auth:api'); يعني هذا أنه يتوجّب على المستخدم تقديم بيانات الاستيثاق الخاصّة بواجهة التطبيقات، التي جعلناها تعتمد على التعريف passport، حتى يتمكن من الحصول على المورِد (الذي هو في المثال أعلاه بيانات المستخدم الذي أرسل الطلب). نعود لـPostman لطلب المسار api/user/ مع تقديم رمز الوصول الذي حصلنا عليه سابقا. ملحوظة: تنبغي إضافة api/ إلى جميع المسارات المعرّفة في الملف routes/api.php. نحدّد في خانة الترويسة Headers طبيعة المعلومات التي نريد تقديمها إلى المسار والإجراء GET المعرَّف في المسار user/ الخاص بواجهة التطبيقات. الترويسة التي نريد تحديد قيمتها هي Authorization (طلب استيثاق) وقيمتها هي: Bearer access_token حيث access_token رمز الوصول الذي حصلنا عليه في الخطوة السابقة، مسبوقا بنوع الرمز (Bearer). نحصُل على معلومات المستخدِم الذي قدّم الطلب. يمكن الحصول على نفس النتيجة بأمر curl التالي: curl -H "Authorization: Bearer access_token" http://localhost:8000/api/user يعني الخيار H- أننا نريد تضمين الترويسة التاليّة له في الطلب. نلاحظ أن الإجابات التي نحصُل عليها من خادوم Passport مهيّأة بصيغة JSON، وهو ما يجعل التعامل معها سهلا في التطبيقات العميلة على الأجهزة المحمولة والمتصفّحات. الخلاصة هي أننا استخدمنا بيانات المستخدم (البريد وكلمة السر) للحصول على رمز وصول من خادوم Passport ثم استخدمنا رمز الوصول هذا للاطلاع على موارد محميّة على الخادوم.1 نقطة
-
1 نقطة