মার্কিন সরকার সুরক্ষিত প্রকল্পগুলির জন্য গতিময় ভাষাগুলি কেন অস্বীকার করে?


120

আমি কিছু লোককে জানি যারা বর্তমানে মার্কিন সেনা (নিম্ন সুরক্ষা স্তর, যুদ্ধবিহীন মানবসম্পদ টাইপের ডেটা) এর জন্য একটি প্রকল্পে কাজ করছেন।

প্রকল্পের কোডের একটি প্রাথমিক অবস্থা পর্যালোচনার জন্য সামরিক বাহিনীর কাছে জমা দেওয়া হয়েছিল এবং তারা কোনও ধরণের সুরক্ষা বিশ্লেষক সরঞ্জামের মাধ্যমে প্রোগ্রামটি চালিয়েছিল। এটি কোডে জ্ঞাত সুরক্ষা সমস্যার একটি প্রতিবেদন ফিরিয়ে দিয়েছে এবং চূড়ান্ত পণ্য সরবরাহের আগে প্রয়োজনীয় পরিবর্তনগুলি প্রয়োজন।

যে আইটেমগুলির সমাধানের দরকার ছিল তার মধ্যে একটি হ'ল প্রকল্পটির অংশটি অপসারণ করা যা রুবিতে লেখা ছিল কারণ এটি একটি গতিশীল ভাষা।

একটি নিরাপদ সেটিংয়ে গতিশীল ভাষা ব্যবহার না করার পটভূমি / কারণ কী? সরকার কী নতুন প্রযুক্তি গ্রহণে ধীরগতি করছে? বা গতিশীল ভাষাগুলি স্থিত ভাষার (আলা সি ++ বা জাভা ) তুলনায় অতিরিক্ত সুরক্ষা ঝুঁকি তৈরি করে ?


56
নিশ্চিতরূপে জানার একমাত্র উপায় হ'ল যদি আপনার পরিচিতজনরা তাদের নিয়োগকর্তাকে কারণ জিজ্ঞাসা করে। তবে আমি একটি অনুমানের ঝুঁকি নিতে পারি: স্থিতিশীল টাইপ চেকিং অন্য স্তর যা মিশন-সমালোচনামূলক সফ্টওয়্যারটির নির্ভুলতায় সহায়তা করে। এটি অবশ্যই বাগগুলি থেকে মুক্তি পাবে না, তবে এটি সঠিক দিকের একটি পদক্ষেপ: কম্পিউটারটি আপনার জন্য কিছু কাজ করছে। (হ্যাঁ, আমি জানি এটি পবিত্র যুদ্ধের অঞ্চল)।
আন্দ্রেস এফ।


75
আপনি পিএইচপি + জাভাস্ক্রিপ্টে ক্ষেপণাস্ত্র নিয়ন্ত্রণ সফ্টওয়্যার রাইটেন চান না।
তুলিনাস কর্ডোভা

16
এইচআর তথ্য না "কম নিরাপত্তার মাত্রা"। আমি প্রত্যাশা করব যে কোনও সংস্থা আমার কর্মসংস্থান এবং ব্যক্তিগত ডেটা তাদের যতটা সম্ভব সুরক্ষিত রাখবে।
gbjbaanb

5
@gbjbaanb আমার ধারণা, ওপি মানেই প্রাণহানি এখানে সবচেয়ে খারাপ পরিস্থিতি নয়।
অ্যান্ড্রেস এফ।

উত্তর:


126

গতিশীল ভাষাগুলিতে এমন অনেকগুলি 'ঝরঝরে' জিনিস রয়েছে যা কোডের কিছু অংশে ফেলে দেওয়া যেতে পারে যা অন্য প্রোগ্রামার বা নিরীক্ষকের কাছে প্রদত্ত কোডের কিছু অংশের কার্যকারিতা হিসাবে তাত্ক্ষণিকভাবে স্পষ্ট হয় না।

আইআরবি (ইন্টারেক্টিভ রুবি শেল) এ এই ক্রমটি বিবেচনা করুন:

irb(main):001:0> "bar".foo
NoMethodError: undefined method `foo' for "bar":String
        from (irb):1
        from /usr/bin/irb:12:in `<main>'
irb(main):002:0> class String
irb(main):003:1> def foo
irb(main):004:2> "foobar!"
irb(main):005:2> end
irb(main):006:1> end
=> nil
irb(main):007:0> "bar".foo
=> "foobar!"

সেখানে যা ঘটেছিল তা হল আমি fooস্ট্রিং ধ্রুবকটিতে পদ্ধতিটি কল করার চেষ্টা করেছি । এটি ব্যর্থ হয়েছে। আমি তখন স্ট্রিং ক্লাস খুলেছি এবং পদ্ধতিটি fooরিটার্নটি সংজ্ঞায়িত করেছি "foobar!"এবং তারপরে এটি ডেকে আছি । এটি কাজ করে।

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

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

