এইচটিএমএল বৈশিষ্ট্যগুলির মধ্যে আমি কীভাবে উদ্ধৃতিগুলি সঠিকভাবে এড়াতে পারি?


267

আমার কাছে একটি ওয়েবপৃষ্ঠায় একটি ড্রপ ডাউন রয়েছে যা ভঙ্গ করে যখন মান স্ট্রিংয়ে একটি উদ্ধৃতি থাকে।

মানটি "asdতবে ডিওমে এটি সর্বদা খালি স্ট্রিং হিসাবে উপস্থিত হয়।

আমি স্ট্রিংটি যথাযথভাবে এড়িয়ে চলার জন্য সর্বদা চেষ্টা করেছি তবে কোন ফলসই হয়নি।

<option value=""asd">test</option>
<option value="\"asd">test</option>
<option value="&quot;asd">test</option>
<option value="&#34;asd">test</option>

পোস্টব্যাক বার্তায় সঠিক মান রয়েছে তাই আমি কীভাবে এই পৃষ্ঠায় রেন্ডার করব?


আপনি কীভাবে পৃষ্ঠাটি তৈরি করছেন?
স্লাকস

1
আপনি যদি একক উদ্ধৃতি ব্যবহার করেন? <অপশন ভ্যালু = '"এস্যাসেড'> পরীক্ষা </
translation

5
এই উত্তরগুলির মধ্যে আমার
কোনওটি

4
@ রেকনবোট এটি কীভাবে এইচটিএমএল তৈরি হচ্ছে তার উপর নির্ভর করবে। প্রশ্নটি উদ্ধৃতি সংক্রান্ত ছিল, সুতরাং প্রযুক্তিগতভাবে গৃহীত উত্তরগুলি জিজ্ঞাসিত প্রশ্নের উত্তর দেয়। স্ট্রিংগুলি কীভাবে যথাযথভাবে পালানো যায় সে বিষয়ে, সাধারণ ক্ষেত্রে আমার কাছে কোনও লিঙ্ক কার্যকর নেই তবে আপনি পিএইচপি ব্যবহার করতে চাইবেন htmlentities
ম্যাট ব্রাউন

উত্তর:


343

&quot; সঠিক উপায়, আপনার পরীক্ষার তৃতীয়:

<option value="&quot;asd">test</option>

আপনি এটি নীচে বা জেএসফিডেলে কাজ করে দেখতে পারেন ।

alert($("option")[0].value);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
  <option value="&quot;asd">Test</option>
</select>

বিকল্পভাবে, আপনি একক উদ্ধৃতি দিয়ে বিশিষ্ট মানটি সীমিত করতে পারেন:

<option value='"asd'>test</option>

17
ওপির চতুর্থ বিকল্প, & # 34;, উদ্ধৃতি থেকে বাঁচার জন্য একটি বৈধ উপায়। নামযুক্ত সংস্থাগুলির উপরে সংখ্যাযুক্ত এইচটিএমএল সত্তাগুলি ব্যবহার করার সুবিধা রয়েছে, সেই নামযুক্ত সত্তাগুলিতে সমস্ত অক্ষর আবরণ করা হয় না, তবে সংখ্যার সত্তাও তা করে। সম্পূর্ণ এইচটিএমএল 4 তালিকাটি w3.org/TR/html4/sgML/entities.htmlরয়েছে
atk

38
@ এটাক: হ্যাঁ, &quot;একই চরিত্রের মানচিত্র &#34;, তবে এখানে সংখ্যাসূচক বিকল্পটি ব্যবহার করার কোনও সুবিধা নেই কারণ &quot;এটি একটি নির্ধারিত নামযুক্ত সত্তা। &quot;মনে রাখা সহজ।
অ্যান্ডি ই

6
আমি রাজী. এই বিশেষ ক্ষেত্রে, & quot; ব্যবহার করা আরও সহজ। আমি কেবলমাত্র সাধারণ কেসটি দেখানোর ইচ্ছা করেছিলাম।
atk

4
@ সিডু: এটিকে পরিবর্তন করুন &amp;quot;a(এর &সাথে প্রতিস্থাপন করুন &amp;)
অ্যান্ডি ই

4
inite

16

আপনি যদি পিএইচপি ব্যবহার করছেন তবে কল করার চেষ্টা করুন htmlentitiesবা htmlspecialcharsফাংশন করুন।


2
কেবল তাদের ব্যবহার যথেষ্ট নাও হতে পারে, চেষ্টা করুন <option value='<?php echo htmlentities("' onmouseover='alert(123);' foo='"); ?>' />- আপনি এটি ENT_QUOTES দিয়ে ব্যবহার করেছেন তা নিশ্চিত করুন : এটি নিরাপদ: <option value='<?php echo htmlentities("' onmouseover='alert(123);' foo='", ENT_QUOTES); ?>' /> তবে ENT_QUOTES ছাড়াও আপনারও ENT_SUBSTITUTE এবং ENT_DISALLOWED যুক্ত করা উচিত, ব্যক্তিগতভাবে আমি কয়েক বছর ধরে এই মোড়কটি ব্যবহার করেছি:function hhb_tohtml(string $str):string { return htmlentities($str, ENT_QUOTES | ENT_HTML401 | ENT_SUBSTITUTE | ENT_DISALLOWED, 'UTF-8', true); }
হানশেনরিক

