从输入文本字段中获取正确的HTML编码值

时间:2014-08-23 20:22:42

标签: html forms coldfusion

我有一个文本字段,人们可以输入他们想要的任何内容。但是,当我从文本字段中获取值时,我想返回编码的值,以便引号获得类似"的值,而不是普通的"

我需要这个,因为在HTML属性(例如描述元标记)中使用它们时,普通值会导致我在网站中出现问题。

有没有办法从<input type="text"/>表单元素中获取特殊字符的正确HTML代码?

4 个答案:

答案 0 :(得分:3)

ColdFusion实际上包括OWASP ESAPI实用程序,这些实用程序专门用于回溯到ColdFusion 8(如果使用适当的安全性修补程序更新)。请参阅Pete Freitag撰写的这篇文章 - ColdFusion's Builtin Enterprise Security API

  

安装最新ColdFusion安全修补程序的一个不错的副作用是ColdFusion 8和ColdFusion 9现在都包含OWASP ESAPI或Enterprise Security API的jar文件。

     

这意味着现在可以非常轻松地从ColdFusion代码中利用这个功能强大的安全API。

     

以下是如何使用ESAPI编码器阻止跨站点脚本编写的简单示例:

     

<cfset esapi = CreateObject("java", "org.owasp.esapi.ESAPI")>
  <cfset esapiEncoder = esapi.encoder()>
  <cfoutput><p>Hello #esapiEncoder.encodeForHTML(url.name)#</p></cfoutput>

     

Encoder类具有对各种输入进行编码的方法,因此可以在各种上下文中安全地使用它们。这里列出了一些方便的编码器:

     

encodeForHTML - 用于在HTML标记之间编码字符串   encodeForHTMLAttribute - 用于编码HTML属性中的字符串   encodeForURL - 用于在url内部进行编码,例如:在href中   encodeForJavaScript - 用于javascript变量或函数参数内的输入   encodeForCSS - 用于编码CSS内部的变量(例如内联样式属性)   encodeForXML - 在XML中编码变量   encodeForXPath - 在XPath查询中编码变量。

     

ESAPI还能做什么?

     

ESAPI还为验证,加密,记录,随机化等提供帮助。查看文档以了解它可以做什么。

以ColdFusion 10开头的新安全功能encodeFor*实际上是这些实用程序的实现。 ColdFusion 10 Provides Powerful New Security Tools

这些实用程序为您做的远远超过htmlEditFormat()。如上所述,它们包括针对各种上下文的特定编码/解码功能; HTML,HTML属性,URL,JavaScript,CSS,XML和XPath。它们还包括相同的验证。我鼓励你检查一下。我之前发布了一个关于如何使用这些实用程序实现验证的问题,这可能会对您有所帮助 - How to implement the OWASP ESAPI validator with groups of validation attempts in ColdFusion?

参考 - OWASP Enterprise Security API

答案 1 :(得分:1)

虽然您没有指定任何编程语言,但您可以在PHP中使用htmlspecialchars()函数。你只需要使用:

echo htmlspecialchars($_POST['inputname']);

有关详细信息,请参阅this page

答案 2 :(得分:1)

你可以用jQuery做到这一点。请参阅codeproject

上的这篇文章

答案 3 :(得分:1)

这只删除了几个重要的角色,你不必添加一个大的库来实现这个

var HTML_ENTITIES = {
'&': '&amp;',
'>': '&gt;',
'<': '&lt;',
'"': '&quot;',
"'": '&#39;'
};


// HTML escaping
htmlEscape = function(text) {
return text && text.replace(/[&"'><]/g, function(character) {
  return HTML_ENTITIES[character];
});
};

希望这有帮助