"ভাষা-সুরক্ষিত" ইউআইডিগুলি কীভাবে তৈরি করা যায়?


20

আমি সর্বদা আমার সংস্থানগুলির আইডির জন্য এলোমেলোভাবে উত্পন্ন স্ট্রিংগুলি ব্যবহার করতে চেয়েছিলাম, যাতে আমার মতো ছোট সংখ্যক ইউআরএল থাকতে পারে: / ব্যবহারকারী / 4jz0k1

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

তারপরে আমি ভেবেছিলাম আমাকে যা করতে হবে তা হ'ল প্রতি 2 টি অক্ষর যুক্ত করার মতো একটি নির্দিষ্ট প্যাটার্ন সেট আপ করা। আমি আমার 'জেনারেট_সেফ_উইউইডি' পদ্ধতিটি নিয়ে খুব খুশি হয়েছিলাম তবে আমি বুঝতে পেরেছিলাম যে এটি কেবল এসইওর পক্ষে ভাল এবং ব্যবহারকারীর পক্ষে আরও খারাপ, কারণ এটি প্রকৃত শব্দের উত্পন্ন হওয়ার অনুপাতকে বাড়িয়েছে, যেমন: / ব্যবহারকারী / জি 4 হাইড 1ck5

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

অন্য কোন ধারণা?

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

হালনাগাদ

কিছু লিঙ্ক প্রত্যেকের পড়া উচিত:

http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx

http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx


একটি হ্যাশ বা চেকসাম ব্যবহার করবেন? আপনি যদি এলোমেলো স্ট্রিং ব্যবহার করতে পছন্দ করেন তবে বর্ণমালার প্রতিটি অক্ষর আপনাকে ব্যবহার করতে হবে এমন কোনও নিয়ম নেই।
অস্টিন হেনলি

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


1
@ হ্যাপিডোপোভার, প্রথমত, এটি সর্বজনীন নয়। এটি আপনার আবেদনের জন্য নির্দিষ্ট। দ্বিতীয়ত, ইউউইডটি নির্দিষ্টভাবে en.wikedia.org/wiki/Universally_unique_ شناختফায়ারকে বোঝায় যে আপনি তৈরি করেন এমন কোনও স্কিম নয়।
উইনস্টন ইওয়ার্ট

2
এটি ব্রেনটাইমের এমন অবিশ্বাস্য অপচয়। এটির সম্ভাবনা আসলেই খুব ছোট কারণ এটি সম্পর্কে চিন্তা করাও খুব কম ...
মাইকেল বর্গওয়ার্ট

উত্তর:


6

কয়েকটি টিপস যা অজান্তে অর্থবহ শব্দ তৈরির সম্ভাবনা কমিয়ে দেয়:

  • মিশ্রণে কিছু অ-আলফা, অ-সংখ্যাসূচক অক্ষর যুক্ত করুন, যেমন "-", "!" বা "_"।
  • "ইউএক্সএক্স" বা "এএ" এর মতো আসল কথায় যেমন হওয়ার সম্ভাবনা নেই এমন অক্ষরের ক্রমগুলি (একক অক্ষরের পরিবর্তে) সংগ্রহ করে আপনার ইউআইডিগুলি রচনা করুন।

এটি কিছু সি # নমুনা কোড (। নেট 4 ব্যবহার করে):

private string MakeRandomString()  
{  
    var bits = new List<string>()  
    {  
            "a",  
            "b",  
            "c",  
            "d",  
            "e",  
            //keep going with letters.  
            "0",  
            "1",  
            "2",  
            "3",  
            //keep going with numbers.  
            "-",  
            "!",  
            "_",  
            //add some more non-alpha, non-numeric characters.  
            "zx",  
            "aa",  
            "kq",  
            "jr",  
            "yq",  
            //add some more odd combinations to the mix.  
    };  

    StringBuilder sb = new StringBuilder();  
    Random r = new Random();  
    for (int i = 0; i < 8; i++)  
    {  
        sb.Append(bits[r.Next(bits.Count)]);  
    }  

    return sb.ToString();  
}  

এটি গ্যারান্টি দেয় না যে আপনি কাউকে আপত্তি করবেন না, তবে আমি @ ডিডএমজি-র সাথে সম্মত হই যে আপনি এত বেশি লক্ষ্য রাখতে পারবেন না।


