এইচটিএমএল জন্য টেক্সট এড়ানো


136

সি # তে এইচটিএমএল ব্যবহারের জন্য পাঠ্যটি কীভাবে আমি পালাতে পারি? আমি করতে চাই

sample="<span>blah<span>"

ধগফদ

<span>blah<span>

কেবল এইচটিএমএল এর ট্যাগ অংশের সাথে ব্লাহের পরিবর্তে সরল পাঠ্য হিসাবে দেখান :( সিএস এএসপি নয়

c#  html  escaping 

উত্তর:


185
using System.Web;

var encoded = HttpUtility.HtmlEncode(unencoded);

3
: আপনি অ-ইউনিকোড থেকে সঙ্কেতাক্ষরে লিখা ইউনিকোড অক্ষর করতে চান তাহলে, এই চেক আউট stackoverflow.com/questions/82008/...
Gyuri

4
এমন কিছু যা আপনি খারাপ উপায়টি খুঁজে পেতে চান না: উপরোক্ত পদ্ধতিটি নিজে থেকে নিয়ন্ত্রণের অক্ষরগুলি থেকে রেহাই পায় না। গৃহীত উত্তরটি এখানে দেখুন: stackoverflow.com/a/4501246/1543677 এবং উভয়ই ব্যবহার করুন।
pkExec

এইচটিটিপি ইউটিলিটির আর অস্তিত্ব নেই (স্টোর অ্যাপ্লিকেশনগুলি জিতে নিন)
টার্মিয়াম

82

এছাড়াও, আপনি যদি সমাবেশটি ব্যবহার করতে না চান তবে আপনি এটি ব্যবহার করতে পারেন System.Web:

var encoded = System.Security.SecurityElement.Escape(unencoded)

প্রতি এই নিবন্ধটি , মধ্যে পার্থক্য System.Security.SecurityElement.Escape()এবং System.Web.HttpUtility.HtmlEncode()যে সাবেক এছাড়াও ঊর্ধকমা এনকোড হয় (')অক্ষর।


7
এক্সএমএল এরSecurityElement.Escape() জন্য পালানো বলা ঠিক নয় যা এইচটিএমএল নয়।
ভিক্টর সার্জিইঙ্কো

উইন্ডোজ স্টোর অ্যাপ্লিকেশনগুলিতে
সিস্টেম.সিকিউরিটি.সিকিউরিটি এলিমেন্টের

47

আপনি বা উপরে .NET 4 ব্যবহার করছেন এবং আপনি রেফারেন্স করতে না চান তাহলে System.Web, আপনি ব্যবহার করতে পারেন WebUtility.HtmlEncodeথেকেSystem

var encoded = WebUtility.HtmlEncode(unencoded);

এটির মতো একই প্রভাব রয়েছে HttpUtility.HtmlEncodeএবং এটি পছন্দ করা উচিত System.Security.SecurityElement.Escape


এটিকে সিকিউরিটিএলমেন্টের চেয়ে কেন পছন্দ করা উচিত? পরবর্তীকালে কি দুর্বলতা রয়েছে, না প্রাক্তনটি আরও বেশি সক্ষম?
ট্র্যাভিস

7
@ ট্র্যাভিস উভয় ক্ষেত্রেই কোনও দুর্বলতা নেই, এটি কেবল SecurityElement.Escapeএক্সএমএলে HtmlEncodeপরিচালিত হয় এবং এইচটিএমএল-এ পরিচালনা করে, এবং এক্সএমএল এবং এইচটিএমএল এনকোডিংয়ের কিছুটা আলাদা প্রয়োজনীয়তা রয়েছে ( বিশদটির জন্য এই উত্তরটি দেখুন)। সুতরাং, উদাহরণস্বরূপ, SecurityElement.Escapeব্যবহার করার অনুমতি দেওয়া হয়েছে &apos;, যদিও HtmlEncodeনেই।
অ্যালেক্স

1
@ ট্র্যাভিস আমি মনে করি এর থেকেও আরও ভাল "অজুহাত" হ'ল পোর্টেবল ক্লাস লাইব্রেরিগুলিতে সিস্টেম.নেট পাওয়া যায় এবং অন্য দুটি বিকল্প আজকের সকালে বলে মনে হয় / হয় না। ; ^)
ruffin

19

কেউ এএসপি.নেট ৪.০ তে এখনও উল্লেখ করেনি, এটি করার জন্য নতুন সিনট্যাক্স রয়েছে। পরিবর্তে

<%= HttpUtility.HtmlEncode(unencoded) %>

আপনি সহজভাবে করতে পারেন

<%: unencoded %>

এখানে পড়ুন: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and- ASP-নেট-MVC-2.aspx


1
রেজারের জন্য একটি সিনট্যাক্স দিন? @ নাচট

6

.NET 4.0 এবং উপরে:

using System.Web.Security.AntiXss;
//...
var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true);

5

আপনি প্রকৃত এইচটিএমএল ট্যাগ <xmp>এবং ব্যবহার করতে পারেন</xmp> আউটপুট স্ট্রিং হিসেবে xmp ট্যাগ মধ্যবর্তী ট্যাগের সব প্রদর্শন করা হয়।

অথবা আপনি সার্ভার Server.UrlEncodeবা ব্যবহার করতে পারেন HttpUtility.HtmlEncode


আমি প্রশ্নটি আরও পরিষ্কার করে দিয়েছি। আমি চাই না যে ট্যাগগুলি এইচটিএমএল এর অংশ হয়ে উঠুক কারণ ব্যবহারকারীরা </ translation> এবং এটি ভাঙ্গতে পারে।

গ্রেট পোস্ট ধন্যবাদ ম্যান এই ঠিক ঠিক আমি খুঁজছিলাম কি ঠিক!
Spets

1
<xmp>অনেক আগে অবচিত হয়েছে: stackoverflow.com/questions/8307846/... ব্যবহার <pre>পরিবর্তে
mortb

1

এটি এখানে দেখেনি

System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")

এই জাতীয় এইচটিএমএল নিয়ে কাজ করার সময় এটিই একমাত্র কাজ করেছিল (এসপি 4.0+)। &apos;যেমন অনুষ্ঠিত পরার 'HTML এ (htmldecode ব্যবহার করে), ব্যর্থ এটা যার ফলে:

<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It&apos;s Allstars'); return false;">It's Allstars</a>

1

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

private string RemoveJunkChars(string input)
{
    return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}

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

0

ভবিষ্যতে যারা রেজার পৃষ্ঠাগুলিতে এটি করার সহজ উপায় সন্ধান করছেন তাদের জন্য নিম্নলিখিতটি ব্যবহার করুন:

.Cshtml এ:

@Html.Raw(Html.Encode("<span>blah<span>"))

.Cshtml.cs এ:

string rawHtml = Html.Raw(Html.Encode("<span>blah<span>"));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.