"? " />"? " />
Understanding HTML/Template Escaping
An issue has been raised regarding html/template unnecessarily escaping "<" to "<" while leaving ">" untouched. To understand this behavior, let's first examine the purpose of HTML/template escaping.
HTML Escaping for Safety
HTML/template provides automatic escaping of potentially dangerous characters to prevent code injection vulnerabilities. This escaping is context-sensitive, ensuring that data is properly encoded when embedded in different contexts, such as HTML, CSS, or URIs.
html/template for HTML Output Only
However, it's crucial to note that html/template is specifically designed for generating HTML output. Its main intention is to provide a safe means of embedding user-supplied data into HTML documents.
Use text/template for Non-HTML Output
If the output you require is not HTML, you should use text/template instead. Unlike html/template, text/template does not perform escaping, allowing you to generate plain text or custom file formats.
Conclusion
In the example provided, the template is intended to generate a non-HTML file, such as a readme or license. Therefore, you should use text/template, which does not escape characters, to avoid unnecessary encoding of "<". By choosing the appropriate template package based on the output format, you can ensure the correct behavior and avoid unexpected escaping issues.
The above is the detailed content of Why does html/template escape \'<\' but not \'>\'?. For more information, please follow other related articles on the PHP Chinese website!