সার্ভার সাইড স্যান্ডবক্সযুক্ত স্ক্রিপ্টিংয়ের জন্য আমার পছন্দগুলি কী? [বন্ধ]


11

আমি একটি পাবলিক ওয়েবসাইট তৈরি করছি যেখানে ব্যবহারকারীরা কিছু ডেটা চালানোর জন্য ডেটা এবং স্ক্রিপ্টগুলি ভাগ করে নেন। স্ক্রিপ্টগুলি এই চক্রটি অন্য কোনও মিথস্ক্রিয়া ছাড়াই কোনও প্রকারের স্যান্ডবক্সে সার্ভারসাইড চালিত হয়: আমার পার্ল প্রোগ্রামটি একটি ব্যবহারকারী তৈরি স্ক্রিপ্টের একটি ডেটাবেস থেকে পড়ে, স্ক্রিপ্টে প্রক্রিয়া করার জন্য ডেটা যুক্ত করে (যেমন: একটি জেএসওএন নথি) তারপরে ইন্টারপ্রেটারকে কল করে, এটি প্রতিক্রিয়া (একটি JSON নথি বা সরল পাঠ) প্রত্যাবর্তন করে, আমি এটি আমার পার্ল স্ক্রিপ্টের সাহায্যে ডাটাবেসে সংরক্ষণ করি। স্ক্রিপ্টটি নিজের দ্বারা স্ক্রিপ্টিং ভাষায় যুক্ত ফাংশনগুলিতে কিছু অ্যাক্সেস রাখতে সক্ষম হওয়া উচিত, তবে এর চেয়ে বেশি কিছুই নয়।

সুতরাং আমি একটি জাভাস্ক্রিপ্ট দোভাষী হিসাবে নোড.জেএসকে হোঁচট খেয়েছি এবং ঘন্টাখানেক আগে গুগলের ভি 8 এর সাথে (ভি 8 কি এই ধরণের জিনিসটির জন্য অর্থবোধ করে?) কফিস্ক্রিপ্টটি আমার মনেও আসল, যেহেতু এটি দেখতে দুর্দান্ত দেখাচ্ছে এবং এটি এখনও জাভাস্ক্রিপ্ট।

আমি মনে করি জাভাস্ক্রিপ্ট যথেষ্ট বিস্তৃত এবং আরও "স্যান্ডবক্সেয়েবল" হওয়ায় এটিতে ওএস কল বা দূরবর্তীভাবে সুরক্ষিত কিছু নেই (আমার মনে হয়)।

যাইহোক, আমি সামনের প্রান্তের জন্য পার্ল এবং পিএইচপিতে সিস্টেমটি লিখছি।

এই প্রশ্নের উন্নতি করার জন্য: আমি জাভাস্ক্রিপ্টটি বেছে নিচ্ছি কারণ আমি মনে করি যে নোড.জেএস দিয়ে কার্যকর করার পক্ষে সুরক্ষিত এবং যথেষ্ট সহজ, তবে এই জাতীয় কাজটি অর্জনের জন্য অন্যান্য বিকল্পগুলি কী? অ্যাপ্লিকেশন Lua? পাইথন? আমি কেবল একটি সঠিক উপায়ে স্যান্ডবক্সযুক্ত দোভাষী কীভাবে চালাতে পারি তার তথ্য খুঁজে পাচ্ছি না।


আপনি কী জিজ্ঞাসা করছেন তা পরিষ্কার নয়। এটা কি সম্ভব? অবশ্যই, এটি সম্ভব
রবার্ট হার্ভে

উত্তর:


3

জাভা অন্তর্নির্মিত জাভাস্ক্রিপ্ট ইন্টারপ্রেটার থাকে। এটি ডিফল্ট স্যান্ডবক্সযুক্ত নয়, তবে এটি এটি দ্বারা সক্ষম হতে পারে:

  • সঠিক শ্রেণীর শাটার স্থাপন - জাভাস্ক্রিপ্ট সাধারণত জাভা ক্লাসগুলি লোড করতে পারে। ক্লাস শাটার হল এক ধরণের সুরক্ষা পরিচালক যা সিদ্ধান্ত নেয় যে কোন ক্লাসগুলি লোড করা যায় এবং কোনটি পারে না।
  • "স্টার্টআপ" স্ক্রিপ্ট - সংক্ষিপ্ত জাভাস্ক্রিপ্ট সূচনা যা বাইরের সিস্টেমে অ্যাক্সেস পয়েন্টগুলি মুছে দেয়: java = undefined;Packages = undefined;org = undefined;

