এইচটিএমএল এ কোন অক্ষরগুলি পালাতে হবে?


251

এগুলি কি এক্সএমএল, সম্ভবত একাধিক স্থান (  )?

আমি এইচটিএমএল এস্কেপ অক্ষরগুলির একটি বিশাল তালিকা পেয়েছি তবে আমার মনে হয় না সেগুলি অবশ্যই পালাতে হবে। আমি যা জানতে চাই দরকার পলান করা হবে।

উত্তর:


318

আপনি যদি নথিতে এমন কোনও স্থানে পাঠ্য সামগ্রী অন্তর্ভুক্ত করছেন যেখানে পাঠ্য সামগ্রী 1 টি প্রত্যাশিত , আপনি সাধারণত XML তে একই অক্ষরগুলি থেকে পালাতে পারবেন । কোনও উপাদানটির অভ্যন্তরে, এটিতে সত্ত্বা থেকে রক্ষা পাওয়া এম্পারস্যান্ড &এবং এলিমিটটি কম-বেশি এবং এর চেয়ে বড় চিহ্নগুলি অন্তর্ভুক্ত করা হয় < >:

& becomes &amp;
< becomes &lt;
> becomes &gt;

অ্যাট্রিবিউট মানগুলির অভ্যন্তরে আপনাকে অবশ্যই উদ্ধৃতি চরিত্রটি ব্যবহার করতে হবে যা আপনি ব্যবহার করছেন:

" becomes &quot;
' becomes &#39;

কিছু ক্ষেত্রে এই চরিত্রগুলির মধ্যে কয়েকটি এড়িয়ে চলা নিরাপদ হতে পারে তবে ভুল হওয়ার সম্ভাবনা কমাতে আমি আপনাকে সমস্ত ক্ষেত্রে পাঁচটি করে পালাতে উত্সাহিত করি।

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

সাধারণভাবে, আপনার যেমন ফাঁকা জায়গা থেকে বাঁচা উচিত নয় &nbsp;&nbsp;এটি কোনও সাধারণ স্থান নয়, এটি একটি অবিচ্ছেদ্য স্থান । আপনি দুটি শব্দের মধ্যে একটি লাইন বিরতি sertedোকানো থেকে রক্ষা করতে বা স্বয়ংক্রিয়ভাবে ভেঙে ফেলা ছাড়া অতিরিক্ত স্থান সন্নিবেশ করানোর জন্য সাধারণ স্পেসগুলির পরিবর্তে এগুলি ব্যবহার করতে পারেন, তবে এটি সাধারণত বিরল ঘটনা। আপনার যদি কোনও ডিজাইনের সীমাবদ্ধতা না থাকে তবে এটি করবেন না।


1 "এমন কোনও অবস্থানের দ্বারা যেখানে পাঠ্য সামগ্রীর প্রত্যাশা রয়েছে", আমার অর্থ একটি উপাদান বা কোটড অ্যাট্রিবিউট মানের ভিতরে যেখানে সাধারণ পার্সিং বিধি প্রয়োগ হয়। যেমন: <p>HERE</p>বা <p title="HERE">...</p>। আমি উপরে যা লিখেছি তা সেই বিষয়বস্তুর ক্ষেত্রে প্রযোজ্য হবে না যার বিশেষ পার্সিং বিধি বা অর্থ রয়েছে, যেমন কোনও স্ক্রিপ্ট বা স্টাইল ট্যাগের অভ্যন্তরে বা কোনও উপাদান বা বৈশিষ্ট্যের নাম হিসাবে। উদাহরণস্বরূপ: <NOT-HERE>...</NOT-HERE>, <script>NOT-HERE</script>, <style>NOT-HERE</script>, অথবা <p NOT-HERE="...">...</p>

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

যদি আপনার অবশ্যই প্রয়োজন হয় তবে আপনার মনে রাখা উচিত যে কয়েকটি উদ্বেগের প্রয়োজন তা বোঝার জন্য ওপেন ওয়েব অ্যাপ্লিকেশন সুরক্ষা প্রকল্পের এক্সএসএস প্রতিরোধ বিধিগুলি পড়ুন


2
কিছু HTML বৈশিষ্ট্যের মানগুলিরও বিশেষ অর্থ হতে পারে (জেএস / সিএসএস)। সুতরাং এটি এগুলির ক্ষেত্রেও প্রযোজ্য নয়, উদাহরণস্বরূপ: <p onclick="NOT-HERE">...</p>এবং <p style="NOT-HERE">...</p>
geekley

21

এটি প্রসঙ্গে নির্ভর করে। এইচটিএমএলে কিছু সম্ভাব্য প্রসঙ্গ:

  • নথি বডি
  • সাধারণ বৈশিষ্ট্য ভিতরে
  • স্ক্রিপ্ট ট্যাগ ভিতরে
  • স্টাইল ট্যাগ ভিতরে
  • আরও কয়েক!

OWASP এর ক্রস সাইট স্ক্রিপ্টিং প্রতিরোধের চিট শীট , বিশেষত " কেন আমি ঠিক এইচটিএমএল সত্তা এনকোড অবিশ্বস্ত ডেটা করতে পারি না? " এবং " এক্সএসএস প্রতিরোধ বিধি " বিভাগগুলি দেখুন। তবে পুরো ডকুমেন্টটি পড়া ভাল।


9

