একটি কোলন কি friendly: friendly বন্ধুত্বপূর্ণ-ইউআরএল ব্যবহারের জন্য নিরাপদ?


109

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

http://site/gwturl#section1/section2

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

http://site/gwturl#user:45/comments

অবশ্যই, আমরা এটি ইউআরএল-বন্ধুত্বের জন্য করছি, সুতরাং আমরা নিশ্চিত করতে চাই যে বিশেষ বর্ণগুলির মধ্যে থাকা এই অক্ষরের কোনওটিই ব্রাউজারগুলি বা অন্য কোনও সিস্টেমের দ্বারা ইউআরএল-এনকোড হবে না এবং ইউআরএলের মতো শেষ হবে না এই:

http://site/gwturl#user%3A45/comments <--- BAD

ব্রাউজারগুলি, বুকমার্কিং সিস্টেমগুলি, এমনকি জাভাস্ক্রিপ্ট বা জাভা কোডের জন্যও কোলনকে কী নিরাপদভাবে ব্যবহার করা উচিত (যার অর্থ আমি স্বয়ংক্রিয়ভাবে এনকোড হবে না)?


আপনি কেবল ক্লায়েন্ট-সাইডে ইউআরএল ব্যবহার করেন (এটি আরও স্পষ্টভাবে) নির্দিষ্ট করা ভাল ধারণা হতে পারে? যেহেতু প্রচুর উত্তর (যেমন আমার ছিল) মনে হচ্ছে আপনি HTTP ব্যবহার করে কোনও সার্ভারের URL টি প্রেরণ করতে চলেছেন।
ভিগার

স্পষ্টতা যোগ করতে সম্পাদনা করা হয়েছে যে খণ্ডটির ব্যবহার ক্লায়েন্ট-সাইডে হচ্ছে।
নিকোল

আমি কৌতূহলী: 10 মাস পরে, এই url স্কিমটি কি আপনার জন্য কাজ করেছে? আমি একই স্কিম ব্যবহার বিবেচনা করছি।
জোনাথন সুইন্নি

1
@ জোনাথন সুইন্নি, দুর্ভাগ্যক্রমে আমি এই প্রকল্পটি (এবং সংস্থা) থেকে সরে এসেছি, যদিও এখানকার উত্তরগুলি আমাকে সন্তুষ্ট করেছে যে এটি যাওয়ার উপায় go যদি আমি কোনও নতুন প্রকল্প শুরু করতে চাই, তবে আমি এই স্কিমটি ব্যবহার করব, তবে #!পৃষ্ঠাগুলি রাষ্ট্রীয় হয়েছে তা বোঝাতে আমি অবশ্যই নিশ্চিত হব - googlewebmastercentral.blogspot.com/2009/10/… দেখুন (এই প্রস্তাবটি মেনে চলা হয়েছে ভারী এজেএক্স ব্যবহারকারী যেমন ফেসবুক)
নিকোল

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

উত্তর:


84

আমি সম্প্রতি একটি ইউআরএল এনকোডার লিখেছি , তাই এটি আমার মতে বেশ তাজা।

http://site/gwturl#user:45/comments

খণ্ড অংশ ( user:45/comments) এর সমস্ত অক্ষর আরএফসি 3986 ইউআরআইয়ের জন্য পুরোপুরি আইনী ।

এবিএনএফ সম্পর্কিত অংশ :

fragment      = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded   = "%" HEXDIG HEXDIG
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
                 / "*" / "+" / "," / ";" / "="

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


সম্পাদনা করুন:

ডি আহা!

ইউআরআই স্পেক সম্পর্কে আমার বক্তব্য থাকা সত্ত্বেও, যখন তিনি উল্লেখ করেন যে এইচটিএমএল 4 স্পেসিফিক উপাদানগুলির নাম / সনাক্তকারীকে সীমাবদ্ধ করে তখন অপরিবর্তনীয় সঠিক উত্তর সরবরাহ করে

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


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

তবে :একটি জেন-ডিলিম, উপ-ডিলিম নয়।
ববিনস

1
আধা-কোলন একটি পচারের জন্য আইনী, সুতরাং এটি উপ-ডিলিমে হোক বা জেন-
ডিলিম

@ ববিন্স - এতে :রয়েছে pchar, যা রয়েছে fragment, তাই :অনুমোদিত। @Renesis - উইকিপিডিয়া ABNF উপর একটি নিবন্ধ প্রকাশিত হয় en.wikipedia.org/wiki/ABNF আপনি মূলত অনুমতি অক্ষর, যেখানে একটি তালিকা এ খুঁজছেন /উপায়ে বা । আমি কোনও জিডাব্লুটি প্রোগ্রামিং করিনি, সুতরাং এটি কীভাবে ইউআরআইয়ের খণ্ডাংশ ব্যবহার করে তা আমি জানি না।
ম্যাকডোয়েল

একটি শেষ প্রশ্ন - আপনার এই স্পেসিফিকেশন বাস্তব-বিশ্বের প্রয়োগ সম্পর্কে কোন অন্তর্দৃষ্টি আছে? এর অর্থ কি ব্রাউজারগুলি :খণ্ডে থাকা (এর এনকোডিং এড়িয়ে যাওয়া) উপেক্ষা করবে / করবে ?
নিকোল

59

ইউআরআই স্ট্যান্ডার্ড সম্পর্কে ম্যাকডোভেল বিশ্লেষণের পাশাপাশি, এটিও মনে রাখবেন যে খণ্ডটি বৈধ এইচটিএমএল অ্যাঙ্কর নাম হতে হবে। Http://www.w3.org/TR/html4/tyype.html#type-name অনুসারে

