مشفر كيانات HTML مجاني على الإنترنت
تحويل الأحرف الخاصة إلى كيانات HTML للعرض الآمن في HTML.
ما هو ترميز كيانات HTML؟
يحول ترميز كيانات HTML الأحرف الخاصة إلى كيانات HTML (تمثيلات نصية) التي يمكن للمتصفحات عرضها بأمان. هذا يمنع تفسير الأحرف ذات المعنى الخاص في HTML كرمز.
Critical Uses of HTML Entity Encoding
- Preventing XSS (Cross-Site Scripting) Attacks: This is the primary reason for HTML encoding. When displaying user input (comments, usernames, search queries, form data), you must encode it to prevent attackers from injecting malicious scripts. For example, without encoding, a username like <img src=x onerror=alert(document.cookie)> would execute JavaScript and steal cookies. With encoding, it becomes harmless text: <img src=x onerror=alert(document.cookie)>. Every web framework (Django, Rails, Laravel, ASP.NET) includes HTML encoding functions. Use them religiously.
- Displaying User-Generated Content: Any content submitted by users (blog comments, forum posts, product reviews, chat messages, profile descriptions) must be HTML-encoded before display. Attackers will absolutely try to inject malicious code through these inputs. Even seemingly safe fields like email addresses or phone numbers can contain < > characters in attacks. Encode everything from untrusted sources.
- Showing Code Examples and Snippets: When displaying HTML, XML, or code snippets on websites (tutorials, documentation, developer blogs), encode the code so browsers display it as text rather than rendering it. For example, to show <div>Hello</div> on a page, you must encode it as <div>Hello</div>. Without encoding, the browser renders an actual div element instead of showing the code.
- Encoding HTML Attribute Values: When inserting dynamic data into HTML attributes (especially href, src, onclick), encode the values to prevent attribute breaking and JavaScript injection. For example, <a href="USERDATA"> is vulnerable if USERDATA contains "> (closes the attribute) followed by malicious attributes. Encoding the quote as " prevents this attack. Always encode attribute values, even for "safe" looking data.
كيف يعمل ترميز كيانات HTML؟
يستبدل ترميز كيانات HTML الأحرف التي لها معنى خاص في HTML بمراجع كيانات مسماة أو رقمية. هذا يضمن أن تعرض المتصفحات الأحرف كنص بدلاً من تفسيرها كعلامات HTML. إليك العملية التقنية:
- الخطوة 1 - تحديد الأحرف الخاصة: الأحرف الخمسة الحاسمة هي: & (علامة العطف)، < (أصغر من)، > (أكبر من)، " (علامة اقتباس مزدوجة)، و ' (علامة اقتباس مفردة/فاصلة عليا).
- الخطوة 2 - الاستبدال بالكيانات المسماة: يتم استبدال كل حرف خاص بكيان HTML الخاص به: & تصبح &، < تصبح <، > تصبح >، " تصبح "، ' تصبح '.
- الخطوة 3 - الحفاظ على الأحرف الآمنة: الأحرف والأرقام وعلامات الترقيم الشائعة التي ليس لها معنى خاص في HTML تبقى دون تغيير.
- الخطوة 4 - التعامل مع الأحرف الموسعة: يمكن اختياريًا ترميز الأحرف غير ASCII (مثل é تصبح é أو é) للتوافق مع الأنظمة القديمة.
مثال: السلسلة "<script>alert("XSS")</script>" تُرمَّز إلى "<script>alert("XSS")</script>"، والتي تعرضها المتصفحات بأمان كنص بدلاً من تنفيذها ككود.
HTML Entities and Web Security
تطور ترميز كيانات HTML مع HTML نفسه. تحدد مواصفات HTML5 مراجع الأحرف المسماة (مثل < > &) والمراجع الرقمية (< أو <). يمنع ترميز الكيانات المتصفحات من تفسير الأحرف الخاصة كعلامات HTML، مما يجعله لا غنى عنه للأمان وعرض المحتوى.
Critical Security Guidelines
HTML encoding prevents XSS attacks by converting special characters to safe entities. Always encode user input before displaying it on web pages. تعرف على أمان الترميز
ترميز كيانات HTML في لغات البرمجة
توفر معظم اللغات ترميز كيانات HTML لمنع هجمات XSS. إليك الأمثلة:
// htmlspecialchars() - standard encoding (recommended)
$encoded = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
// Encodes: < > & " '
// htmlentities() - encodes ALL special characters
$encoded = htmlentities($data, ENT_QUOTES, 'UTF-8');
// Encodes: < > & " ' plus accented characters, etc.
// For attribute values (always use ENT_QUOTES)
echo '<div title="' . htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8') . '">';
// Laravel Blade templates (auto-encoding)
// {{ $userInput }} - automatically HTML encoded
// Browser: textContent (automatic encoding - recommended)
element.textContent = userInput; // Safe, auto-encoded
// Creating elements safely
const div = document.createElement('div');
div.textContent = userInput; // Safe
// Manual encoding function
function htmlEncode(str) {
const div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}
// Library: DOMPurify (for sanitizing HTML)
const clean = DOMPurify.sanitize(dirtyHTML);
import html
# html.escape() - standard encoding
encoded = html.escape(userInput)
# Encodes: < > &
# With quote encoding
encoded = html.escape(userInput, quote=True)
# Encodes: < > & " '
# Django templates (auto-encoding)
# {{ user_input }} - automatically HTML encoded
# {{ user_input|safe }} - NO encoding (dangerous!)
# Jinja2 templates (auto-encoding)
# {{ user_input }} - automatically encoded
import "html"
// html.EscapeString() - standard encoding
encoded := html.EscapeString(userInput)
// Encodes: < > & " '
// In Go templates (html/template package auto-encodes)
tmpl := template.Must(template.New("page").Parse("<p>{{.}}</p>"))
tmpl.Execute(w, userInput) // Auto-encoded safely
// Apache Commons Text (recommended)
import org.apache.commons.text.StringEscapeUtils;
String encoded = StringEscapeUtils.escapeHtml4(userInput);
// Encodes: < > & " '
// OWASP Java Encoder (most secure)
import org.owasp.encoder.Encode;
String encoded = Encode.forHtml(userInput);
// Spring MVC (auto-encoding in JSP)
// <c:out value="${userInput}"/> - auto-encoded
require 'cgi'
# CGI.escapeHTML() - standard encoding
encoded = CGI.escapeHTML(user_input)
# Encodes: < > & " '
# Rails (ERB templates auto-encode)
# <%= user_input %> - automatically HTML encoded
# <%== user_input %> - NO encoding (dangerous!)
# html_safe marker (tells Rails string is safe)
# safe_html.html_safe - skips encoding
using System.Web;
using System.Net;
// HttpUtility.HtmlEncode() - standard encoding
string encoded = HttpUtility.HtmlEncode(userInput);
// Encodes: < > & " '
// WebUtility (no System.Web dependency)
string encoded = WebUtility.HtmlEncode(userInput);
// Razor views (auto-encoding)
// @Model.UserInput - automatically HTML encoded
// @Html.Raw(Model.UserInput) - NO encoding (dangerous!)
Related Tools
Need to decode HTML entities? Use our HTML Entity Decoder to convert < > & back to characters.
Encoding data for URLs? Try our URL Encoder to make text URL-safe.
Encoding binary data? Use our Base64 Encoder for binary-to-text conversion.