1
অ-অক্ষরসংখ্যার সমস্যাটি হ'ল তাদের মধ্যে কিছু ইউআরআইতে ভাল খেলতে পারে না (পালিয়ে যাওয়া চরিত্রের দিকে পরিচালিত করে, যা একটি ক্ষুদ্র ইউআরএল-এ একটি বড় সংখ্যা নয়: বিট.ইল এবং টিন্যুরাল তাদের ব্যবহার করছে না) এর কারণ রয়েছে) অন্য সমস্যাটি হ'ল তারা ব্যবহারকারীর কাছে কম স্বজ্ঞাত: এগুলি পোস্ট-এ লিখতে বা ফোনে ট্রান্সমিশ করা সহজ নয় (অনেকগুলি নন-টেকিইজদেরই আন্ডারস্কোরের নাম কীসের জন্য কোনও ধারণা নেই, কারণ উদাহরণস্বরূপ)। ছোট্ট url এবং bit.ly এগুলি ব্যবহার না করার কারণ আবারও আছে।
ব্যবহারকারী988052

@ ব্যবহারকারী988052: অতএব কিছু অ-আলফা, অ-সংখ্যাযুক্ত অক্ষর। এমন কয়েকটি নির্বাচন করা সহজ যা ইউআরআইয়ের পক্ষে সূক্ষ্ম এবং মানুষের পক্ষে যথেষ্ট সহজ।
সিজারগন

"অতএব কিছু অ-আলফা, অ-সংখ্যাযুক্ত অক্ষর" " [sic] ... ইউআরএল সংক্ষিপ্তকরণ পরিষেবাদি (বিট.ইলি, টিনিয়ুরল, টিকো, গুগল, ইত্যাদি) মনে হয় যে "কিছু" এর চেয়ে শূন্য নন- আলফানাম ভাল। এবং আমি মনে করি যে আমার পূর্ববর্তী মন্তব্যে আমি যে কারণগুলি ব্যাখ্যা করেছি সেগুলি ব্যাখ্যাগুলির অংশ যা এই পরিষেবাগুলি আপনার দৃষ্টিভঙ্গির সাথে একমত হচ্ছে না কেন। এখন স্পষ্টতই আমাদের মতামতগুলি বিষয়ে মতভেদ করছে এবং আমি আপনাকে শেষ কথাটি ছেড়ে দেব; )
user988052

@ ব্যবহারকারী988052: আমি যুগ যুগ ধরে goo.gl ব্যবহার করে আসছি এবং সব ধরণের নন-আলফা অক্ষর রূপান্তর করার ক্ষেত্রে এর কোনও সমস্যা কখনও হয়নি; একমাত্র ব্যতিক্রম% আপনি এই নথিটি পরিষেবাটির আলোচনা গোষ্ঠীতে খুঁজে পেতে পারেন। আপনি কি আপনার দাবিগুলির ব্যাক আপ করার কোনও রেফারেন্স সরবরাহ করতে পারেন?
সিজারগন

1
ওপি জানিয়েছেন যে তিনি ছোট নাম চান এবং এগুলি উত্পন্ন করার জন্য একটি পদ্ধতি জিজ্ঞাসা করেন। আপনি "মিশ্রণে পুত্র অ-আলফা, অ-সংখ্যাসূচক অক্ষর যুক্ত করার পরামর্শ দিন" [sic]। তাহলে আপনি কি পরামর্শ দিচ্ছেন? এই ওপিতে প্রথমে "কিছু" উত্পন্ন করে তারপরে এটি টিনিউরল / বিট.লিতে প্রেরণ করবেন? আমি মনে করি ওপি এর পরে আর তা নয়। ওপি সরাসরি একটি URL তৈরি করতে চায় যা তুলনামূলকভাবে "ক্ষুদ্র"। আমি যা বলছি তা হ'ল যদি সে তার পরে থাকে তবে তার পক্ষে টিন্যুরাল / বিট.লির মতো একটি আলফানাম বর্ণমালা ব্যবহার করা ভাল! এখন আমি সত্যিই বন্ধ।
ব্যবহারকারী988052

5

