উত্তর:
আমার কাছে মন্তব্য করার অধিকার নেই বা আমি এটি পূর্ববর্তী উত্তরের মন্তব্য হিসাবে রেখে দিয়েছি।
না, আমি পুনরাবৃত্তি করি, এইচটিএমএল ব্যবহার করে কোনও প্রেরণাদির হাত থেকে বাঁচবেন না
'
এটি কোনও বৈধ এইচটিএমএল অক্ষর সত্তার উল্লেখ নয়। এটি একটি এক্সএমএল অক্ষর সত্তার রেফারেন্স। যদিও ফায়ারফক্স এবং ক্রোম অন্ততপক্ষে উপরেরটি এইচটিএমএল নথিতে অ্যাডাস্ট্রোফ হিসাবে উপস্থাপন করবে, ইন্টারনেট এক্সপ্লোরার তা করবে না। এবং এটি মানদণ্ড অনুসরণ করে যখন এটি করতে অস্বীকার করে।
আপনি এইচটিএমএল ব্যবহার করে কোনও অ্যাডোস্ট্রোফ থেকে বাঁচতে পারেন
'
তবে আমি বিশ্বাস করি না যে এটি সাধারণভাবে প্রয়োজনীয়।
http://fishbowl.pastiche.org/2003/07/01/the_curse_of_apos/
http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
আমি নেটের সাথে একমত নই। আপনার আদর্শভাবে যতটা সম্ভব পলাতক ব্যবহার করা উচিত এবং স্থানীয়ভাবে অক্ষর প্রকাশ করতে ইউটিএফ -8 ব্যবহার করা উচিত। এটি করার জন্য আপনার এমন একটি সম্পাদক দরকার যা ইউটিএফ -8 হ্যান্ডেল করতে পারে পাশাপাশি একটি সঠিক চরসেট ঘোষণাপত্র যেমন:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
তবে, আপনার (এক্স) এইচটিএমএল-এর একটি বিশেষ অর্থ রয়েছে এমন অক্ষরগুলি থেকে বাঁচার অভ্যাস করা উচিত:
< <
> >
" "
& &
' '
এটি নিশ্চিত করবে যে আপনি যখন এই চরিত্রগুলি লিখতে চান তখন আপনি ঘটনাক্রমে মার্কআপ লিখছেন না। এটি সুরক্ষা বজায় রাখতে ব্যবহারকারী ইনপুটটির জন্য বিশেষত গুরুত্বপূর্ণ। এটি কম সুস্পষ্ট, তবে পালানো আসলে গুরুত্বপূর্ণ "
। যদি কোনও স্ট্রিংটি এইচটিএমএল বৈশিষ্ট্য ( title="something"
ইত্যাদি) এর মধ্যে শেষ হয় তবে ব্যবহারকারী বৈশিষ্ট্যটি শেষ করতে এবং তাদের নিজস্ব মার্কআপ সন্নিবেশ করতে পারে। ভাবুন যদি ব্যবহারকারী প্রবেশ করে " onclick="alert('hello');
এবং আপনি এটি প্রবেশ করান তবে কী ঘটেtitle="..."
আপনি যদি পিএইচপি ব্যবহার করছেন তবে আপনি এটি করতে htmlspecialchars
ফাংশনটি ব্যবহার করতে পারেন । অন্যান্য ভাষায় অন্যান্য অনুরূপ ফাংশন থাকতে পারে।
আপডেট: আমি apos ইস্যুতে সংশোধন দাঁড়িয়ে। ধাক্কা খায় পেস্কি আই।
'
না '
। যদি যাই হোক না কেন কারণ হিসাবে আপনি যদি এইচটিএমএল বৈশিষ্ট্যের জন্য একক উদ্ধৃতি ব্যবহার করেন তবে title='something'
অবশ্যই আপনাকে অবশ্যই গুনের মধ্যে থাকা যে কোনও একক উক্তিটি এড়িয়ে যেতে হবে।
এটি আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে, তবে '
সাধারণত আমাদের সাধারণত প্রাকৃতিক ভাষায় ব্যবহার থেকে নিরুৎসাহিত করা উচিত , সুতরাং আপনার এক্সএমএলে কম্পিউটার কোড না থাকলে বিষয়টি উত্থাপিত হবে না।
যেখানে আমাদের স্ট্রিং অনুবাদ হয়েছে, আমরা দেখতে পেয়েছি যে কিছু অনুবাদক সমাপ্ত উদ্ধৃতিগুলি ইউনিকোড কোঁকড়ানো উদ্ধৃতিগুলির সাথে প্রতিস্থাপন করেন, তবে খোলার উদ্ধৃতি হিসাবে সোজা উদ্ধৃতিগুলি ছেড়ে যান, এগুলি দৃশ্যত ভারসাম্যহীন এবং অকার্যকর দেখায়।
ইউনিকোড অক্ষর ‘
এবং যথাসম্ভব ’
প্রতিস্থাপন করা উচিত '
, যতটা সম্ভব “
এবং ”
প্রতিস্থাপন করা উচিত "
। এটি দরকারী কারণ কম্পিউটারগুলি কোঁকড়ানো বিরামচিহ্নগুলি বিশেষ হিসাবে স্বীকৃতি দেয় না। (যদিও স্ট্যাক ওভারফ্লো / ক্রোম ' don’t
' কে একটি বানানের ত্রুটি হিসাবে বিবেচনা করে তা দেখে আমি আনন্দিত, যদিও এটি ' don't
' দিয়ে খুশি ))
এটি সাহায্য করে না যে কীবোর্ডে আমাদের খুব আকর্ষণীয় '
এবং "
অক্ষর রয়েছে।
সুতরাং আসুন দেখুন স্ট্যাকএক্সচেঞ্জ নিজেই কোনও এইচটিএমএল সত্তা ব্যবহার করে কোনও অ্যাডাস্ট্রোফকে এনকোড করে।
এই পৃষ্ঠার উত্স কোড থেকে কিছু উদাহরণ দেওয়া হল।
(1) প্রশ্নের শিরোনাম: এনকোডেড।
Should I escape the Apostrophe ( ' ) character with its HTML entity (&#39;)?
(২) ড্র এর উত্তর: এনকোড করা হয়নি।
But I don't believe it is, in general, necessary.
(3) নাইট্রো 2k01 এর উত্তরে টমের মন্তব্য: এনকোডযুক্ত।
I've got two contradicting answers now. One recommends escaping ' and the other does not. What should I believe?
সুতরাং এটি উভয় পথ যায়।
তবে এই পৃষ্ঠার উত্স কোডটি কখনও ব্যবহার করে না '
। সমস্ত এনকোডিংগুলি ফর্মের '
। এটি নাইট্রো 2k01 এর সাথে সামঞ্জস্যপূর্ণ এবং ব্যবহার না করার পরামর্শ নিয়েছে '
।
আপনার উত্তর প্রসঙ্গে নির্ভর করে:
আপনি যদি এই ডেটা সহ HTML এ অনুচ্ছেদে লিখছেন তবে এটি <,> এবং &: পালাতে যথেষ্ট might
<p>{string}</p>
আপনি যদি কোনও এইচটিএমএল বৈশিষ্ট্যে লিখছেন তবে, পছন্দ করুন
<a href='/some/path/{string}'>...</a>
তারপরে আপনার পুরোপুরি প্রেরণা থেকে রক্ষা পাওয়া উচিত। কোনও আক্রমণকারী যদি এটিকে রাখেন তবে এটি আক্রমণকারী ভেক্টর হতে পারে string
:
string = "' onmouseover='alert(\"nasty script here!\")' data-ignore='"
একই জিনিস ডাবল উদ্ধৃতি জন্য যায়। আমি এমনকি পড়েছি যে ব্যাকটিক `ঝুঁকিপূর্ণ, যেহেতু এটি HTML বৈশিষ্ট্যের জন্যও ব্যবহার করা যেতে পারে। আপনার মোতায়েনের রুটিনগুলির অংশ হিসাবে যদি আপনার কোনও স্বয়ংক্রিয় এইচটিএমএল সিনট্যাক্স চেকিং স্ক্রিপ্ট না থাকে তবে ধরে নিন যে এই তিনটির যে কোনওটি ব্যবহার করা যেতে পারে এবং এইচটিএমএল বৈশিষ্ট্যের জন্য অবশ্যই তাকে এড়িয়ে যেতে হবে।
চূড়ান্তভাবে, এমনকি অব্যক্ত বৈশিষ্ট্যগুলিও বৈধ, সুতরাং স্পেস অক্ষরটিরও পালানোর প্রয়োজন হবে। আর !
, @
, $
, %
, (
, )
, =
, +
, {
, }
, [
, এবং ]
, সব যা একটি বৈশিষ্ট্য আউট বিরতি এবং একটি নতুন ঢোকাতে অনুমতি দিতে পারেন।
জাভাস্ক্রিপ্টে এস্কেপিংয়ের জন্য, আমি জিকুয়েরি ব্যবহার করি $(element).text(string)
বা আমার $(element).attr(attrname, string)
কাছে এস্কেপিংয়ের কাজ করি । $(element).html(unsafe)
আপনার এইচটিএমএল এড়াতে পারবেন না, সঙ্গে খুব সাবধান !
সার্ভার-সাইড কোডে, আমাকে প্রতিটি কেসের ঝুঁকিটি যত্ন সহকারে মূল্যায়ন করতে হবে এবং ডকুমেন্টেশন সাবধানে পড়তে হবে। এটি আপনি যে বিশেষ ভাষা এবং লাইব্রেরি ব্যবহার করছেন তার উপর নির্ভর করবে যেমন রেলস, জ্যাঙ্গো, কাঁচা পিএইচপি, দ্রুপাল ইত্যাদি using
যদি আপনি সমস্যাটি যত তাড়াতাড়ি সম্ভব বন্ধ করার কথা ভাবছেন, এটি এমনকি আপনার ডাটাবেসে প্রবেশের আগে, আপনার ঘোড়াগুলি ধরে রাখুন। এইচটিএমএল-আপনার ডিবিতে সঞ্চিত পাঠ্যটি আপনাকে একটি নরকীয় যাত্রায় নিয়ে যেতে পারে। আপনি যদি পরে নির্দিষ্ট কিছু HTML ট্যাগগুলিকে অনুমতি দিতে চান তবে অন্যরা যেমন তির্যক, সাহসী, রঙ এবং টেবিলগুলি চান না? কি হবে যদি আপনি আপনার প্রথম পাস কিছু মিস, কিন্তু আপনার escaper ইতিমধ্যে পলান &
যেমন &
এবং "
হিসাবে "
? এটি কি এগুলিকে পরিণত করবে &amp;
এবং &quot;
?
আমার পদ্ধতিটি কেবল ডাটাবেসের জন্য এসকিউএল পলায়নের কাজটি করা, তবে পরবর্তী প্রসেসিংয়ের জন্য সমস্ত এইচটিএমএল বিশেষ অক্ষর রেখে দিন। এইভাবে, আমি ডিবাগ করতে পারি এবং আমার এইচটিএমএল সহজেই পালিয়ে যায় fine মনে মনে, এর অর্থ হল যে আমি আমার নিজের এসকিউএল টেবিলগুলিতে যদি ব্যবহারকারী দ্বারা সরবরাহ করা স্ট্রিংগুলি বিশ্বাস করতে পারি না।
কখনও ব্যবহারকারী-নিয়ন্ত্রিত ইনপুট বিশ্বাস করবেন না এবং সর্বদা আপনার এইচটিএমএল বৈশিষ্ট্যগুলি উদ্ধৃত করুন!
এর উপর ভিত্তি করে: &, <,> এবং " রায়ান গ্রোভের " চেয়ে এইচটিএমএল পালানোর আরও অনেক কিছুই রয়েছে
যদি আপনার এস্টোস্ট্রোফ বিষয়বস্তুর অন্তর্ভুক্ত থাকে তবে এড়িয়ে চলুন। কোডের সাথে বিভ্রান্ত হতে পারে এমন অন্য কোনও সামগ্রীর অক্ষরগুলি এড়িয়ে চলুন।
আসল সত্তা ব্যবহার না করে কাজটি করার সহজতম উপায় হ'ল পিএইচপি htmlentities()
বা htmlspecialchars()
ফাংশন ব্যবহার করা :
$val = htmlspecialchars("Don't", ENT_QUOTES, 'UTF-8');
if($_POST){
$val = htmlspecialchars(trim($_POST['val']), ENT_QUOTES, 'UTF-8');
}
echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en' class='njs'>
<head>
<meta http-equiv='Content-type' content='text/html;charset=utf-8' />
<title>Special Characters</title>
<style type='text/css'>
@import 'special.css';
</style>
</head>
<body>
<form method='post' action='' id='fm' name='fm'>
<input type='text' value='$val' name='val' id='val' />
<input type='submit' value='submit' name='sub' id='sub' />
</form>
</body>
<script type='text/javascript' src='special.js'></script>
</html>";
&apos
এখন HTML5 এর বৈধ valid এটি যদি বলা হয় যে যদি আপনাকে লিগ্যাসি ব্রাউজারগুলি সমর্থন করতে হয় বা আউটলুকের জন্য এইচটিএমএল ইমেল লিখতে হয়'
তবে আপনি যদি চরিত্রটি থেকে বাঁচার জন্য প্রয়োজনীয় মনে করেন তবে আপনি সবচেয়ে বেশি আঁকছেন।