আক্রমণ বিরুদ্ধে নিয়মিত প্রকাশের ব্যবহারকারী ইনপুট রক্ষিত


9

আমি নিয়মিত এক্সপ্রেশন অস্বীকার পরিষেবার (রিডোএস) সম্পর্কে সচেতন। ব্যবহারকারীরা যখন কোনও তাত্পর্যপূর্ণ ধীর প্যাটার্ন জমা দেবেন না তার গ্যারান্টি দিয়ে কাস্টম রেজেক্সগুলি তৈরি করার অনুমতি দেওয়ার কোনও যুক্তিসঙ্গত উপায় আছে কি?


আপনার বিশদে অভাব রয়েছে। প্ল্যাটফর্ম, ব্যবহার, ইত্যাদি
whatsisname

8
পরিবর্তে ব্যবহারকারীর একটি খারাপ রেজেক্স জমা দেওয়ার এড়াতে চেষ্টা করার পরিবর্তে সম্ভবত এমন একটি সমাধান যেখানে নির্দিষ্ট সময়ের পরে আপনি মৃত্যুদণ্ড বাতিল করবেন?
স্যামুয়েল

উত্তর:


8

নিয়মিত অভিব্যক্তিগুলির সমস্যাটি রেজেক্স নিজেই নয়, তবে রেগেক্স ইঞ্জিনটিতে ব্যাকট্র্যাকিংয়ের মতো সমস্ত ধরণের "সুবিধাজনক" বৈশিষ্ট্য রয়েছে। অতএব, এই বৈশিষ্ট্যগুলি ছাড়াই একটি রেজেক্স ইঞ্জিন ব্যবহার করা এড়ানো যায়।

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

RE2 ইঞ্জিন বিশেষভাবে উন্নত ছিল অবিশ্বস্ত regexes সঙ্গে মোকাবিলা করার জন্য এবং রৈখিক সময় সঞ্চালনের জন্য পরিকল্পনা করা হয়েছিল।

আরেকটি বিকল্প হ'ল সরলীকৃত স্বরলিপি থেকে নিজেকে রেগেক্স করে। উদাহরণস্বরূপ, আপনি ব্যবহারকারীদের গ্লোব নিদর্শন (যেমন *.txt) ব্যবহার করার অনুমতি দিতে পারেন । এরপরে আপনি এটি এমনভাবে পার্স করতে পারেন যা ব্যাকট্র্যাকিং প্রতিরোধ করে, যেমন নীড় বাঁধা এবং কেবল লোভী কোয়ান্টিফায়ার ব্যবহার করে। অনেক ব্যবহারের ক্ষেত্রে, সরলিকৃত প্যাটার্ন স্বরলিপি সম্পূর্ণরূপে যথেষ্ট।


11

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

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


3
আপনার প্রথম বক্তব্যটির জন্য প্রশংসা আছে? আমি যেমন একটি প্রমাণ দেখতে আগ্রহী হবে। Regexes টিউরিং-সম্পূর্ণ নয়, তাই থামার সমস্যাটি প্রয়োগ নাও হতে পারে।
সেবাস্তিয়ান রেডল

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

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

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

1

লাজারাস প্রোজেক্টের রি পার্সার লেখক হিসাবে আমি বলব যে কোনও নির্দিষ্ট নিয়মিত প্রকাশের জন্য এটি বোঝার কোনও উপায় নেই যে এটি কোনও নির্দিষ্ট পাঠ্যে কী কী সংস্থান ব্যবহার করবে।

একই সংস্থানগুলি ব্যয় না করে আমি (কমপক্ষে বিগ-ও অর্থ)।

সুতরাং সেরা পন্থা - পৃথক থ্রেডে রি পার্সার চালান এবং সময় শেষ হওয়ার পরে এটি হত্যা করুন।


0

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

একইভাবে, আপনি অন্য থ্রেডে রেজিজেসগুলি চালাতে এবং থ্রেডগুলি খুব বেশি সময় নিলে হত্যা করতে পারেন।

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