এই জিনিসগুলির কারণে (এবং অন্যান্যরা প্রায়শই গতিশীল ভাষার অংশ), কোডে সুরক্ষার স্থিতিশীল বিশ্লেষণের অনেকগুলি উপায় কার্যকর হয় না। Perl এবং Undecidability এই ক্ষেত্রে হতে দেখায় এবং সঙ্গে আছে সিনট্যাক্স হাইলাইটিং এমন ধরনের তুচ্ছ সমস্যার পয়েন্ট আউট ( whatever / 25 ; # / ; die "this dies!";চ্যালেঞ্জ ভঙ্গি কারণ whateverআর্গুমেন্ট বা না নেওয়া সংজ্ঞায়িত করা যায় রানটাইম এ সম্পূর্ণরূপে একটি বাক্য গঠন হাইলাইটার বা স্ট্যাটিক বিশ্লেষক পরাজিত)।


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

নিম্নলিখিত কোড বিবেচনা করুন:

def mal(&block)
    puts ">:)"
    block.call
    t = block.binding.eval('(self.methods - Object.methods).sample')
    block.binding.eval <<-END
        def #{t.to_s}
          raise 'MWHWAHAW!'
        end
    END
end

class Foo
    def bar
        puts "bar"
    end

    def qux
        mal do
            puts "qux"
        end
    end
end

f = Foo.new
f.bar
f.qux

f.bar
f.qux

এই কোডটি পুরোপুরি দৃশ্যমান, তবে malপদ্ধতিটি অন্য কোথাও হতে পারে ... এবং খোলা ক্লাসগুলির সাথে অবশ্যই এটি অন্য কোথাও পুনরায় সংজ্ঞায়িত করা যেতে পারে।

এই কোড চলছে:

~ / $ রুবি foo.rb 
বার
> :)
যাও qux
বার
b.rb: 20: in `qux ': এমডাব্লুএইচএইচডাব্লু! (RuntimeError)
    বি.আরবি থেকে: 30: ইন `'
~ / $ রুবি foo.rb 
বার
> :)
যাও qux
বি.আরবি: ২০: ইন `বারে: এমডাব্লুএইচএইচএইচএইচবাহ! (RuntimeError)
    বি.আরবি থেকে: ২৯: ইন `'

এই কোডে, বন্ধটি সেই সুযোগে শ্রেণিতে নির্ধারিত সমস্ত পদ্ধতি এবং অন্যান্য বাইন্ডিংগুলিতে অ্যাক্সেস করতে সক্ষম হয়েছিল । এটি একটি এলোমেলো পদ্ধতি বেছে নিয়ে একটি ব্যতিক্রম বাড়াতে পুনরায় সংজ্ঞায়িত করেছে। ( এই অবজেক্টটিতে কী কী অ্যাক্সেস রয়েছে সে সম্পর্কে ধারণা পেতে রুবির বাইন্ডিং ক্লাসটি দেখুন )

ভেরিয়েবল, পদ্ধতি, স্বের মান এবং সম্ভবত এই প্রসঙ্গে অ্যাক্সেস করা যায় এমন একটি পুনরুদ্ধারকারী ব্লক সবগুলি বজায় রাখা আছে।

একটি সংক্ষিপ্ত সংস্করণ যা ভেরিয়েবলের পুনঃনির্ধারণ দেখায়:

def mal(&block)
    block.call
    block.binding.eval('a = 43')
end

a = 42
puts a
mal do 
  puts 1
end
puts a

যা, যখন রান উত্পাদন করে:

42
1
43

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

ভাল বা খারাপ, রুবি সম্পর্কে অভিযোগ করা বা না করা (এমন কোনও ব্যবহার রয়েছে যেখানে কেউ কোনও পদ্ধতির পরিবেশে আসতে সক্ষম হতে চান ( পার্লে নিরাপদ দেখুন )), "কেন সরকারী প্রকল্পে রুবি কেন সীমাবদ্ধ থাকবে?" প্রশ্ন "উপরে লিঙ্ক করা ভিডিওতে সত্যই উত্তর দেওয়া আছে।

দেত্তয়া আছে:

  1. রুবি একজনকে যে কোনও বন্ধ থেকে পরিবেশ আহরণ করতে দেয়
  2. রুবি বন্ধনের সুযোগে সমস্ত বাইন্ডিং ক্যাপচার করে
  3. রুবি সমস্ত বাঁধাই সরাসরি এবং পরিবর্তনীয় হিসাবে বজায় রাখে
  4. রুবিতে নতুন বাইন্ডিংসের ছায়া পুরাতন বাইন্ডিং রয়েছে (পরিবেশকে ক্লোনিং করা বা পুনর্নির্মাণকে নিষিদ্ধ করার চেয়ে)

