قام علماء الحاسوب بجامعة كارنيغي ميللون Carnegie Mellon University بتطوير طريقةٍ جديدة لاستخدام عدة لغات برمجية ضمن برنامج واحد، مما يسمح للمبرمجين أن يقوموا باستخدام أكثر لغة مناسبة للوظيفة أو التطبيق المطلوب، مع القيام بالحماية ضد هجمات حقن وحشو الكودات البرمجية Code Injections، والتي تعتبر أحد أخطر التهديدات الأمنية في تطبيقات الويب في أيامنا هذه.
قاد الفريق البحثي البروفيسور المساعد جوناثان آلدريتش، وقد قام الفريق بتطوير لغةٍ جديدة تدعى Wyvern والتي تتمتع بإمكانية بناء وكتابة برنامج باستخدام العديد من اللغات البرمجية المتخصصة، مثل استخدام لغة SQL في إنشاء قواعد البيانات، واستخدام لغة HTML من أجل إنشاء صفحات الويب. الفكرة من اللغة الجديدة أنها تقوم باستخدام اللغات المتخصصة المختلفة كلغات فرعية Sublanguages ضمن بيئةٍ واحدة، وذلك بدلاً من كتابة برنامج كامل بكل لغة.
تقوم بيئة Wyvern بتحديد اللغة أو البيئة البرمجية المطلوب استخدامها، وفقاً للغرض والهدف المطلوب تنفيذه، ووفقاً لطبيعة البيانات التي يقوم المبرمج بمعالجتها، حيث تحدد أنماط المعطيات الطريقة التي سيتم وفقها معالجتها، فقد تكون المعطيات عبارة عن معطيات عددية محرفية Alphanumeric، وقد تكون أرقام ذات فاصلة عائمة Floating Point Numbers، وقد تكون عبارة عن بنى معطيات أكثر تعقيداً مثل صفحات الويب أو صفوف قواعد البيانات.
إذاً، نمط المعطيات هو ما يؤمن السياق الذي ستتم وفقه عملية المعالجة، وهذا الأمر هو ما يسمح للغة Wyvern بتحديد اللغة الفرعية الواجب استخدامها والمتوافقة مع النمط المحدد من المعطيات.
يقول جوناثان آلدريتش :” نستطيع تشبيه لغة Wyvern بأنها مفاوض ماهر، حيث تستطيع أن تقوم بالتبديل بين اللغات المحكية بشكلٍ سلس، وذلك بهدف جمع فريق من الأشخاص المختلفين للعمل معاً. وجود مثل هكذا شخص سيكون فعالٌ جداً، وبنفس الطريقة، فإنني أعتقد أن طريقتنا الجديدة ستساهم بإحداث صدمة هامة ببناء الأنظمة البرمجية “.
يوجد العديد من المهام البرمجية التي تتضمن لغاتٍ متعددة، فعندما تريد أن تقوم ببناء صفحة ويب – على سبيل المثال – فإنك تقوم باستخدام لغة HTML من أجل بناء الكتلة الأساسية للصفحة، ولكن المبرمج قد يقوم أيضاً بتضمين لغة SQL من أجل إدخال قواعد البيانات، وإدخال أيضاً لغة Javascript للسماح بالتفاعل مع المستخدم. الآن، وعبر استخدام اللغات المحددة وفقاً للمعطيات، فإن لغة Wyvern الجديدة ستسمح بتبسيط المهام المطلوبة من المبرمج، ومما يساهم أيضاً بتجنب الحلول التي قد تؤدي لنشوء نقاط ضعف في التطبيق النهائي.
أحد الممارسات الشائعة – والمسببة للمشاكل – هي قيام المبرمجين بقص سلاسل طويلة من الحروف لتشكيل أمر برمجي ضمن لغةٍ متخصصة – مثل SQL – وذلك أثناء كتابة برنامج. إذا لم يتم تضمين هذه السلسلة بشكلٍ حذر وصحيح، فإن هذه الإجرائية قد تؤدي لجعل الحاسوب عرضةً لاثنين من أكثر المخاطر أهميةً على الويب: هجمات البرمجة النصية للمواقع المشتركة Cross-Site-Scripting Attacks، وهجمان حقن SQL. بالنسبة للحالة الأخيرة، فإنه يمكن لشخص يمتلك معرفة بالأنظمة الحاسوبية أن يستخدم صيغةً لاسم مستخدم وكلمة مرور من أجل كتابة تعليمة تؤدي لحذف جدول، مما يساهم بحذفٍ كامل لكامل قواعد البيانات.
يقول آلدريتش بهذا الخصوص :” استخدام لغة Wyvern سيجعل من استخدام السلاسل المحرفية الطويلة أمراً غير ضروروياً، وهذا سيؤدي بدوره للقضاء على كافة أشكال نقاط الضعف “.
واجهت المحاولات السابقة لتطوير لغات برمجة تستطيع استيعاب لغات أخرى الحاجة للمفاضلة ما بين القدرة على التركيب Composability والقدرة على التعبير expressiveness، فقد كانت هذه البيئات محدودةً بقدرتها من حيث تحديد اللغة المضمنة التي كان يتم استخدامها، أو تحديد ما هي اللغة التي يجب أن يتم استخدامها.
يقول سيروس عمر، طالب مرحلة الدكتوراه وأحد المطورين الأساسيين للغة Wyvern :” تسمح لغة Wyvern لك بأن تستخدم اللغات الأخرى، وحتى تعريف لغات جديدة، وذلك بدون أن تقلق حول التكوين أو التركيب”.
في الوقت الحالي، فإن لغة Wyvern ليست جاهزة بشكلٍ نهائي، ولكنها مشروع مفتوح المصدر، وجاهزة للاختبار التجريبي.