تطهير المدخلات
لا تثق أبداً بمدخلات المستخدم. تحقق دائماً وطهر جميع بيانات المدخلات قبل استخدامها. يوفر XOOPS فئة MyTextSanitizer لتطهير إدخال النص وعدة وظائف مساعدة للتحقق.
الوثائق ذات الصلة
Section titled “الوثائق ذات الصلة”- أفضل ممارسات الأمان - دليل الأمان الشامل
- حماية CSRF - نظام الرمز وفئة XoopsSecurity
- منع حقن SQL - ممارسات أمان قاعدة البيانات
القاعدة الذهبية
Section titled “القاعدة الذهبية”لا تثق أبداً بمدخلات المستخدم. يجب معالجة جميع البيانات من مصادر خارجية من خلال:
- التحقق: تحقق من أنها تطابق الصيغة والنوع المتوقع
- التطهير: إزالة أو تجنب الأحرف الخطرة المحتملة
- الهروب: عند الإخراج، الهروب للسياق المحدد (HTML, JavaScript, SQL)
فئة MyTextSanitizer
Section titled “فئة MyTextSanitizer”يوفر XOOPS فئة MyTextSanitizer (عادة ما تُستخدم اختصار $myts) لتطهير النصوص.
الحصول على المثيل
Section titled “الحصول على المثيل”// احصل على مثيل مفرد$myts = MyTextSanitizer::getInstance();تطهير النص الأساسي
Section titled “تطهير النص الأساسي”$myts = MyTextSanitizer::getInstance();
// للحقول النصية العادية (لا يُسمح بـ HTML)$title = $myts->htmlSpecialChars($_POST['title']);
// يحول:// < إلى <// > إلى >// & إلى &// " إلى "// ' إلى 'معالجة محتوى Textarea
Section titled “معالجة محتوى Textarea”توفر طريقة displayTarea() معالجة شاملة لـ textarea:
$myts = MyTextSanitizer::getInstance();
$content = $myts->displayTarea( $_POST['content'], $allowhtml = 0, // 0 = لا يُسمح بـ HTML، 1 = HTML مسموح $allowsmiley = 1, // 1 = تمكين الوجوه الضاحكة $allowxcode = 1, // 1 = تمكين أكواد XOOPS (BBCode) $allowimages = 1, // 1 = يُسمح بالصور $allowlinebreak = 1 // 1 = تحويل فواصل الأسطر إلى <br>);طرق التطهير الشائعة
Section titled “طرق التطهير الشائعة”$myts = MyTextSanitizer::getInstance();
// تجنب أحرف HTML الخاصة$safe_text = $myts->htmlSpecialChars($text);
// إزالة الشرطات المائلة إذا كانت علامات الاقتباس السحرية مفعلة$text = $myts->stripSlashesGPC($text);
// تحويل أكواد XOOPS (BBCode) إلى HTML$html = $myts->xoopsCodeDecode($text);
// تحويل الوجوه الضاحكة إلى الصور$html = $myts->smiley($text);
// جعل الروابط قابلة للنقر$html = $myts->makeClickable($text);
// معالجة النص الكاملة للمعاينة$preview = $myts->previewTarea($text, $allowhtml, $allowsmiley, $allowxcode);التحقق من صحة المدخلات
Section titled “التحقق من صحة المدخلات”التحقق من قيم الأعداد الصحيحة
Section titled “التحقق من قيم الأعداد الصحيحة”// التحقق من معرّف عدد صحيح$id = isset($_REQUEST['id']) ? (int)$_REQUEST['id'] : 0;
if ($id <= 0) { redirect_header('index.php', 3, 'Invalid ID'); exit();}
// بديل مع filter_var$id = filter_var($_REQUEST['id'] ?? 0, FILTER_VALIDATE_INT);if ($id === false || $id <= 0) { redirect_header('index.php', 3, 'Invalid ID'); exit();}التحقق من عناوين البريد الإلكتروني
Section titled “التحقق من عناوين البريد الإلكتروني”$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
if (!$email) { redirect_header('form.php', 3, 'Invalid email address'); exit();}التحقق من المؤشرات
Section titled “التحقق من المؤشرات”$url = filter_var($_POST['url'], FILTER_VALIDATE_URL);
if (!$url) { redirect_header('form.php', 3, 'Invalid URL'); exit();}
// فحص إضافي للبروتوكولات المسموح بها$parsed = parse_url($url);$allowed_schemes = ['http', 'https'];if (!in_array($parsed['scheme'], $allowed_schemes)) { redirect_header('form.php', 3, 'Only HTTP and HTTPS URLs are allowed'); exit();}أفضل ممارسات الملخص
Section titled “أفضل ممارسات الملخص”- استخدم MyTextSanitizer لمعالجة محتوى النصوص
- استخدم filter_var() للتحقق من صيغة محددة
- استخدم الصب من النوع للقيم الرقمية
- قائمة بيضاء القيم المسموح بها لإدخالات التحديد
- التحقق قبل التطهير
- الهروب في الإخراج وليس في الإدخال
- استخدم بيانات معدة مسبقاً لاستعلامات قاعدة البيانات
- إنشاء فئات التحقق للنماذج المعقدة
- أبداً لا تثق بالتحقق من جانب العميل - تحقق دائماً من جانب الخادم
#أمان #تطهير #التحقق #xoops #MyTextSanitizer #معالجة-المدخلات