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

السؤال

Recommended Posts

  • 0
نشر

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

مثال بسيط:

INSERT INTO persons(firstname, lastname) 
VALUES(REPLACE('<script>alert("Test")</script>', '<script>', ''), 'Sample Value');

وبذلك يحدث هذا الخرق عندما يتم تمرير المدخلات inputs كما هي بشكل مباشر إلى قاعدة البيانات دون التأكد منها.

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

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

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

  • 0
نشر

لكي تحمي موقعك من أي inputs ضارة عليك عمل الآتي:
1. عمل validation & sanitization لكل ال inputs كما ذكر المدرب @Sam Ahw

2. استعمال Prepared statements اذا كانت قاعدة البيانات من النوع SQL
أيضاً لتحسين تجربة المستخدم، قم بإضافة validation على الFrontend ولكن بالطبع يجب أيضاً أن يكون هناك validation على الBackend، حيث إنه يمكن تخطي الvalidation الخاصة بالFrontend بسهولة.

  • 0
نشر
بتاريخ 6 ساعات قال عبدالله أحمد4:

لكي تحمي موقعك من أي inputs ضارة عليك عمل الآتي:
1. عمل validation & sanitization لكل ال inputs كما ذكر المدرب @Sam Ahw

2. استعمال Prepared statements اذا كانت قاعدة البيانات من النوع SQL
أيضاً لتحسين تجربة المستخدم، قم بإضافة validation على الFrontend ولكن بالطبع يجب أيضاً أن يكون هناك validation على الBackend، حيث إنه يمكن تخطي الvalidation الخاصة بالFrontend بسهولة.

لم افهم

  • 0
نشر (معدل)
بتاريخ 34 دقائق مضت قال Reda Boukheche:

لم افهم

ال sanitization هي عملية تطهير البيانات من الأكواد الخبيثة فمثلاً إذا كان المكتوب في حقل ما (حقل البريد الالكتروني مثلاً) كاﻵتي

<script>alert('Dangerous code')</script>

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

&lt;script&gt;alert(&#039;Dangerous code&#039;)&lt;/script&gt;

وبالتالي لن يعمل هذا الكود الخبيث وسيتم تأمين الموقع. إذا كنت تستخدم php فيمكنك النظر إلى الدالة htmlspecialchars من هذا المقال الرائع من حسوب.
أما ال validation فهي عملية التحقق من أن شكل البيانات صحيح، فمثلاً إذا كان الحقل لإدخال بريد الكتروني فيجب أن يكون على الصورة email@company.com فلا يمكن لأحد أن يكتب مثلاً شيئاً كهذا test email لأنها تحتوي على مسافة كما أيضاً أنها لا تحتوي على الشكل الصحيح للايميل (علامة ال @ واسم الشركة والدومين). إذا كنت تستخدم PHP يمكنك النظر هنا وأنواع الvalidations من هنا.

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

تم التعديل في بواسطة عبدالله أحمد4

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...