9 نصائح أمنية لحماية موقع الويب الخاص بك من المتسللين

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

يتم تنفيذ القرصنة بانتظام بواسطة نصوص آلية مكتوبة للبحث في الإنترنت في محاولة لاستغلال مشكلات أمان مواقع الويب المعروفة في البرامج. فيما يلي أهم تسع نصائح لمساعدتك في الحفاظ على أمان موقعك وموقعك على الإنترنت.

01. تحديث البرامج باستمرار

قد يبدو الأمر واضحًا ، لكن ضمان تحديث جميع البرامج أمر حيوي في الحفاظ على أمان موقعك. ينطبق هذا على كل من نظام تشغيل الخادم وأي برنامج قد تقوم بتشغيله على موقع الويب الخاص بك مثل CMS أو المنتدى. عندما يتم العثور على ثغرات أمنية في موقع الويب ، يسارع المتسللون إلى محاولة إساءة استخدامها.



إذا كنت تستخدم حل استضافة مُدار ، فلا داعي للقلق كثيرًا بشأن تطبيق التحديثات الأمنية لنظام التشغيل حيث يجب أن تهتم الشركة المضيفة بهذا الأمر.

إذا كنت تستخدم برنامجًا تابعًا لجهة خارجية على موقع الويب الخاص بك مثل CMS أو منتدى ، فيجب عليك التأكد من سرعة تطبيق أي تصحيحات أمان. لدى معظم البائعين قائمة بريدية أو موجز RSS يوضح بالتفصيل أي مشكلات تتعلق بأمان موقع الويب. ووردبريس تقوم Umbraco والعديد من أنظمة إدارة المحتوى الأخرى بإخطارك بتحديثات النظام المتاحة عند تسجيل الدخول.

يستخدم العديد من المطورين أدوات مثل Composer أو npm أو RubyGems لإدارة تبعيات البرامج الخاصة بهم ، وتعد الثغرات الأمنية التي تظهر في حزمة تعتمد عليها ولكن لا توليها أي اهتمام من أسهل الطرق للوقوع في الخطأ. تأكد من تحديث تبعياتك ، واستخدم أدوات مثل جيمناسيوم للحصول على إشعارات تلقائية عند الإعلان عن ثغرة أمنية في أحد مكوناتك.

02. احترس من حقن SQL

تحدث هجمات حقن SQL عندما يستخدم المهاجم حقل نموذج ويب أو معلمة URL للوصول إلى قاعدة بياناتك أو معالجتها. عند استخدام Transact SQL القياسي ، من السهل إدخال رمز خادع في استعلامك عن غير قصد والذي يمكن استخدامه لتغيير الجداول والحصول على المعلومات وحذف البيانات. يمكنك منع ذلك بسهولة عن طريق استخدام الاستعلامات ذات المعلمات دائمًا ، وتتمتع معظم لغات الويب بهذه الميزة ومن السهل تنفيذها.

ضع في اعتبارك هذا الاستعلام:

كيفية احتواء القماش على الصورة في الفوتوشوب
'SELECT * FROM table WHERE column = '' + parameter + '';'

إذا قام مهاجم بتغيير معلمة URL لتمرير 'أو' 1 '=' 1 ، فسيؤدي ذلك إلى ظهور الاستعلام بالشكل التالي:

'SELECT * FROM table WHERE column = '' OR '1'='1';'

نظرًا لأن '1' يساوي '1' ، فإن هذا سيسمح للمهاجم بإضافة استعلام إضافي إلى نهاية عبارة SQL والتي سيتم تنفيذها أيضًا.

يمكنك إصلاح هذا الاستعلام عن طريق تحديد معلماته بشكل صريح. على سبيل المثال ، إذا كنت تستخدم MySQLi في PHP ، يجب أن يصبح هذا:

$stmt = $pdo->prepare('SELECT * FROM table WHERE column = :value'); $stmt->execute(array('value' => $parameter));

03. حماية ضد هجمات XSS

تعمل هجمات البرمجة النصية عبر المواقع (XSS) على ضخ جافا سكريبت ضار في صفحاتك ، والتي تعمل بعد ذلك في متصفحات المستخدمين ، ويمكنها تغيير محتوى الصفحة أو سرقة المعلومات لإرسالها مرة أخرى إلى المهاجم. على سبيل المثال ، إذا عرضت تعليقات على صفحة دون التحقق من الصحة ، فقد يرسل المهاجم تعليقات تحتوي على علامات نصية وجافا سكريبت ، والتي يمكن أن تعمل في مستعرض كل مستخدم آخر وتسرق ملف تعريف ارتباط تسجيل الدخول الخاص به ، مما يسمح للهجوم بالتحكم في حساب كل المستخدم الذي شاهد التعليق. تحتاج إلى التأكد من عدم تمكن المستخدمين من إدخال محتوى جافا سكريبت نشط في صفحاتك.