এই চারটি ডিজাইনের পছন্দগুলির প্রভাবের সাথে, কোনও বিট কোড কী করে তা জানা অসম্ভব।

এটি সম্পর্কে আরও অ্যাবস্ট্রাক্ট হেরেসিজ ব্লগে পড়তে পারেন । বিশেষ পোস্টটি স্কিম সম্পর্কিত যেখানে এই জাতীয় বিতর্ক হয়েছিল। (এসও সম্পর্কিত: স্কীম প্রথম শ্রেণীর পরিবেশকে কেন সমর্থন করে না? )

তবে সময়ের সাথে সাথে আমি বুঝতে পেরেছিলাম যে প্রথম শ্রেণীর পরিবেশগুলির সাথে আমার প্রাথমিক ধারণাটির চেয়ে বেশি অসুবিধা এবং কম শক্তি ছিল। এই মুহুর্তে আমি বিশ্বাস করি যে প্রথম-শ্রেণীর পরিবেশগুলি সর্বোত্তমভাবে অকেজো এবং সবচেয়ে খারাপ ক্ষেত্রে।

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


3
আমি এর বিন্দু বুঝতে পারি না। আপনি একটি পার্ল শ্রেণীর উল্লেখ করেছেন যা স্কেলারের আচরণ পরিবর্তন করার অনুমতি দেয়। তবে, নিরাপদ পরিবেশ সহ পার্ল ব্যাপকভাবে ব্যবহৃত হয়। সহজ ভাষায় এই ক্ষমতা থাকা মানেই ভাষাটি ব্যবহার করা যাবে না। রুবির বিশেষ ক্ষেত্রে, সম্ভবত এটি সম্ভব যে লক্ষ্য পরিবেশটি রুবিকে সমর্থন করে না। ব্যক্তিগতভাবে, আমি কখনই রুবিকে কোনও সিস্টেমে ব্যবহারের জন্য উপলব্ধ থাকতে দেখিনি এবং আমি নিশ্চিত নই যে এটি কোনও অনুমোদিত সফ্টওয়্যার তালিকায় রয়েছে কিনা।
থমাসের মালিক

17
@ থমাস ওভেনস - এই উত্তর সম্পর্কে আমার উপলব্ধিটি হ'ল চাবিটি "many approaches to static analysis of security in code doesn't work"তাই এটি প্রত্যাখ্যান করা হয়েছে কারণ এটি বিশ্লেষণ করা যায় না (অন্তত এই গোষ্ঠী দ্বারা)। আমি এটির সঠিক ব্যাখ্যা দিচ্ছি কিনা, বা এটি প্রত্যাখ্যান করার বৈধ কারণ কিনা তা আমি জানি না।
ববসন

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

2
আপনি অন্যান্য অনেক ভাষায় স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলি পুনরায় সংজ্ঞায়িত করতে পারেন (উদাহরণস্বরূপ Obj-C, C, C ++)।
মার্টিন উইকম্যান

12
ভাল, .NET এক্সটেনশন পদ্ধতিগুলি উপরের রুবির মতো নয়। তারা কেবল স্ট্যাটিক ক্লাস টাইপ করার একটি সহজ উপায় তৈরি করে। তারা আসলে কোনও ক্লাসে কোনও পদ্ধতি যুক্ত করে না।
গ্রাহাম

50

ধরে নিলাম মূল্যায়নটি কেবলমাত্র সুরক্ষিত ছিল, এবং কেবল একটি গ্রহণযোগ্যতা স্ক্যান নয় (এটি তারা রুবিকে গ্রহণ করে না কারণ তারা রুবিকে সমর্থন করতে চায় না):

সুরক্ষা বিশ্লেষণ সরঞ্জামগুলির সাধারণত গতিশীল আচরণগুলির সাথে খারাপ সময় থাকে।

উদাহরণ স্বরূপ:

ভেরাকোডের মতো কোনও কিছুর মাধ্যমে এএসপি.নেট এমভিসি এবং সত্তা ফ্রেমওয়ার্কের মতো আধুনিক বৈশিষ্ট্যগুলির সাথে রচিত কোনও নেট প্রকল্প চালান এবং আপনার প্রতিবেদনে কোন ধরণের ভুয়া পজিটিভ পাবেন তা ধরণের লন্ড্রি তালিকা দেখুন।

এমনকি ভেরাকোড .NET 4 কোর লাইব্রেরিগুলিকে "অসমর্থিত ফ্রেমওয়ার্কগুলি" হিসাবে অসমর্থিত বা বিটা হিসাবে কেবল তার বেশিরভাগেরই বেশ কয়েক বছর পুরানো হলেও তালিকাভুক্ত করে।

যদি আপনি এমন কোনও সত্তার সাথে কাজ করছেন যা এই জাতীয় সরঞ্জামের উপর দৃ rel় নির্ভরতা রাখে তবে তারা প্রযুক্তিগত দক্ষতা, এবং সংস্থানগুলি না থাকলে যদি তারা কোনও প্রকল্পের ম্যানুয়ালি মূল্যায়ন করতে এবং এটি সঠিকভাবে লিখিত আছে কিনা তা দেখার জন্য তারা প্রায়শই এই অনিরাপদটিকে বিবেচনা করতে বাধ্য হয় নিরাপদ.

বেসামরিক ক্রিয়াকলাপগুলিতে যেখানে কম্পিউটার সিস্টেমগুলি সাধারণত বিপজ্জনক বা মারাত্মক ব্যয়বহুল কিছু নিয়ন্ত্রণ করতে পারে না তা হ'ল আপনি মিথ্যা ইতিবাচক বিষয়গুলি নিয়ে আলোচনা করেন এবং এগুলি সাধারণত প্রচুর পরিমাণে গ্রহণ করা হয়।

ব্যাংকিং অপারেশনগুলিতে আপনার কাছে এখনও একটি মিথ্যা ইতিবাচক প্রশমন হওয়ার সম্ভাবনা রয়েছে তবে আপনি প্রতিটি আইটেমের সংক্ষিপ্তসার নিয়ে আরও অনেক সময় ব্যয় করতে যাচ্ছেন। এটি দ্রুত ব্যয় প্রতিরোধী হয়ে ওঠে এবং আপনি আরও প্রচলিত পদ্ধতি ব্যবহার শুরু করেন।

সামরিক, বিমান, ভারী শিল্প এবং এর মতো পদ্ধতিতে সিস্টেমগুলি এমন জিনিসগুলিকে নিয়ন্ত্রণ করতে পারে যেগুলি সেই সিস্টেমগুলিতে মারাত্মক ব্যর্থতা মোড রয়েছে যাতে তাদের ভাষা, সংকলক ইত্যাদি সম্পর্কে খুব কড়া নিয়ম থাকতে পারে may

সংস্থাগুলি সাধারণত তাদের জেনে থাকা খারাপ অবস্থার জন্য তাদের সুরক্ষা নীতিটি লেখেন, সুতরাং আপনি যদি তুচ্ছ কিছু লিখছেন, আপনি যদি এমন একটি সংস্থার পক্ষে লিখছেন যা অ-তুচ্ছ সিস্টেম রয়েছে, তবে ডিফল্টটি সাধারণত এটি ধরে রাখে উচ্চতর মান যদি না কেউ নির্দিষ্ট ব্যতিক্রমের জন্য অনুরোধ করে।


4
এবং এটি কেবল মিথ্যা ইতিবাচক। সত্যই উদ্বেগজনক বিষয়টি মিথ্যা নেতিবাচক সম্ভাবনা।
স্টিফেন সি

3
সত্যি বলতে কী, এই সরঞ্জামগুলির সাথে আমার অভিজ্ঞতাটি সাধারণত ভয়াবহ ছিল। সম্ভবত 1/200 থেকে 1/1000 রেট বরাবর এমন কিছু যা আসলে আলোচনার উপযুক্ত something এছাড়াও, যখন আমি একটি মিথ্যা ইতিবাচক পাই যা আমি জানি যে কোডবেজ বা ফ্রেমওয়ার্কের হাজার হাজার স্পটে ব্যবহৃত কিছু এবং এটি কেবলমাত্র কয়েকবার এটি চিহ্নিত করেছে আমি ঠিক আত্মবিশ্বাসের সাথে পূর্ণ নই। সমস্যাটি হ'ল আপনি যদি # এর মতো কোনও আনুষ্ঠানিক ভাষা শুরু না করেন তবে আপনি এই সরঞ্জামগুলির মধ্যে একটি তৈরি করার সময় আপনি কার্যকরভাবে নেতিবাচক প্রমাণ প্রয়োগ করছেন।
বিল

33

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

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


32

আমি এফ -16 এর এমএমইউর অবস্থানের জন্য একটি পজিশন কোডের জন্য ডিওডি (প্রতিরক্ষা বিভাগ) এর সাথে সাক্ষাত্কারে কিছু সময় ব্যয় করেছি । কোনও অ-প্রকাশকে লঙ্ঘন না করে: এমএমইউ হ'ল কম্পিউটার ইউনিট যা এফ -16 এর প্রায় সমস্ত কার্য নিয়ন্ত্রণ করে। এটি (স্পষ্টতই) সমালোচিত যে ফ্লাইট চলাকালীন রান-টাইম বাগগুলির মতো কোনও ত্রুটি ঘটে না। সিস্টেমটি রিয়েল-টাইম কম্পিউটিং অপারেশন করা সমান সমালোচিত critical

এটি এবং অন্যান্য historicalতিহাসিক কারণে, এই সিস্টেমের জন্য সমস্ত কোড এডিএতে লিখিত বা সংকলিত হয় , একটি স্থির অবজেক্ট-ভিত্তিক প্রোগ্রামিং ভাষা

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

আমি খুব বেশি উদ্ধৃতি দিতে ঘৃণা করি, তবে এটি সত্যই ব্যাখ্যা করে যে ঠিক স্থির ভাষা (এডিএ এর মতো) এই জাতীয় প্রকল্পগুলির জন্য কেন ব্যবহৃত হয়:

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

অ্যাডা অননুমোদিত মেমরি, বাফার ওভারফ্লো ত্রুটিগুলি, পরিসীমা লঙ্ঘন, একের পর এক ত্রুটি, অ্যারে অ্যাক্সেস ত্রুটিগুলি এবং অন্যান্য সনাক্তযোগ্য বাগগুলি থেকে রক্ষা করতে রান-টাইম চেকগুলি সমর্থন করে supports এই চেকগুলি রানটাইম দক্ষতার স্বার্থে অক্ষম করা যেতে পারে তবে প্রায়শই দক্ষতার সাথে সংকলন করা যায়। এটিতে প্রোগ্রাম যাচাইকরণে সহায়তা করার সুবিধাও রয়েছে। এই কারণগুলির জন্য, অ্যাডা ব্যাপকভাবে জটিল সিস্টেমে ব্যবহৃত হয়, যেখানে কোনও অসঙ্গতি খুব মারাত্মক পরিণতি হতে পারে, যেমন: দুর্ঘটনাজনিত মৃত্যু, আঘাত বা গুরুতর আর্থিক ক্ষতি। অ্যাডা ব্যবহৃত হয় এমন সিস্টেমগুলির উদাহরণগুলির মধ্যে রয়েছে এভায়োনিক্স, রেলপথ, ব্যাংকিং, সামরিক এবং মহাকাশ প্রযুক্তি।

আডার গতিশীল মেমরি পরিচালনা উচ্চ-স্তরের এবং টাইপ-নিরাপদ। আদার জেনেরিক (এবং অস্পষ্ট) "পয়েন্টার" নেই; বা এটি সুস্পষ্টভাবে কোনও পয়েন্টার প্রকার ঘোষণা করে না। পরিবর্তে, সমস্ত গতিশীল মেমরি বরাদ্দ এবং deallocation অবশ্যই স্পষ্টভাবে ঘোষিত অ্যাক্সেস ধরণের মাধ্যমে সঞ্চালিত হবে। প্রতিটি অ্যাক্সেস টাইপের একটি সম্পর্কিত স্টোরেজ পুল রয়েছে যা মেমরি পরিচালনার নিম্ন-স্তরের বিশদ পরিচালনা করে; প্রোগ্রামারটি হয় হয় ডিফল্ট স্টোরেজ পুল ব্যবহার করতে বা নতুনকে সংজ্ঞায়িত করতে পারে (এটি অ-ইউনিফর্ম মেমরির অ্যাক্সেসের জন্য বিশেষত প্রাসঙ্গিক)। এমনকি বিভিন্ন ধরণের অ্যাক্সেসের প্রকারগুলিও ঘোষণা করা সম্ভব যা সমস্ত একই ধরণের মনোনীত করে তবে বিভিন্ন স্টোরেজ পুল ব্যবহার করে। এছাড়াও, ভাষাটি সংকলনের সময় এবং রান সময় উভয়ই অ্যাক্সেসযোগ্যতার যাচাইয়ের জন্য সরবরাহ করে, এটি নিশ্চিত করে যে কোনও অ্যাক্সেসের মানটি যে বিষয়টির দিকে ইঙ্গিত করে তার প্রকারের প্রকারগুলিকে বহিরাগত করতে পারে না।


3
"আদার সুরক্ষা-সমালোচনামূলক সমর্থন বৈশিষ্ট্যগুলির কারণে, এটি এখন বাণিজ্যিক রকেটগুলিতে [ব্যবহৃত হয়] (যেমন আরিয়েন 4 এবং 5)" অবশ্যই প্রথম এরিয়েন 5 একটি সফ্টওয়্যার বাগের কারণে বিস্ফোরিত হয়েছিল , তাই রূপালী বুলেট নেই।
অ্যান্ড্রু মার্শাল

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

@ মার্টিনশ্রেডার ওহে আমি সন্দেহ করছি না যে অ্যাডা এখনও এই অ্যাপ্লিকেশনটির জন্য অন্যদের চেয়ে সম্ভবত শ্রেষ্ঠ, অন্য কোনও ভাষা হয়ত অগণিত ত্রুটিগুলি পেরিয়েছিল যা আদায় সম্ভব হত না।
অ্যান্ড্রু মার্শাল

