অবৈধ utf8 স্ট্রিং উদাহরণ?


99

আমি পরীক্ষা করছি যে কীভাবে আমার কিছু কোড খারাপ ডেটা পরিচালনা করে এবং আমার কয়েকটি সিরিজ বাইট দরকার যা ইউটিএফ -8 অবৈধ।

তারা কেন খারাপ / আপনি এগুলি কোথায় পেয়েছেন তার ব্যাখ্যা আপনি কিছু পোস্ট করতে পারেন?


উত্তর:


75

কটাক্ষপাত মার্কুস কুন এর হল UTF-8 ডিকোডার সামর্থ্য এবং চাপ পরীক্ষা ফাইল

একাকী স্টার্ট বাইট, ধারাবাহিকতা বাইট নিখোঁজ হওয়া, ওভারলং সিকোয়েন্স ইত্যাদি সহ অনেকগুলি ইউটিএফ -8 অনিয়মের উদাহরণ পাবেন'll


53

পিএইচপি-তে:

$examples = array(
    'Valid ASCII' => "a",
    'Valid 2 Octet Sequence' => "\xc3\xb1",
    'Invalid 2 Octet Sequence' => "\xc3\x28",
    'Invalid Sequence Identifier' => "\xa0\xa1",
    'Valid 3 Octet Sequence' => "\xe2\x82\xa1",
    'Invalid 3 Octet Sequence (in 2nd Octet)' => "\xe2\x28\xa1",
    'Invalid 3 Octet Sequence (in 3rd Octet)' => "\xe2\x82\x28",
    'Valid 4 Octet Sequence' => "\xf0\x90\x8c\xbc",
    'Invalid 4 Octet Sequence (in 2nd Octet)' => "\xf0\x28\x8c\xbc",
    'Invalid 4 Octet Sequence (in 3rd Octet)' => "\xf0\x90\x28\xbc",
    'Invalid 4 Octet Sequence (in 4th Octet)' => "\xf0\x28\x8c\x28",
    'Valid 5 Octet Sequence (but not Unicode!)' => "\xf8\xa1\xa1\xa1\xa1",
    'Valid 6 Octet Sequence (but not Unicode!)' => "\xfc\xa1\xa1\xa1\xa1\xa1",
);

Http://www.php.net/manual/en/references.pcre.pattern.modifiers.php#54805 থেকে



4

দুর্গঠিত বাইট-সিকোয়েন্সগুলির নিদর্শনগুলির ধারণাটি সুগঠিত বাইট সিকোয়েন্সগুলির সারণী থেকে পাওয়া যায়। ইউনিকোড স্ট্যান্ডার্ড 6.2 -এ " সারণী 3-7. ভালভাবে তৈরি ইউটিএফ -8 বাইট সিকোয়েন্সস " দেখুন।

    Code Points    First Byte Second Byte Third Byte Fourth Byte
  U+0000 -   U+007F   00 - 7F
  U+0080 -   U+07FF   C2 - DF    80 - BF
  U+0800 -   U+0FFF   E0         A0 - BF     80 - BF
  U+1000 -   U+CFFF   E1 - EC    80 - BF     80 - BF
  U+D000 -   U+D7FF   ED         80 - 9F     80 - BF
  U+E000 -   U+FFFF   EE - EF    80 - BF     80 - BF
 U+10000 -  U+3FFFF   F0         90 - BF     80 - BF    80 - BF
 U+40000 -  U+FFFFF   F1 - F3    80 - BF     80 - BF    80 - BF
U+100000 - U+10FFFF   F4         80 - 8F     80 - BF    80 - BF

এখানে ইউ + 24 বি 62 থেকে উত্পন্ন উদাহরণগুলি রয়েছে। আমি এগুলি ত্রুটি প্রতিবেদনের জন্য ব্যবহার করেছি: বাগ # 65045 এমবি_কভার্ট_এনকোডিং সুগঠিত চরিত্রটিকে ভেঙে দেয়

// U+24B62: "\xF0\xA4\xAD\xA2"
"\xF0\xA4\xAD"    ."\xF0\xA4\xAD\xA2"."\xF0\xA4\xAD\xA2"
"\xF0\xA4\xAD\xA2"."\xF0\xA4\xAD\xA2"."\xF0\xA4\xAD"

বিভিন্ন লাইব্রেরিতে ট্রেলিং বাইটের পরিসর ([0x80, 0xBF]) এর ওভারসিম্প্লিফিকেশন দেখা যায়।

// U+0800 - U+0FFF
\xE0\x80\x80

// U+D000 - U+D7FF
\xED\xBF\xBF

// U+10000 -  U+3FFFF
\xF0\x80\x80\x80

// U+100000 - U+10FFFF
\xF4\xBF\xBF\xBF

-6

ফাজ পরীক্ষা - অক্টেটের একটি এলোমেলো ক্রম উত্পন্ন করে। সম্ভবত আপনি খুব শীঘ্রই কিছু অবৈধ সিকোয়েন্স পাবেন।


7
হাইজেনব্যাগ বা আইসেন্টেটস এর চেয়ে খারাপ আর কিছু নেই। পরীক্ষাগুলি 10 বার পাস করে, আপনি পণ্যটি প্রকাশ করেন, পরীক্ষা ব্যর্থ হয়।
এরিক ডুমিনিল

@ এরিকডুমিনিল কখনও শ্রান্ডের কথা শুনেছেন ()?
shoosh

4
যথেষ্ট ফর্সা। আপনি দয়া করে উত্তরে এটি উল্লেখ করতে পারেন যাতে আমি আমার ডাউনটাতে ফেরত দিতে পারি?
এরিক ডুমিনিল

4
আহ আহ. ঠিক আছে, শিখার জন্য সবসময় নতুন কিছু থাকে, এজন্য আমি এসওতে প্রথম স্থানে আসি। আমি মনে করি আপনার srand()পরামর্শটি একটি ভাল ধারণা, এটি এখানে অন্য লোকদের সহায়তা করতে পারে।
এরিক ডুমিনিল

আমরা সরাসরি অবৈধ স্ট্রিংগুলি তৈরি করতে পারি, চেষ্টা করার জন্য এবং শেষ পর্যন্ত এগুলি আবিষ্কার করার জন্য আমাদের এলোমেলোতার প্রয়োজন নেই, যদিও স্ট্রিং প্রসেসিং লাইব্রেরিগুলি (সম্ভবত!) কেবল ফ্যাসিংয়ের ফলে উপকার পাবেন।
গালভা 13
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.