يعد هذا مصدر قلق خاص في تطبيقات الويب الحديثة ، حيث يتم إنشاء الصفحات الآن بشكل أساسي من محتوى المستخدم ، والتي في كثير من الحالات تنشئ HTML الذي يتم تفسيره أيضًا من خلال أطر العمل الأمامية مثل Angular و Ember. توفر أطر العمل هذه العديد من حماية XSS ، ولكن المزج بين تقديم الخادم والعميل يخلق طرق هجوم جديدة وأكثر تعقيدًا أيضًا: لا يقتصر الأمر على حقن JavaScript في HTML بشكل فعال ، ولكن يمكنك أيضًا حقن المحتوى الذي سيعمل على تشغيل التعليمات البرمجية عن طريق إدخال توجيهات Angular ، أو استخدام Ember مساعدين.

المفتاح هنا هو التركيز على كيف يمكن للمحتوى الذي ينشئه المستخدم تجاوز الحدود التي تتوقعها وأن يفسرها المتصفح على أنه شيء آخر ما كنت تقصده. هذا مشابه للدفاع ضد حقن SQL. عند إنشاء HTML ديناميكيًا ، استخدم الوظائف التي تُجري التغييرات التي تبحث عنها بشكل صريح (على سبيل المثال ، استخدم element.setAttribute و element.textContent ، والتي سيتم تجاوزها تلقائيًا بواسطة المتصفح ، بدلاً من إعداد element.innerHTML يدويًا) ، أو استخدم وظائف في أداة القوالب التي تعمل تلقائيًا على الهروب المناسب ، بدلاً من ربط السلاسل أو إعداد محتوى HTML الخام.

أداة قوية أخرى في صندوق أدوات المدافع XSS هي سياسة أمان المحتوى (CSP). CSP هو رأس يمكن لخادمك إرجاعه والذي يخبر المتصفح بالحد من كيفية تنفيذ JavaScript وما يتم تنفيذه في الصفحة ، على سبيل المثال لعدم السماح بتشغيل أي نصوص برمجية غير مستضافة على نطاقك أو عدم السماح لـ JavaScript المضمنة أو تعطيل Eval (). لدى Mozilla امتداد دليل ممتاز مع بعض أمثلة التكوينات. هذا يجعل من الصعب على البرامج النصية للمهاجم العمل ، حتى لو تمكنوا من إدخالها إلى صفحتك.

04. احذر رسائل الخطأ

كن حذرًا بشأن مقدار المعلومات التي تقدمها في رسائل الخطأ. قدِّم فقط الحد الأدنى من الأخطاء للمستخدمين ، لضمان عدم تسريبهم للأسرار الموجودة على الخادم (مثل مفاتيح واجهة برمجة التطبيقات أو كلمات مرور قاعدة البيانات). لا تقدم تفاصيل كاملة عن الاستثناءات أيضًا ، لأن هذه يمكن أن تجعل الهجمات المعقدة مثل حقن SQL أسهل بكثير. احتفظ بأخطاء مفصلة في سجلات الخادم ، واعرض للمستخدمين المعلومات التي يحتاجون إليها فقط.

05. تحقق من كلا الجانبين

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

06. تحقق من كلمات المرور الخاصة بك

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

بقدر ما قد لا يعجب المستخدمين ، فإن فرض متطلبات كلمة المرور مثل ثمانية أحرف على الأقل ، بما في ذلك الحرف الكبير والرقم سيساعد في حماية معلوماتهم على المدى الطويل.

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

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

لحسن الحظ ، توفر العديد من أنظمة إدارة المحتوى إدارة للمستخدم خارج الصندوق مع الكثير من ميزات أمان مواقع الويب المضمنة ، على الرغم من أن بعض التكوين أو الوحدات الإضافية قد تكون مطلوبة لاستخدام كلمات المرور المملحة (قبل دروبال 7) أو لتعيين الحد الأدنى من قوة كلمة المرور. إذا كنت تستخدم .NET ، فمن المفيد استخدام موفري العضوية لأنهم قابلين للتكوين للغاية ، ويوفرون أمانًا داخليًا لموقع الويب ويتضمن عناصر تحكم جاهزة لتسجيل الدخول وإعادة تعيين كلمة المرور.

07. تجنب تحميل الملفات

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

ما معنى أن تكون مصمم جرافيك