13

ডিওডি এবং নাসা উভয়েরই দীর্ঘমেয়াদী ইতিহাস রয়েছে যাতে প্রোগ্রামিং ব্যর্থ হয় যার জন্য তাদের কয়েক বিলিয়ন ডলার ব্যয় হয়। উভয় প্রতিষ্ঠানই এমন প্রক্রিয়া গ্রহণ করেছে যা তাদের একই ভুল পুনরাবৃত্তি থেকে রক্ষা করতে পারে।

Is this the government being slow to adopting new technologies?

এটি একটি ভুল ধারণা - গতিশীল ভাষাগুলি কোনও নতুন প্রযুক্তি নয়, সেগুলি বেশ পুরানো। সমস্যাটি হ'ল যদি আপনার কখনও ডাইনামিক ভাষার কারণে সমস্যা হয় (যেমন দুর্বল / গতিশীল টাইপিং) এবং সেই সমস্যার জন্য আপনার প্রচুর অর্থ ব্যয় হয়, আপনি এমন নীতি গ্রহণ করতে পারেন যা আপনাকে আবার একই ভুল করতে বাধা দেয় - যেমন সংবেদনশীল সিস্টেমে ডায়নামিক ভাষা ব্যবহার নিষিদ্ধ করা।

গতিশীল ভাষাগুলি প্রায়শই বাগগুলি "গ্রাস" করে এবং কিছু অপ্রত্যাশিত আচরণের সাথে শেষ হয়। সংবেদনশীল সিস্টেমে এটি অত্যন্ত বিপজ্জনক। যদি কোনও ভুল ঘটে থাকে তবে আপনি যত তাড়াতাড়ি সম্ভব এটি জানতে চান।

সুরক্ষার জন্য যদি উদ্বিগ্ন হয় তবে প্রকৃত ব্যবহারের ক্ষেত্রেটি দেখার প্রয়োজন হবে। উদাহরণস্বরূপ, আমি মনে করি না যে রেল ওয়েব পৃষ্ঠায় একটি রুবি জাভা ওয়েবপৃষ্ঠার চেয়ে স্বয়ংক্রিয়ভাবে কম সুরক্ষিত হবে।


2
IMHO আরও বাগগুলি অন্য যে কোনও কিছুর চেয়ে অনিচ্ছাকৃত বাফার ওভারফ্লোগুলি দ্বারা "গ্রাস" করা হয়েছে, এটি হ'ল এমন কিছু যা বেশিরভাগ গতিশীল ভাষাগুলি প্রথম স্থানে মঞ্জুরি দেয় না ... কেবল বলছে
অলৌকিক ঘটনা

@ মিয়ারাকুলিক্সেক্স সত্য, জাবি / সি # এবং অনুরূপ ভাষা রুবির তুলনায় অনেক বেশি ব্যবহৃত হচ্ছে এমন একটি কারণ রয়েছে। তারা প্রতিরক্ষামূলক - তারা সবকিছু পরীক্ষা করে। সি / সি ++ এ ডিফেন্সিয়েন্সিটি একটি ভাল কোডিং মান ব্যবহার করে প্রয়োগ করা যেতে পারে। আপনি প্রতিটি কিছুর জন্য চেক প্রয়োগ করতে পারেন। তবে আপনি কি রুবি বা জাভাস্ক্রিপ্টে একটি সংবেদনশীল অ্যাপ্লিকেশন লেখার কল্পনা করতে পারেন? লুকানো বাগগুলির সম্ভাবনা দুর্দান্ত।
সুলতান

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

6

আমি ড্রুপালের এসএ-কোর-২০১৪-২০০৫ বর্ণনা করে বিদ্যমান উত্তরগুলিতে যুক্ত করতে চাই , এটি একটি অত্যন্ত সংবেদনশীল দুর্বলতা যা এসকিউএল ইঞ্জেকশন এবং শেষ পর্যন্ত স্বেচ্ছাচারিত কোড কার্যকর করতে সক্ষম করে। এটি পিএইচপি-র গতিশীল টাইপিং এবং শিথিল রানটাইম টাইপিং বিধি দ্বারা সৃষ্ট।

এই ইস্যুটির জন্য প্যাচটির সম্পূর্ণতা হ'ল:

-      foreach ($data as $i => $value) {
+      foreach (array_values($data) as $i => $value) {

এই কোডটি এসকিউএল ইনজেকশন প্রতিরোধের জন্য ডিজাইন করা একটি এসকিউএল অ্যাবস্ট্রাকশন স্তরের অংশ। এটি নামযুক্ত প্যারামিটার সহ একটি এসকিউএল ক্যোয়ারী এবং একটি নামযুক্ত অ্যারে নেয় যা প্রতিটি নামক প্যারামিটারের জন্য একটি মান সরবরাহ করে। মানটি একটি অ্যারে হিসাবে অনুমোদিত, যেমন ক্ষেত্রে যেমন WHERE x IN (val1, val2, val3)তিনটি মান একটি একক নামের প্যারামিটারের জন্য একটি একক অ্যারে মান হিসাবে যেতে পারে।

দুর্বলতার ঘটে কারণ কোড ধরে নেয় যে $iমধ্যে $i => $valueমান একটি পূর্ণসংখ্যা সূচক হতে হবে। এটি প্যারামিটার নামের অংশ হিসাবে সরাসরি এসকিউএল কোয়েরিতে এই "সূচক "টিকে যুক্ত করে এবং সংযুক্ত করে, কারণ পূর্ণসংখ্যার কোনও পালানোর দরকার নেই, তাই না?

দুর্ভাগ্যক্রমে দ্রুপালের জন্য, পিএইচপি এই জাতীয় গ্যারান্টি সরবরাহ করে না। অন্য একটি মিশুক অ্যারে পাস করা সম্ভব, যার কীগুলি স্ট্রিং, এবং এই লুপটি খুশিতে ক্যোয়ারিতে স্ট্রিং কীকে একত্রে সংযুক্ত করবে (কোডটি মনে করে এটি কেবলমাত্র পূর্ণসংখ্যার হতে পারে)।

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

তদুপরি, কোডটি আইটেমগুলিতে পুনরাবৃত্ত হওয়ার আগে মানটি একটি অ্যারে কিনা তা যাচাই করে। এবং এখানে এই ব্যবস্থার সবচেয়ে গুরত্বপূর্ণ একটি দ্বিতীয় অংশ ব্যর্থ যে এই দুর্বলতার সম্ভব: উভয় একটি মিশুক অ্যারে এবং একটি "স্বাভাবিক" অ্যারে জন্য সত্য আসতে is_array। যদিও এটিও সত্য যে সি # তে, অভিধান এবং অ্যারে উভয়ই এমন IEnumerable, এমন কোড তৈরি করা কঠিন যা অভিধান কীগুলি এর মতো সূচকগুলি যেমন ইচ্ছাকৃতভাবে জড়িত করে, দুর্ঘটনাক্রমে একা ছেড়ে দেয়।


2

কোনও কোডবেস সুরক্ষিত কিনা তা নির্ভর করে আপনি কীভাবে আপনার কোডটি লেখেন, কীভাবে আপনি এটি পরীক্ষা করেন এবং কীভাবে আপনার উন্নয়ন এবং স্থাপনার প্রক্রিয়াটিকে বৈধতা এবং নিরীক্ষণ করেন তার উপর নির্ভর করে। ভাষা সুরক্ষিত বা সুরক্ষিত নয়, এটি আপনার কোড অনুসারে।

দূষিত ইনপুট (বর্গ ইনজেকশন, বাফার ওভারফ্লো), ভাইরাস, রুটকিটস এবং ট্রোজানগুলির কারণে সর্বাধিক সুরক্ষা ঘটনা। কোনও ভাষা আপনাকে এ থেকে রক্ষা করতে পারে না।

সুতরাং "অনিরাপদ" হওয়ার জন্য বিভিন্ন শ্রেণীর ভাষা নিষিদ্ধ করা বৈধ কারণ নয়।

আমি সন্দেহ করি যে কেউ যে কোনও কারণেই হোক - অবহিত হোক না কেন - এই ভাষাগুলি নিষিদ্ধ করার সিদ্ধান্ত নিয়েছে। কিছুক্ষণ পর এটি একটি সাংগঠনিক সত্যে পরিণত হয়েছিল । কিছু প্রকল্পের ক্ষেত্রে এটি সেই সময়ে সত্য হতে পারে, তবে নিয়ন্ত্রণ সংস্কৃতিগুলি সিদ্ধান্ত পরিবর্তন করতে আগ্রহী নয় (তারা ভুল বলে স্বীকার করে) এবং বরং সহজ নিয়মকে পছন্দ করে। তারা নিয়ম এবং প্রবিধান উপর উন্নতিলাভ এবং এটি না ব্যাপার যদি তারা জানার জন্য বা না, এটা অনুভূত নিরাপত্তা যে গণনা করে।

নিয়ন্ত্রণ সংস্কৃতিগুলিতে সর্বদা এটি ঘটে। আমি এটি প্রতিদিন কম বেশি দেখি। এটি কোনও অর্থবহ নয়, তবে এটি এটিই চলে। আপনি যদি এই অত্যন্ত প্রাসঙ্গিক বিষয় সম্পর্কে আরও পড়তে চান তবে আমি স্নাইডারের বই " দ্য রেনজিনিয়ারিং বিকল্প " সুপারিশ করছি। এখানে স্নাইডারের বইয়ের উপর ভিত্তি করে মাইকেল সাহোটো / এগ্রিলিট্রিক্সের একটি সংস্কৃতি চিত্র রয়েছে : এখানে চিত্র বর্ণনা লিখুন


18
-1 সুরক্ষা সমালোচনামূলক সিস্টেমগুলির জন্য অন্য ভাষা (রিয়েল-টাইম, স্ট্যাটিক-টাইপিং, রান-টাইম চেকস) এর চেয়ে বেশি ভাষা কেন বেছে নেওয়ার অনেকগুলি বৈধ প্রযুক্তিগত কারণ রয়েছে। আপনি বোঝাচ্ছেন যে কারণগুলি হ'ল 100% সংস্কৃতি, আমাদের বনাম সেগুলি এবং স্বেচ্ছাচারী, যা আইএমও এই ক্ষেত্রে সম্পূর্ণ ভুল incor
মাইকেল জ্যাস্পার

8
"ভাষা সুরক্ষিত বা সুরক্ষিত নয়" - stackoverflow.com/a/14313277/602554 দেখুন । কিছু ভাষা অবশ্যই অন্যদের চেয়ে "বেশি সুরক্ষিত"।
মাইকেল জ্যাস্পার

2
আমার উত্তর আপডেট করেছে, সম্ভবত আপনার পছন্দ অনুসারে। আমি এখনও বিশ্বাস করি যে কোনও সিস্টেমটি কতটা সুরক্ষিত তা আপনি যে ভাষাটি ব্যবহার করেন তার চেয়ে বেশি কোড আপনার কোডের উপরে নির্ভর করে যদিও কিছু ভাষা নির্দিষ্ট সমস্যা এড়াতে সহায়তা করে (যখন সম্ভবত অন্যটি পরিচয় করিয়ে দেয়)।
মার্টিন উইকম্যান

2
@ মার্টিনউইকম্যান: ক) এসকিউএল / এইচটিএমএল ইনজেকশন এবং বাফার ওভারফ্লোগুলি কোনও প্রকার সিস্টেমগুলি দ্বারা সমাধান করা হয় - আপনার পালানো এবং অনস্ক্রিত ইনপুটগুলির জন্য বিভিন্ন ধরণের থাকে যাতে আপনি জানেন যে কোন উপায়ে চিকিত্সা করা উচিত। খ) 'সুরক্ষিত প্রকল্পসমূহে' সমস্ত সুরক্ষা সমস্যা অগত্যা বোঝাপড়া করার অর্থ নয়। আমি চাই না যে সফটওয়্যারটি বিমান চালনা করছে এটি কোনও 'সুরক্ষা' সমস্যা না হয়েও কোনও ত্রুটিযুক্ত থাকে (যেমন সিস্টেমটি ধরে নিতে ব্যবহার করা যায় না)।
ম্যাকিয়েজ পাইচোটকা