আইডি এবং NAME টোকেনগুলি অবশ্যই একটি অক্ষর ([এ-জা-জেড]) দিয়ে শুরু হওয়া উচিত এবং এর পরে সংখ্যক বর্ণ, অঙ্ক ([0-9]), হাইফেনস ("-"), আন্ডারস্কোর ("_") হতে পারে , কলোন (":") এবং পিরিয়ড ("।")।

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

তবে আপনি এটি পরীক্ষা করতে হবে। ওয়েব মান কঠোরভাবে অনুসরণ করা হয় না, কখনও কখনও মানগুলি পরস্পর বিরোধী হয়। উদাহরণস্বরূপ HTTP / 1.1 আরএফসি 2616 অনুরোধ URL এ কোয়েরি স্ট্রিংয়ের অনুমতি দেয় না, অন্যদিকে GET পদ্ধতিতে কোনও ফর্ম জমা দেওয়ার সময় এইচটিএমএল একটি তৈরি করে। বাস্তব বিশ্বে বাস্তবায়িত যে কেউ দিন শেষে জয়ী হয়।


58

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

যেমন http://en.wikedia.org/wiki/Template: ওয়েলকাম


31
সর্বাধিক প্রাসঙ্গিক উত্তর। আমরা সকলেই জানি যে চশমাগুলিতে যা আছে তা ওয়েব বিকাশে বাস্তবের সাথে খুব কম সম্পর্কযুক্ত। "বিশ্বের শীর্ষ দশে একটি ওয়েবসাইট এটি করে" এর চেয়ে আপনি "সুরক্ষা" এর চেয়ে বেশি গ্যারান্টি পেতে যাচ্ছেন না।
স্টিভেন কলিন্স

1
@ স্টিভেনকোলিনস 3 বছর আগে দেওয়া উত্তরটির চেয়ে বেশি প্রাসঙ্গিক নয় যা ঠিক একই জিনিসটি বলেছে :)
মার্টিন জেমস

7

আমি এটি বিশ্বাস করতে হবে না। এটি সম্ভবত %3Aঅনেক ব্যবহারকারী-এজেন্টদের মতো ইউআরএল এনকোড হবে ।


1
@ আরবেলস: হ্যাঁ কিছু কম কমপ্লায়েন্ট ব্যবহারকারী-এজেন্ট অ-সম্মতিযুক্ত ইউআরএল অকেজো অবস্থায় ছেড়ে দেবে।
আসফ

4

URLEncoderজাভাডোক থেকে :

এইচটিএমএল ফর্ম এনকোডিং করা সম্পর্কে আরো তথ্যের জন্য, এইচটিএমএল সঙ্গে পরামর্শ স্পেসিফিকেশন

একটি স্ট্রিং এনকোড করার সময়, নিম্নলিখিত বিধিগুলি প্রয়োগ হয়:

  • "Z" মাধ্যমে "z" মাধ্যমে "A", "Z" মাধ্যমে "A" এবং "9" এর মাধ্যমে "0" এর বর্ণমালা অক্ষরগুলি একই থাকবে।
  • "।", "-", "*" এবং "_" বিশেষ অক্ষরগুলি একই থাকে।
  • স্থান অক্ষর "" একটি প্লাস চিহ্নে রূপান্তরিত হয় "+"।
  • অন্যান্য সমস্ত অক্ষর অনিরাপদ এবং কিছু এনকোডিং স্কিম ব্যবহার করে প্রথমে এক বা একাধিক বাইটে রূপান্তরিত হয়। তারপরে প্রতিটি বাইটটি 3-অক্ষরের স্ট্রিং "% xy" দ্বারা প্রতিনিধিত্ব করা হয়, যেখানে xy বাইটের দুই-অঙ্কের হেক্সাডেসিমাল উপস্থাপনা। ব্যবহারের জন্য প্রস্তাবিত এনকোডিং স্কিমটি ইউটিএফ -8। যাইহোক, সামঞ্জস্যতার কারণে, যদি কোনও এনকোডিং নির্দিষ্ট না করা থাকে তবে প্ল্যাটফর্মের ডিফল্ট এনকোডিং ব্যবহার করা হয়।

যে, :নিরাপদ নয়।


3

আমি ফায়ারফক্স বা আইই 8 অক্ষর অন্তর্ভুক্ত উইকিপিডিয়া URL গুলির কিছু এনকোডিং দেখছি না ।



1
রেনিসিস ইউআরএল পাথের কথা নয়, ইউআরএল খণ্ডের বিষয়ে কথা বলছে।
গম্বো

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

3
Wayback মেশিন একটি আছে: তার লিংক অনেক - যেমন web.archive.org/web/20080822150704/http://stackoverflow.com
barrowc

2

কোনও প্রোটোকলের প্রমাণীকরণের প্রয়োজন হলে কলোন ব্যবহারকারীর নাম এবং পাসওয়ার্ডের মধ্যে বিভাজন হিসাবে ব্যবহৃত হয়।


0

কোলন নিরাপদ নয়। এখানে দেখো


সে পৃষ্ঠাটি কেন নিরাপদ নয় তা অনুপ্রাণিত করে না। রেফারেন্স করা আরএফসি 2396 এটিকে অন্যথায় পালানো উচিত বলে দেয় না। এছাড়াও, সরবরাহিত রূপান্তর স্ক্রিপ্ট এটিকে এনকোড করে না (ক্রোম 9 তে যাইহোক)।
অ্যাডাম লিন্ডবার্গ

আদম তুমি ভুল এটি সরাসরি কী এবং কেন বলছে।
কেটমলিন

-5

এটি কোনও নিরাপদ চরিত্র নয় এবং এটি আপনার ডোমেন নামের ঠিক পরে কী পোর্টের সাথে সংযুক্ত হবে তা আলাদা করার জন্য ব্যবহৃত হয়

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