إذا كان لديك نموذج تحميل ملف ، فأنت بحاجة إلى التعامل مع جميع الملفات بشك كبير. إذا كنت تسمح للمستخدمين بتحميل الصور ، فلا يمكنك الاعتماد على امتداد الملف أو نوع mime للتحقق من أن الملف عبارة عن صورة حيث يمكن تزويرها بسهولة. حتى فتح الملف وقراءة العنوان ، أو استخدام وظائف للتحقق من حجم الصورة ليست مضمونة. تسمح معظم تنسيقات الصور بتخزين قسم تعليق قد يحتوي على كود PHP يمكن للخادم تنفيذه.

إذن ما الذي يمكنك فعله لمنع هذا؟ في النهاية تريد منع المستخدمين من تنفيذ أي ملف يقومون بتحميله. بشكل افتراضي ، لن تحاول خوادم الويب تنفيذ ملفات ذات امتدادات صور ، ولكن لا تعتمد فقط على التحقق من امتداد الملف كملف بالاسم image.jpg.php من المعروف أنه يمر.

تتمثل بعض الخيارات في إعادة تسمية الملف عند التحميل للتأكد من امتداد الملف الصحيح ، أو لتغيير أذونات الملف ، على سبيل المثال ، chmod 0666 بحيث لا يمكن تنفيذه. في حالة استخدام * nix ، يمكنك إنشاء ملف .htaccess (انظر أدناه) والذي سيسمح فقط بالوصول لتعيين الملفات التي تمنع هجوم الامتداد المزدوج المذكور سابقًا.

deny from all order deny,allow allow from all

في النهاية ، الحل الموصى به هو منع الوصول المباشر إلى الملفات التي تم تحميلها تمامًا. بهذه الطريقة ، يتم تخزين أي ملفات تم تحميلها على موقع الويب الخاص بك في مجلد خارج webroot أو في قاعدة البيانات على هيئة blob. إذا لم يكن من الممكن الوصول إلى ملفاتك بشكل مباشر ، فستحتاج إلى إنشاء برنامج نصي لجلب الملفات من المجلد الخاص (أو معالج HTTP في .NET) وتسليمها إلى المتصفح. تدعم علامات الصور سمة src التي ليست عنوان URL مباشرًا لصورة ، لذلك يمكن أن تشير السمة src إلى البرنامج النصي لتسليم الملف بشرط أن تقوم بتعيين نوع المحتوى الصحيح في رأس HTTP. على سبيل المثال:

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

تأكد من أن لديك إعداد جدار حماية ، وأنك تحظر جميع المنافذ غير الأساسية. إذا أمكن ، قم بإعداد DMZ (منطقة منزوعة السلاح) للسماح فقط بالوصول إلى المنفذين 80 و 443 من العالم الخارجي. على الرغم من أن هذا قد لا يكون ممكنًا إذا لم يكن لديك وصول إلى الخادم الخاص بك من شبكة داخلية ، إلا أنك ستحتاج إلى فتح منافذ للسماح بتحميل الملفات وتسجيل الدخول عن بُعد إلى الخادم الخاص بك عبر SSH أو RDP.

إذا كنت تسمح بتحميل الملفات من الإنترنت ، فاستخدم فقط طرق النقل الآمنة إلى الخادم الخاص بك مثل SFTP أو SSH.

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

أخيرًا ، لا تنس تقييد الوصول الفعلي إلى الخادم الخاص بك.

08. استخدم HTTPS

HTTPS هو بروتوكول يستخدم لتوفير الأمان عبر الإنترنت. يضمن HTTPS أن المستخدمين يتحدثون إلى الخادم الذي يتوقعونه ، وأنه لا يمكن لأي شخص آخر اعتراض أو تغيير المحتوى الذي يرونه أثناء النقل.

إذا كان لديك أي شيء قد يريده المستخدمون خاصًا ، فمن المستحسن جدًا استخدام HTTPS فقط لتقديمه. هذا بالطبع يعني بطاقات الائتمان وصفحات تسجيل الدخول (وعناوين URL التي يرسلونها إليها) ولكن عادةً ما تكون أكثر بكثير من موقعك أيضًا. غالبًا ما يقوم نموذج تسجيل الدخول بتعيين ملف تعريف ارتباط على سبيل المثال ، يتم إرساله مع كل طلب آخر إلى موقعك يقوم به مستخدم قام بتسجيل الدخول ، ويتم استخدامه لمصادقة هذه الطلبات. المهاجم الذي يسرق هذا سيكون قادرًا على محاكاة المستخدم بشكل مثالي والاستيلاء على جلسة تسجيل الدخول الخاصة به. لهزيمة هذا النوع من الهجمات ، فأنت تريد دائمًا استخدام HTTPS لموقعك بالكامل.