মূলত, এখানে তিনটি প্রধান চরিত্র রয়েছে যা আপনার HTML এবং এক্সএমএল ফাইলগুলিতে সর্বদা পালাতে হবে, তাই তারা বাকী মার্কআপগুলির সাথে ইন্টারঅ্যাক্ট করে না, যাতে আপনি সম্ভবত প্রত্যাশা করেন, তাদের মধ্যে দুটি সিনট্যাক্সের মোড়ক হবে যা < >, তারা নীচে হিসাবে তালিকাভুক্ত করা হয়েছে:

 1)  &lt; (<)
    
 2)  &gt; (>)
    
 3)  &amp; (&)

এছাড়াও আমরা ডাবল-উদ্ধৃতি (") হিসাবে" এবং একক উদ্ধৃতি (') & অপস হিসাবে ব্যবহার করতে পারি

গতিশীল বিষয়বস্তুতে <script>এবং <style>এড়াতে এড়িয়ে চলুন se এই বিধিগুলি তাদের জন্য প্রয়োগ করার জন্য নয়। উদাহরণস্বরূপ, আপনি যদি জেএসএনকে একটিতে অন্তর্ভুক্ত করতে চান তবে <\ x3c এর সাথে <<, ++++++++> JSON সিরিয়ালাইজেশনের পরে এবং U + 2029 \ u2029 এর সাথে প্রতিস্থাপন করুন)

এইচটিএমএল পালানোর অক্ষর: সম্পূর্ণ তালিকা: http://www.theukwebdesigncompany.com/articles/entity-escape-characters.php

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

ইউটিএফ -8 এ পরিবর্তন করার অর্থ আপনার ফাইলটি পুনরায় সংরক্ষণ করা:

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

অদৃশ্য বা অস্পষ্ট অক্ষর:

অদৃশ্যদের জন্য একটি বিশেষভাবে কার্যকর ভূমিকা হ'ল এমন চরিত্রগুলি উপস্থাপন করা যা উপস্থাপনে অদৃশ্য বা অস্পষ্ট।

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

অস্পষ্ট চরিত্রের উদাহরণ হ'ল ইউ + 00A0 নো-BREAK স্পেস। এই ধরণের স্থান লাইন ভাঙ্গা রোধ করে, তবে চরিত্র হিসাবে ব্যবহার করার সময় এটি অন্য কোনও জায়গার মতো দেখায়। ব্যবহারের ফলে এটি স্পষ্ট হয় যেখানে পাঠ্যের মধ্যে এই জাতীয় স্পেসগুলি উপস্থিত রয়েছে।


3

সঠিক উত্তরটি প্রসঙ্গে নির্ভর করে। সাধারণভাবে, এই অক্ষরগুলি অবশ্যই উপস্থিত থাকতে হবে না ( HTML 5.2 §3.2.4.2.5 ):

পাঠ্য নোড এবং বৈশিষ্ট্যগুলির মানগুলিতে অবশ্যই ইউনিকোডের অক্ষর থাকতে হবে, এতে ইউ +0000 অক্ষর থাকা উচিত নয়, অবশ্যই স্থায়ীভাবে অপরিজ্ঞাত ইউনিকোড অক্ষর (ননচার্যাক্টর) থাকতে হবে না এবং স্পেস অক্ষর ব্যতীত অন্য কোনও অক্ষরের অক্ষর থাকতে হবে না। এই স্পেসিফিকেশনটিতে টেক্সট নোডগুলির যথাযথ মান সম্পর্কে অতিরিক্ত বাধা রয়েছে এবং তাদের নির্দিষ্ট প্রসঙ্গের উপর নির্ভর করে বিশিষ্ট মানগুলি।

এইচটিএমএলের উপাদানগুলির জন্য, পাঠ্য সামগ্রীর মডেলের সীমাবদ্ধতাগুলি উপাদানটির ধরণের উপরও নির্ভর করে। উদাহরণস্বরূপ, টেক্সারিয়া উপাদানটির অভ্যন্তরে "<" এইচটিএমএল এড়াতে হবে না কারণ টেক্সারিয়া একটি বহনযোগ্য কাঁচা পাঠ্য উপাদান।

এই সীমাবদ্ধতা স্পেসিফিকেশন জুড়ে ছড়িয়ে ছিটিয়ে আছে। যেমন, গুণ মান ( §8.1.2.3 ) একজন থাকতে পারবে না দ্ব্যর্থক এম্পারসেন্ড এবং হয় হতে (ঝ) খালি, (২) একক উদ্ধৃতি মধ্যে (এবং এইভাবে U + এ 0027 ঊর্ধকমা চরিত্র থাকতে পারবে না '), (গ) উদ্ধৃতি চিহ্ন মধ্যে ( নিম্নলিখিত সীমাবদ্ধতার সাথে অবশ্যই ইউ + 0022 কোয়েটেশন মার্কের অক্ষর ") বা (iv) অব্যক্ত থাকতে হবে :

... অবশ্যই কোনও আক্ষরিক স্থান অক্ষর, কোনও ইউ + 0022 উক্তি চিহ্ন চিহ্ন ("), ইউ + 0027 এপোস্ট্রোফী অক্ষর ('), ইউ + 003 ডি সমান স্বাক্ষর অক্ষর (=), ইউ + 003 সি স্বাক্ষরযুক্ত অক্ষরগুলি ( <), U + 003E গ্রেট-থান স্বাক্ষর অক্ষর (>), বা U + 0060 গ্র্যাক অ্যাকসেন্ট অক্ষর (`), এবং অবশ্যই ফাঁকা স্ট্রিং হওয়া উচিত নয়।

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