هل يمكنك السماح للمستخدمين بتحميل تطبيقات Sinatra وتشغيلها داخل القضبان كبرامج وسيطة؟

StackOverflow https://stackoverflow.com/questions/2513877

سؤال

أرغب في السماح للمستخدمين بكتابة تطبيقات مخصصة صغيرة (فكر في السمات أو الإضافات على WordPress) وتحميلها/تشغيلها على موقعي.

أفكر في استخدام تطبيقات Sinatra لهذا لأنه سيمنح المستخدمين الكثير من المرونة ، ثم تشغيلها كبرامج وسيطة داخل تطبيق Rails الخاص بي.

لكن لا يمكنني معرفة الآثار الأمنية لهذا. حاولت إنشاء تطبيق Sinatra بسيط كبرامج وسيطة ، ولديه إمكانية الوصول إلى جميع نماذج القضبان وكل شيء - لذلك هذا سيء. هل هناك طريقة للحفاظ على رف هذه منفصلة بحيث تكون تطبيقات سيناترا رمالًا بفعالية ولا يمكنها القيام بأي أشياء سيئة (خارج واجهة برمجة التطبيقات أو طريقة محددة أقوم بإعدادها للتواصل)؟

قد تكون هناك طريقة أسهل لإنجاز هذا لم أفكر فيه أيضًا ، لذا أرحب بالأفكار. شكرًا!

هل كانت مفيدة؟

المحلول

ربما نظرة على تريوبي / صندوق الرمل الفظيع أو واحدة من الأخرى صناديق رمل روبي يمكن أن يأخذك إلى مكان ما.

نصائح أخرى

إلى أي مدى تعرف/تثق في المستخدمين؟ آمل أن تحتوي الإجابة على كلمات مثل "للغاية" و "بشكل وثيق". ما مدى سهولة الوصول إليهم بشيء حاد ومؤلم إذا ارتكبوا؟

لا أستطيع التفكير في طريقة بسيطة (هيك ، لا أستطيع التفكير في طريقة معقدة) للسماح بتحميل وتثبيت مثل هذه الأشياء. حتى مع WordPress ، لا أعتقد أنها تسمح بتثبيت/تشغيل مكون إضافي عشوائي على الموقع الذي يستضيفه WP-فإن مخاطر رمز النية جيدًا التي تسبب مشاكل تبدو هائلة لعقلي بجنون العظمة.

من المؤكد أن سيناترا ستعطي المرونة ، لكن هذا قد لا يكون شيئًا جيدًا ، كما حددته بالفعل.

بالطبع ، إذا كان المستخدمون لديك روبي/سيناترا يعرف القراءة والكتابة (أو قادرين على أن يصبحوا مقبولين) ، فيمكنك منحهم مستودعًا (GIT أو SVN أو أي شيء آخر) لتطبيقاتهم ونشرها في المكان المناسب في الرف أيضًا أيضًا مخصصة أو في بعض الجدول الزمني.

التفكير في الحافر ، وبدون أي فكرة عن الجدوى ، إذا كانت الوظائف التي يمكن توفيرها بأمان محدودة نسبيًا ، فقد تفكر في النظر في كتابة نوع من DSL المقيد لاستخدامها. إذا كانت البرامج النصية التي تم إنتاجها قصيرة/فعالة بدرجة كافية ، فربما يمكن تخزينها داخل قاعدة بيانات التطبيق وتنفيذها عبر eval?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top