কেবল দুষ্টু শব্দের তালিকা তৈরি করুন, একটি অক্ষরের বিকল্প তালিকা তৈরি করুন এবং তারপরে যদি কোনও আইডি উত্পন্ন হয় তবে দুষ্টু শব্দ হয়, তবে এটি আবার করুন।

উদাহরণস্বরূপ (সিউডো কোড)

naughty_words = ["ass", "shit", "boobs"]
substitutions = {
    "4" : "a"
    "1" : "i"
    "3" : "e"
    "7" : "t"
    "5" : "s"
    "0" : "o"
    // etc.
}

function reducestring (str) {
    newstr = ""
    for (character in str) {
        if (substitituions[character]) newstr += substitutions[character]
        else newstr += character
    }
    return tolower(newstr)
}

do {
    new_id_numeric = random_number()
    short_id = compress_to_alphanumeric(new_id_numeric) // 0-9, a-z, A-Z
    // that function should create a base 62 number
} while (!contains(naughty_words, reducestring(short_id))

(আপনি মত অন্যান্য সংক্ষিপ্ত URL সুপারিশ পাঠাতে পারেন এই এক বেস 62 হ্যাশ / রূপান্তর উপর তথ্য জন্য)

এখন আপনি আর ID- র মত পেতে a55, sh1tবা "b00bs"। আপনার চিঠির প্রতিস্থাপনের তালিকায় কেবল আপনার দুষ্টু শব্দের অক্ষর থাকা দরকার, স্পষ্টতই।

যেহেতু কোন এক হিসাবে "গাধা" "455" পড়তে যাচ্ছে তাহলে আপনি চাইবেন return strমধ্যে reducestringযদি কোন অক্ষর থাকে না।

উদাহরণ

গ্রাফিক-ডিজাইন সাইট ড্রিবলের পোস্টগুলির জন্য নিজস্ব শর্ট স্ট্রিং আইডি রয়েছে। এগুলি 0-9, এজেড এবং এজেড http://drbl.in/dCWi এর মতো ব্যবহার করে ।

আমি কিছু পরীক্ষা-নিরীক্ষা করেছি এবং কমপক্ষে কয়েকটি দুষ্টু শব্দের জন্য সংক্ষিপ্ত আইডিস রয়েছে। আমি অনুমান করি তারা যখন এলো আমরা দেখতে পাব f, তবে তারা এখনও সেখানে নেই।

মঞ্জুর - /user/whateverকোনও পোস্টের পরিবর্তে কোনও ব্যবহারকারীর নিজস্ব ব্যক্তিগত-শনাক্তকরণ url ( ) দেওয়া দুষ্টু শব্দের সাথে আরও খারাপ।


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

1
এবং পৃথিবীতে আপনি প্রতিটি ভাষার জন্য কী লিখবেন ?
ডেডএমজি

1
@ ডেডজিএম সমস্ত সম্ভাব্য আপত্তিকর শব্দের সম্পূর্ণ সেটের জন্য, এটি কেবল সে সেটটিকে আরও ছোট করতে পারে। আপনার অবস্থান কি আসলে: "আপনি 100% এ পৌঁছাতে পারবেন না, তাই এটি স্বয়ংক্রিয়ভাবে কিছু করার মতো নয়"?
নিকোল

ইউটিএফ -8 সম্পর্কে কী? এই বিকল্পটির চারপাশে প্রচুর বিকল্প মুদ্রণযোগ্য অক্ষর রয়েছে around
জেবিআরউইলকিনসন

1
@ জবিআরওয়িলকিনসন যা প্রয়োগ করে না কারণ ওপি আইডিগুলির জন্য বর্ণমালার অক্ষরের সেট নির্ধারণ করছে, তাই না?
নিকোল

5

পরিবর্তে একটি সংখ্যা বা হেক্সাডেসিমাল কী ব্যবহার করার কথা বিবেচনা করুন। এটি আই 18 এন-সচেতন অশ্লীল ফিল্টার লেখার তুলনায় আপনাকে অনেক ঝামেলা বাঁচাতে পারে এবং সবচেয়ে খারাপ আপনাকে মরা গরুর মাংসের জন্য ভাবতে হবে


1
+1: আমি মনে করি এটি সবচেয়ে সহজ এবং নিরাপদ সমাধান। আপনি একটি সংখ্যার আকারে একটি ইউইড তৈরি করতে পারেন এবং এর জন্য একটি স্ট্রিং প্রতিনিধিত্ব ব্যবহার করতে পারেন (দশমিক, হেক্সাডেসিমাল, অক্টাল)।
জর্জিও

4
আপনার এখনও চিন্তা করতে হবে B16B00B5: পি
কোডসিনচোস

3

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

আপনি যা করতে পারেন তা কেবল ব্যবহারকারীকে জানাতে হবে যে তাদের আইডি এলোমেলো এবং বিষয়বস্তু অপ্রাসঙ্গিক এবং যদি তারা পায় /user/fuckerতবে তাদের কেবল এটি এড়ানো উচিত। এই জিনিসগুলি ঘটে থাকে এবং এটি এড়ানোর জন্য প্রযুক্তিগতভাবে সম্ভব হয় না - ঠিক যেমন আপনি কখনও অশ্লীলতা ফিল্টার করতে পারবেন না।


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

4
আমিও ডাউনভোটার নই, তবে আমি @ মারজানভেনেমার সাথে একমত, / ব্যবহারকারী / চ * সিকার গ্রহণযোগ্য নয়
হ্যাপিডেভলবার

@ হ্যাপিডেলিভার: আমি আগেই পরামর্শ দিয়েছি, আপনি এটি সম্পর্কে কী করতে যাচ্ছেন? ব্যবহারকারীদের আপত্তিজনক বলে পরিচয় দেওয়া থেকে আপনি বাধা দিতে পারবেন না।
ডেডএমজি

3
@ ডেড এমএমজি আপনি কয়েকটি সাধারণ-আপত্তিকর ঘটনা রোধ করে পরিস্থিতিটি সহায়তা করতে পারেন । আমি ভেবেছিলাম আসল প্রশ্নটি বেশ পরিষ্কার করে দিয়েছে।
নিকোল

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

2

আপনি নিযুক্ত করতে পারেন এমন দুটি কৌশল রয়েছে:

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

  2. সম্পূর্ণ এলোমেলো আইডি তৈরির পরে, নতুন আইডিতে কোনও আপত্তিকর সাবস্ট্রিং অন্তর্ভুক্ত না হয়েছে তা নিশ্চিত করে দেখুন।


1

অনেক পরিস্থিতিতে (ইমেল স্প্যাম, আইপি ব্লকিং, ইত্যাদি), একটি ব্ল্যাকলিস্ট হ'ল একটি হারানো খেলা - আপনি কখনই ঘটতে পারে এমন প্রতিটি সম্ভাব্য খারাপ জিনিসের "সম্পূর্ণ" ব্ল্যাকলিস্ট তৈরি করতে সক্ষম হবেন না। ডি

অনেক লোক গ্রহণযোগ্য শব্দের একটি শ্বেতলিস্ট ব্যবহার করে কিছু এলোমেলো ক্রমে এগুলি একত্রিত করে। (সম্ভবত প্রতিটি শব্দের মধ্যে ড্যাশ বা বিন্দু বা স্থান সহ)।

কিছু জনপ্রিয় অভিধান যা স্বেচ্ছাসেবী সংখ্যাগুলিকে শব্দের উচ্চারণযোগ্য সিরিজে রূপান্তর করতে ব্যবহৃত হয় সেগুলির মধ্যে রয়েছে:


0

হয় আপনি এটিকে এলোমেলোভাবে উত্পাদিত সংখ্যাগুলি তৈরি করতে পারেন, বা আপত্তিকর নাম্বারগুলি বাতিল করতে একটি রেইজেক্স রাখতে পারেন:

/ass/ =~ userid
/boobs/ =~ userid
/morenaughtywordshere/ =~ userid

2
মজার বিষয়, কারণ আমি তাদের কোনওটিকেই আপত্তিকর বলে মনে করি না।
ডেডএমজি

আমি জানি ... এটি কোনও এসই সাইটে সত্যিকারের অভিশাপের শব্দগুলি পোস্ট করার জন্য কেবল একটি স্পর্শকাতর বিষয়: meta.stackexchange.com/questions/22232/…
বিলজক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.