لم يعد هذا صعبًا أو مكلفًا كما كان من قبل. دعونا نشفر يوفر شهادات مجانية وآلية تمامًا ، والتي ستحتاج إليها لتمكين HTTPS ، وهناك أدوات مجتمع موجودة متاحة لمجموعة واسعة من الأنظمة الأساسية والأطر العامة لإعداد هذا تلقائيًا لك.

أعلنت Google بشكل خاص أنها ستعزز ترتيبك في ترتيب البحث إذا كنت تستخدم HTTPS ، مما يمنحك ميزة تحسين محركات البحث أيضًا. بروتوكول HTTP غير الآمن في طريقه للانتهاء ، وحان وقت الترقية.

هل تستخدم HTTPS بالفعل في كل مكان؟ انتقل إلى أبعد من ذلك وابحث في إعداد HTTP Strict Transport Security (HSTS) ، وهو رأس سهل يمكنك إضافته إلى استجابات الخادم لمنع HTTP غير الآمن في نطاقك بالكامل.

09. الحصول على أدوات حماية الموقع

بمجرد أن تعتقد أنك فعلت كل ما في وسعك ، فقد حان الوقت لاختبار أمان موقع الويب الخاص بك. الطريقة الأكثر فعالية للقيام بذلك هي من خلال استخدام بعض أدوات أمان مواقع الويب ، والتي يشار إليها غالبًا باسم اختبار الاختراق أو اختبار القلم لفترة قصيرة.

هناك العديد من المنتجات التجارية والمجانية لمساعدتك في ذلك. إنهم يعملون على أساس مماثل لقراصنة البرامج النصية من حيث أنهم يختبرون جميع عمليات الاستغلال المعروفة ويحاولون اختراق موقعك باستخدام بعض الأساليب المذكورة سابقًا مثل حقن SQL.

بعض الأدوات المجانية التي تستحق المشاهدة:

  • Netsparker (يتوفر إصدار مجتمع مجاني وإصدار تجريبي). جيد لاختبار حقن SQL و XSS
  • OpenVAS يدعي أنه أكثر ماسح أمان مفتوح المصدر تقدمًا. جيد لاختبار الثغرات الأمنية المعروفة ، يفحص حاليًا أكثر من 25000. ولكن قد يكون من الصعب الإعداد ويتطلب تثبيت خادم OpenVAS والذي يعمل فقط على * nix. OpenVAS هو شوكة Nessus قبل أن يصبح منتجًا تجاريًا مغلق المصدر.
  • SecurityHeaders.io (فحص مجاني عبر الإنترنت). أداة للإبلاغ بسرعة عن رؤوس الأمان المذكورة أعلاه (مثل CSP و HSTS) التي قام المجال بتمكينها وتكوينها بشكل صحيح.
  • Xenotix XSS Exploit Framework أداة من OWASP (Open Web Application Security Project) تتضمن مجموعة كبيرة من أمثلة هجمات XSS ، والتي يمكنك تشغيلها لتأكيد ما إذا كانت مدخلات موقعك عرضة للخطر في Chrome و Firefox و IE.

قد تكون نتائج الاختبارات الآلية مخيفة ، لأنها تمثل مجموعة كبيرة من المشكلات المحتملة. المهم هو التركيز على القضايا الحرجة أولاً. تأتي كل مشكلة يتم الإبلاغ عنها عادةً مع شرح جيد للثغرة الأمنية المحتملة. من المحتمل أن تجد أن بعض المشكلات المتوسطة / المنخفضة ليست مصدر قلق لموقعك.

هناك بعض الخطوات الإضافية التي يمكنك اتخاذها لمحاولة اختراق موقعك يدويًا عن طريق تغيير قيم POST / GET. يمكن أن يساعدك وكيل تصحيح الأخطاء هنا لأنه يسمح لك باعتراض قيم طلب HTTP بين المستعرض الخاص بك والخادم. تطبيق مجاني شهير يسمى العابث هي نقطة انطلاق جيدة.

إذن ما الذي يجب أن تحاول تغييره عند الطلب؟ إذا كانت لديك صفحات يجب أن تكون مرئية فقط لمستخدم قام بتسجيل الدخول ، فحاول تغيير معلمات URL مثل معرف المستخدم أو قيم ملفات تعريف الارتباط في محاولة لعرض تفاصيل مستخدم آخر. هناك مجال آخر يستحق الاختبار وهو النماذج ، وتغيير قيم POST لمحاولة إرسال كود لتنفيذ XSS أو تحميل نص برمجي من جانب الخادم.

مقالات ذات صلة: