প্রতিটি 'অশুভ' রেজেক্সের জন্য কি অ-অশুভ বিকল্প রয়েছে, না কি ব্যাকরণে শয়তান রয়েছে?


16

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

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


আমি যদি সুনির্দিষ্ট প্রযুক্তিগত ভাষা ব্যবহার করতে পারি তবে এটি একটি দুর্ঘটনা। অনুগ্রহপূর্বক আপনার উত্তরগুলি
ডেভিড বুলক

1
আমি আসলে পুনরায় করণীয় এড়াতে একটি ব্যবহারিক উপায় সন্ধান করার চেষ্টা করছি এবং এই প্রশ্নটি উঠে এসেছিল।
ডেভিড বুলক

আপনার প্রশ্নটির পুনঃব্যবস্থাপনা করার জন্য: প্রত্যেকটি নিয়মিত ভাষার কি একটি নিয়মিত প্রকাশ থাকে যার দৈর্ঘ্যটি তার সর্বনিম্ন এনএফএ-র রাজ্যের সংখ্যাতে বহুবর্ষ দ্বারা আবদ্ধ থাকে?
এ.স্কুলজ

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

ফলস্বরূপ, আমি মনে করি প্রশ্নটির পরিবর্তে: প্রতিটি নিয়মিত ভাষার একটি নিয়মিত ভাব থাকে যা নিয়মিত প্রকাশের সাথে চরিত্রের স্ট্রিংয়ের সাথে মিল রেখে O ( f ( n ) ) সময় নেয়, যেখানে f ( n ) কিছুটা খুব বেশি- n এর ক্রমবর্ধমান ক্রিয়াকলাপ (বলুন, বহুপদী, বা এরকম কিছু)? [ঘটনাচক্রে, এই পুনঃনির্মাণটি স্পষ্ট করে দেয় যে উত্তরটি ম্যাচের জন্য ব্যবহৃত অ্যালগরিদমের উপর নির্ভর করবে ... যেমনটি আমি আমার উত্তরে উল্লেখ করেছি।] ন্যূনতম এনএফএর আকারের ফাংশন হিসাবে নিয়মিত প্রকাশের আকারটি হয় না সত্যিই এখানে ব্যাপার। nO(f(n))f(n)এন
ডিডাব্লু

উত্তর:


14

এটি আপনার কোনও নিয়মিত প্রকাশ বা রেজিএক্সপক্স পেয়েছে কিনা তার উপর নির্ভর করে: রিজেক্সপ্সটি মন্দ, তবে নিয়মিত প্রকাশগুলি সৌন্দর্যের জিনিস এবং আপনার পক্ষে কখনই মন্দকে পরিণত করবে না।

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

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

এটি নিয়মিত অভিব্যক্তি ম্যাচারের বাস্তবায়নের উপর নির্ভর করে। যদি আপনার ম্যাচারের একটি নির্বোধ বা দুর্বল প্রয়োগ হয়, তবে মিলের ক্ষেত্রে তাত্পর্যপূর্ণ সময় লাগতে পারে; অবশ্যই সেই সম্পত্তিটির সাথে অ্যালগরিদম রয়েছে। তবে এর সর্বোত্তম উত্তর হ'ল নিয়মিত অভিব্যক্তি পরিবর্তন করা নয়; আপনি যদি অস্বীকৃত-পরিষেবা-আক্রমণ সম্পর্কে উদ্বিগ্ন হন তবে আরও ভাল ম্যাচার বাছাই করা আরও ভাল।

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

(এই জাতীয় সমতুল্য অস্তিত্ব থাকতে পারে এবং তাত্ত্বিকভাবে এটি সন্ধানযোগ্যও হতে পারে, তবে বিশ্বাসযোগ্য অনুমানের অধীনে, সমতুল্য রেজএক্সপ্যাক্স সন্ধান করা তাত্পর্যপূর্ণ সময় নেবে, যা বাস্তবে সম্ভব হবে না If যদি আপনার বহুবর্ষের সমতুল্য রেজপ্যাক্স সন্ধানের পদ্ধতিগত পদ্ধতি থাকে) , তারপরে আপনি বহুবৃত্তীয় সময়ে এনপি-হার্ড সমস্যাটি সমাধান করতে পারতেন, এটি প্রমাণ করতেন যে পি = এনপি lifetime আপনার জীবনকালের মধ্যে যদি বাস্তবে এটি খুঁজে না পাওয়া যায় তবে সেখানে কোনও সমতুল্য রেজিপ্স্প উপস্থিত থাকার পক্ষে এটি খুব ভাল কাজ করে না))


পটভূমি এবং উত্স:


একাধিক ছোট রেজেক্সে ভাগ করে এবং সংমিশ্রণে ব্যবহার করে কোনও অ-দুষ্ট বিকল্প খুঁজে পাওয়া সহজ নয়?
inf3rno

1

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

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

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

এখানে প্রযোজ্য ফল্ট সহনশীলতা / স্থিতিস্থাপকতার উন্নতির জন্য আরেকটি পদ্ধতি হ'ল সফটওয়্যার স্ট্যাক / স্তরক্রমের বিভিন্ন স্তরে নির্দিষ্ট সময়সীমা time ধারণাটি হ'ল একটি "গড়" নিয়মিত অভিব্যক্তি মূল্যায়নের সময় / সিপিইউ বা নির্দেশ সীমা নির্দিষ্ট করা এবং এটি অতিক্রম করা হলে তাড়াতাড়ি শেষ করা। এগুলি কাস্টম সমাধান সহ কার্যকর করা যেতে পারে তবে খুব বেশি নয় সফ্টওয়্যার বা প্রোগ্রামিং ভাষাগুলি এই উদ্দেশ্যে অন্তর্নিহিত সময়সীমা বা ফ্রেমওয়ার্কগুলি তৈরি করে না।

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

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

প্রস্তাবিত স্থির বিশ্লেষণ সমাধান (গুলি) সহ এই নির্দিষ্ট বিষয়ের একটি দুর্দান্ত বৈজ্ঞানিক জরিপ এখানে দেওয়া হয়েছে:

  • সাবস্ট্রাকচারাল লজিকস / রথনায়কে, থিয়েলেকের মাধ্যমে নিয়মিত এক্সপ্রেশন এক্সফোনেনশিয়াল রানটাইমের স্থির বিশ্লেষণ

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


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

রেডস রেফের উপর ভিত্তি করে আপনার পয়েন্টগুলি প্রযুক্তিগত / চুলের বিভাজনের পরিমাণ মনে করে এবং গাছের জন্য বনকে মিস করে। তার অনুরূপ "crafted ইনজেকশন আক্রমণ" করা হয়েছে। উত্তরটি নির্দেশ করে যে কোডে রেজেক্সপ্স ব্যবহারের বিকল্প রয়েছে। স্থিতিশীল বিশ্লেষণ "দুষ্টু regexps" খুঁজে পেতে পারেন। উত্তরের সমস্ত পয়েন্ট বৈধ। "সাধারণত রেজিএক্সপ্যাক্ট প্রোগ্রামে হার্ডকোড করা হয় (বিকাশকারী দ্বারা সরবরাহ করা হয়) এর মতো একটি বাক্য এবং কোনও ব্যবহারকারী দ্বারা ইনপুট স্ট্রিং সরবরাহ করা হয়" ঠিক এমন জায়গায় রেডস রাইটআপের সাথে মেলে না যা জায়গাগুলিতে আরও অস্পষ্ট এবং এটি কোনও দূষিত আক্রমণকারী ইত্যাদি উল্লেখ করে does ।
vzn
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.