আপনি যদি এটি করেন তবে ভিতরে স্ক্রিপ্টগুলি কোনওভাবেই বাইরের পরিবেশে অ্যাক্সেস করতে সক্ষম হবে না।

এটি স্ক্রিপ্টের সময়-আউট এবং নির্দেশনা গণনাও সীমাবদ্ধ কার্যকারিতা সরবরাহ করে যা স্যান্ডবক্সিংয়ের জন্য দরকারী - আপনি স্ক্রিপ্টটি কত দীর্ঘ বা কতটা জটিল তা সীমাবদ্ধ করতে পারেন।

আমি এটি জাভা 7 এ ব্যবহার করেছি যার মধ্যে রাইনো জাভাস্ক্রিপ্ট ইঞ্জিন রয়েছে। জাভা 8 এর আরও আধুনিক, আরও আধুনিক ইঞ্জিন ন্যাশর্ন রয়েছে - আমি এটি ন্যাশর্নের সাথে চেষ্টা করে দেখিনি তবে আমি আশা করি এটির মতো হওয়া উচিত।


আপনি কি ব্ল্যাক লিস্টের চেয়ে শ্বেতলিস্ট করতে পারেন?
পেটা

@ পেটা, আপনি প্রথমে সমস্ত কিছু অক্ষম করতে (ব্ল্যাকলিস্ট) করতে পারেন এবং তারপরে স্যান্ডবক্সে অবজেক্ট আকারে কিছু নির্দিষ্ট কার্যকারিতা ঠেলাতে পারেন। এটি তখন মূলত শ্বেত তালিকাভুক্ত হয়, তাই হ্যাঁ, আপনি এটি করতে পারেন।
qbd

স্ক্রিপ্টিং ভাষা হিসাবে এটি একটি ভাল পছন্দ করতে জাভাস্ক্রিপ্ট জ্ঞান যথেষ্ট বিস্তৃত। আপনি কিছু গ্লোবাল সংজ্ঞায়িত করতে পারেন এবং সেইসাথে আপনি কলগুলিতে অ্যাক্সেসকে সীমাবদ্ধ করছেন বলে ব্যবহারকারীদের কল করতে পারেন। windowমিথস্ক্রিয়া সক্ষম করতে ব্রাউজার জাভাস্ক্রিপ্টের জন্য কীভাবে ভেরিয়েবলগুলি সংজ্ঞায়িত করে তা ভেবে দেখুন ।
মাইকেল শপসিন 26'15

2

আমার প্রথম চিন্তাটি নোড.জেএস ছিল - যেমন আপনি উপরে উল্লেখ করেছেন এটি জাভাস্ক্রিপ্ট-দোভাষী রয়েছে। এবং যদি আপনার সত্যিই সুরক্ষিত উপায়ে স্ক্রিপ্টগুলি স্যান্ডবক্স করতে চান তবে এটি আপনার প্রয়োজন ঠিক।

অন্য উপায় হতে পারে, আপনি কোনও স্ক্রিপ্টে প্রতিটি কমান্ড পরীক্ষা করে দেখুন, এটি বৈধ কিনা। তবে আমি মনে করি না যে আপনি একটি সুরক্ষিত স্যান্ডবক্স পাবেন।

গ্রিটিংস


নোডজেএসের সাথে কোনও স্যান্ডবক্সিং সাপোর্ট রয়েছে কি না?
ysdx

4
এটি পাওয়া গেছে: gf3.github.com/sandbox
ysdx

"নিফ্ট জাভাস্ক্রিপ্ট স্যান্ডবক্স ফর নোডে.জেএস" - এর দুর্দান্ত লিঙ্কটির জন্য +1।
জ্যাক স্টোন

দ্রষ্টব্য: gf3 স্যান্ডবক্স ভেঙে যেতে পারে।
পেটা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.