يقوم محرر Ewebeditor وfckeditork بتصفية الاقتباسات الفردية
استخدمنا طريقة الكتابة SQL=insert into Product(title,content) value(' &request(title)& ' ,' &request(content)& ' )، لذلك وجدنا المحتوى الذي نسخه العميل إلى المحرر في ذلك الوقت ، ووجدت أنه من المؤكد أن هذا المحتوى يحتوي على علامات اقتباس مفردة، وتبين أن المحتوى الذي أرسله العميل إلى المحرر يحتوي على علامات اقتباس مفردة تم تغيير عبارة SQL الخاصة بنا، وهو ما يعادل SQL=insert into Product(. العنوان والمحتوى) القيم ("المحتوى"). ، 'content') يصبح SQL=insert into Product(title,content) value('content','content''). إذا نظرنا عن كثب، فسنعرف أنه لمجرد وجود علامة اقتباس مفردة إضافية في المحتوى، يحدث خطأ خطير في الكتابة، ومع ذلك، فإننا نتفاجأ أيضًا أنه نظرًا لأنه تم كتابته بشكل غير صحيح، فلماذا لا تعطي عبارة SQL رسالة خطأ، ولكنها تطالب أيضًا بأن العملية ناجحة؟ فكر في المتسللين الصغار الشائعين في عام 2003. مثل استخدام 'or' =' or' يبدو أن طريقة التطفل في الخلفية تستفيد من الخطأ المتمثل في عدم تصفية علامات الاقتباس المفردة عند تنفيذ SQL. ونتيجة لذلك، بغض النظر عن كيفية تنفيذ SQL، فإن النتيجة تعود صحيحًا يجب أن تكون كتابة البرنامج بسيطة وواضحة قدر الإمكان، وهذا أيضًا خطأ. حسنًا، تم العثور على المشكلة في المستقبل، قبل إدخال كل SQL في قاعدة البيانات، سنقوم بتصفية الحقول قبل تمرير القيمة، حتى لا تحدث هذه المشكلة بعد الآن، فيما يلي وظيفة تصفية أمان SQL كاملة جدًا. يمكنك فقط استخدامه وهو جاهز للاتصال به.
الدالة HTMLEncode(Str)
إذا Isnull(Str) ثم
HTMLEncode =
وظيفة الخروج
نهاية إذا
Str = استبدال (Str،Chr(0)،، 1، -1، 1)
Str = استبدال (Str،، "، 1، -1، 1)
سلسلة = استبدال (سلسلة،<،<، 1، -1، 1)
Str = Replace(Str,>,>, 1, -1, 1)
Str = Replace(Str, script, script, 1, -1, 0)
Str = Replace(Str, SCRIPT, SCRIPT, 1, -1, 0)
Str = Replace(Str, Script, Script, 1, -1, 0)
Str = Replace(Str, script, Script, 1, -1, 1)
سلسلة = استبدال (سلسلة، كائن، كائن، 1، -1، 0)
Str = Replace(Str, OBJECT, OBJECT, 1, -1, 0)
Str = Replace(Str, Object, Oobject, 1, -1, 0)
Str = استبدال (Str، object، object، 1، -1، 1)
Str = Replace(Str, applet, applet, 1, -1, 0)
Str = Replace(Str, APPLET, APPLET, 1, -1, 0)
Str = Replace(Str, Applet, Applet, 1, -1, 0)
Str = Replace(Str, applet, Applet, 1, -1, 1)
سلسلة = استبدال (سلسلة، [، [؛)
Str = استبدال (Str، ]، ]؛)
Str = استبدال (Str،،، 1، -1، 1)
Str = Replace(Str, =, =, 1, -1, 1)
Str = استبدال (Str، '، ''، 1، -1، 1)
سلسلة = استبدال (سلسلة، حدد، حدد، 1، -1، 1)
Str = Replace(Str, تنفيذ, execute, 1, -1, 1)
Str = Replace(Str, exec, exec, 1, -1, 1)
Str = Replace(Str, join, join, 1, -1, 1)
Str = Replace(Str, union, union, 1, -1, 1)
Str = استبدال (Str، أين، أين، 1، -1، 1)
Str = Replace(Str, Insert, insert, 1, -1, 1)
سلسلة = استبدال (سلسلة، حذف، ديلت، 1، -1، 1)
Str = Replace(Str, update, update, 1, -1, 1)
Str = Replace(Str, like, likee, 1, -1, 1)
Str = Replace(Str, drop, drop, 1, -1, 1)
Str = Replace(Str, create, create, 1, -1, 1)
Str = Replace(Str, rename, rename, 1, -1, 1)
Str = Replace(Str, count, count, 1, -1, 1)
Str = Replace(Str, chr, chr, 1, -1, 1)
Str = Replace(Str, mid, mid, 1, -1, 1)
Str = Replace(Str, truncate, trunc'te, 1, -1, 1)
Str = استبدال (Str، nchar، nch'r، 1، -1، 1)
Str = استبدال (Str، char، ch'r، 1، -1، 1)
Str = Replace(Str, alt, alter, 1, -1, 1)
Str = Replace(Str, cast, ca't, 1, -1, 1)
Str = Replace(Str, موجود, exists, 1, -1, 1)
Str = Replace(Str,Chr(13), , 1, -1, 1)
HTMLEncode = استبدال (Str،'،''، 1، -1، 1)
وظيفة النهاية