5
প্রকৃত নির্ভুলতার সমস্যার জন্য -1 বাফার ওভারফ্লো শোষণগুলি সি ভাষার ক্ষেত্রে অত্যন্ত নির্দিষ্ট একটি সমস্যা; আপনি তাদের সম্পর্কে এমন ভাষাগুলিতে কখনও শুনেন না যা আপনাকে স্ট্যাকের উপর স্ট্রিং বাফার বরাদ্দ করতে দেয় না। এবং অনুমান করা এসকিউএল উপভাষাটি কল্পনা করা মোটেই কঠিন নয় যেখানে প্যারামিটারগুলির ব্যবহার কেবল অনুমোদিত নয় তবে প্রয়োজনীয় ছিল । এসকিউএল ইঞ্জেকশন এই ভাষায় অসম্ভব হবে। সুতরাং হ্যাঁ, একটি সঠিকভাবে ডিজাইন করা ভাষা আপনাকে বেশ কয়েকটি সাধারণ ধরণের আক্রমণ থেকে রক্ষা করতে পারে
ম্যাসন হুইলারের

2

আমি যতদূর বলতে পারি, অফিশিয়াল ডিফেন্স ডিফেন্স পলিসি সাধারণত গতিশীল ভাষাগুলি নিষিদ্ধ করে না।

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

সম্ভবত আপনি যা দেখছেন তা হ'ল অত্যধিক-কঠোর স্ক্যানিং সরঞ্জাম (এসটিআইজে বিভিন্ন বর্ণিত উল্লেখ রয়েছে, প্রত্যেকের বিধিগুলির নিজস্ব নিজস্ব ব্যাখ্যা থাকতে পারে) এবং / অথবা এর আউটপুটটির অত্যধিক-কঠোর ব্যাখ্যা।

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