12

প্রতি এইচটিএমএল সিনট্যাক্স , এবং এমনকি HTML5 এর নিম্নলিখিত সকল বৈধ বিকল্পগুলি হল:

<option value="&quot;asd">test</option>
<option value="&#34;asd">test</option>
<option value='"asd'>test</option>
<option value='&quot;asd'>test</option>
<option value='&#34;asd'>test</option>
<option value=&quot;asd>test</option>
<option value=&#34;asd>test</option>

মনে রাখবেন যে আপনি যদি এক্সএমএল সিনট্যাক্স ব্যবহার করেন তবে উদ্ধৃতিগুলি (একক বা ডাবল) প্রয়োজন।

এখানে উপরের সমস্ত কাজ দেখানো একটি জিসফিল রয়েছে


7

আর একটি বিকল্প হ'ল ডাবল কোটগুলির পরিবর্তে একক উক্তিগুলি যদি আপনি যা কিছু মনে করেন না কেন। তবে আমি এটির উল্লেখ করি না:

<option value='"asd'>test</option>

আমি এই একটি উল্লেখ:

<option value="'asd">test</option>

আমার ক্ষেত্রে আমি এই সমাধানটি ব্যবহার করেছি।



@ রেপ্টর আমি বলেছিলাম যে মানটিতে যদি ডাবল কোট থাকে তবে সেগুলিকে একক উদ্ধৃতিতে রূপান্তর করুন। মানটিতে যদি একক উদ্ধৃতি থাকে তবে কোনও সমস্যা হবে না।
সিএসনিউরিলমজ

1

আপনি যদি জাভাস্ক্রিপ্ট এবং লোড্যাশ ব্যবহার করছেন তবে আপনি _.escape () ব্যবহার করতে পারেন, যা ", ', <,> এবং & এ পালাতে পারে।

এখানে দেখুন: https://lodash.com/docs/#escape


0

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

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

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

সেখানকার সমস্ত বিষয়ে আরও বিশদ এখানে: https://www.owasp.org/index.php/ সংক্ষেপে_এক্সএস_প্রকাশ_চিট_পত্রক


3
আমি জানি যে এটি দেরি হয়ে গেছে, তবে এই বৈশিষ্ট্যগুলির প্রায় সবগুলিই HTML4.01 এ অবমূল্যায়ন করা হয়েছে এবং 5-এ সরিয়ে দেওয়া হয়েছে, এটি এখন যেভাবেই হোক না কেন, নিজেকে রক্ষার জন্য আরও ভাল উপায় রয়েছে, কেবল এটি দেখানো।
ট্রাইসিস

1
প্রশ্নটি কোট অক্ষরের সাথে ডেটা সম্পর্কে জিজ্ঞাসা করছে, অবিশ্বস্ত ডেটা সম্পর্কে নয়।
কোয়ান্টিন

-3

কোনও ইনপুট পাঠ্যের মান হিসাবে উদ্ধৃতিগুলি পালানোর কোনও উপায় নেই ... তবে আপনি জাভাস্ক্রিপ্ট (বা jquery) ব্যবহার করতে পারেন:

<input type="input" name="myinput" id="myinput" value="" />
<script>document.getElementById("myinput").value="This input has a [\"]";</script>

1
আপনার বক্তব্য "কোনও ইনপুট পাঠ্যের মান হিসাবে উদ্ধৃতিগুলি এড়ানোর কোনও উপায় নেই" সরল ভুল। ২০১০ সাল থেকে গৃহীত উত্তর দেখুন যা ২ 276 টি ভোট পেয়েছে।
কোয়ান্টিন

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

ডাবল উদ্ধৃতি দিয়ে ডিলিট করা মানটিতে একটি ডাবল উদ্ধৃতি সন্নিবেশ করার উপায়টি আপনি ঠিক যেমন বলেছেন ঠিক তেমনই HTML এনকোডিং ব্যবহার করা
কোয়ান্টিন

(হ্যালো কোয়ান্টিন ... আমরা অনলাইনে আছি) আমি কেবলই বলছি যে স্ট্রিংয়ের মান একটি ডাবল উদ্ধৃতি নয়, এটি একটি & quot; এটি একই নয়।
মিগুয়েল

2
যদি আপনি একটি & quot ;োকান; একটি মান হিসাবে এবং আপনি এটি প্রেরণ করেন, সার্ভারে আপনি & টি থেকে; টিতে 6 টি অক্ষর সংগ্রহ করেন। আপনি একটি ডাবল উদ্ধৃতি পাবেন না। এটি একই নয় এবং এটি আমার পক্ষে কাজ করে না
মিগুয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.