Samir Boukheche نشر 23 يوليو 2021 أرسل تقرير نشر 23 يوليو 2021 كيف احمي موقعي من ادخال اكواد في المداخل input حتى لا يتم اختراق موقعي او إرسال اكواد تؤدي الى ايداء الموقع خاصة قواعد البيانات Post_[''] 1 اقتباس
0 Sam Ahw نشر 24 يوليو 2021 أرسل تقرير نشر 24 يوليو 2021 يعرف هذا النوع من الثغرات باسم حقن الشيفرة المصدريّة أو 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 عبدالله أحمد4 نشر 24 يوليو 2021 أرسل تقرير نشر 24 يوليو 2021 لكي تحمي موقعك من أي inputs ضارة عليك عمل الآتي: 1. عمل validation & sanitization لكل ال inputs كما ذكر المدرب @Sam Ahw 2. استعمال Prepared statements اذا كانت قاعدة البيانات من النوع SQL أيضاً لتحسين تجربة المستخدم، قم بإضافة validation على الFrontend ولكن بالطبع يجب أيضاً أن يكون هناك validation على الBackend، حيث إنه يمكن تخطي الvalidation الخاصة بالFrontend بسهولة. اقتباس
0 Samir Boukheche نشر 24 يوليو 2021 الكاتب أرسل تقرير نشر 24 يوليو 2021 بتاريخ 6 ساعات قال عبدالله أحمد4: لكي تحمي موقعك من أي inputs ضارة عليك عمل الآتي: 1. عمل validation & sanitization لكل ال inputs كما ذكر المدرب @Sam Ahw 2. استعمال Prepared statements اذا كانت قاعدة البيانات من النوع SQL أيضاً لتحسين تجربة المستخدم، قم بإضافة validation على الFrontend ولكن بالطبع يجب أيضاً أن يكون هناك validation على الBackend، حيث إنه يمكن تخطي الvalidation الخاصة بالFrontend بسهولة. لم افهم اقتباس
0 عبدالله أحمد4 نشر 24 يوليو 2021 أرسل تقرير نشر 24 يوليو 2021 (معدل) بتاريخ 34 دقائق مضت قال Reda Boukheche: لم افهم ال sanitization هي عملية تطهير البيانات من الأكواد الخبيثة فمثلاً إذا كان المكتوب في حقل ما (حقل البريد الالكتروني مثلاً) كاﻵتي <script>alert('Dangerous code')</script> إذا تم تخزين الحقل في قاعدة البيانات بهذا الشكل، فهذا الكود قد يحتوي على كود خبيث يقوم بسرقة الكوكيز مثلاً، أو أن يظهر شيئاً لا يرغب المستخدمين في رؤيته. ولكن اذا قمت بعمل sanitization سيصبح <script>alert('Dangerous code')</script> وبالتالي لن يعمل هذا الكود الخبيث وسيتم تأمين الموقع. إذا كنت تستخدم php فيمكنك النظر إلى الدالة htmlspecialchars من هذا المقال الرائع من حسوب. أما ال validation فهي عملية التحقق من أن شكل البيانات صحيح، فمثلاً إذا كان الحقل لإدخال بريد الكتروني فيجب أن يكون على الصورة email@company.com فلا يمكن لأحد أن يكتب مثلاً شيئاً كهذا test email لأنها تحتوي على مسافة كما أيضاً أنها لا تحتوي على الشكل الصحيح للايميل (علامة ال @ واسم الشركة والدومين). إذا كنت تستخدم PHP يمكنك النظر هنا وأنواع الvalidations من هنا. أما ال prepared statements فهي عملية إعداد الأمر الخاص بقاعدة البيانات قبل عملية تنفيذ الأمر وهي عملية مهمة حتى يتم تطهير البيانات قبل اضافتها الى قاعدة البيانات، اذا كنت تستخدم php يمكنك معرفة المزيد من هنا. تم التعديل في 24 يوليو 2021 بواسطة عبدالله أحمد4 اقتباس
السؤال
Samir Boukheche
كيف احمي موقعي من ادخال اكواد في المداخل input حتى لا يتم اختراق موقعي او إرسال اكواد تؤدي الى ايداء الموقع خاصة قواعد البيانات
Post_['']
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.