Coldfusion 如何保护css id

Coldfusion 如何保护css id,coldfusion,sanitization,coldfusion-11,Coldfusion,Sanitization,Coldfusion 11,我有一个最终将成为htmlid=属性的值。我无法控制该值的设置,因此可能不安全。我知道要检查单引号和双引号,但如何检查以确保它干净 variables.result &= '<div class="alert alert-danger"'; if(attributes.id != "") variables.result &= ' id="#attributes.id#"'; variable

我有一个最终将成为html
id=
属性的值。我无法控制该值的设置,因此可能不安全。我知道要检查单引号和双引号,但如何检查以确保它干净

                                variables.result &= '<div class="alert alert-danger"';
if(attributes.id        != "")  variables.result &= ' id="#attributes.id#"';

variables.result&='如果我理解正确,那么这可能就是您要找的:

编辑:在PHP中:

EDIT2:没有看到你在使用coldfusion,可能就是这样:


如果使用ColdFusion生成变量名,可以使用拐点CFC的“variablise”方法。它会将任何字符串转换为安全的下划线分隔列表,该列表可用作ColdFusion变量名。(拐点是基于RubyonRailsActiveSupport::拐点类的。)



搜索转义html(属性)。那不管是什么。。但是攻击者仍然可以隐藏id。不确定我是否理解您想要的内容,但我的猜测是:
'id=“#encodeForHtmlAttribute(attributes.id)#”
这也适用于样式和类吗?与其担心过滤掉什么,不如决定允许什么,并使用正则表达式将输入限制为这些字符。@jamesamhler是的,它将转义所有将“离开”标记属性的字符。但请记住,这是为了净化输入,而不是验证。人们仍然可以提交无效的ID和类(包含规范不允许的错误字符)。这不会是一个安全问题,但这些值将是无用的。这看起来像一个客户端工具。我正在寻找服务器端解决方案
<cffunction name="variablise" access="public" returntype="string" output="no" hint="Converts a string to a variable name, e.g. CamelCase becomes camel_case, 'big CSSDogThing' becomes big_css_dog_thing etc.">
    <cfargument name="string" type="string" required="yes" hint="The string to variablise">
    <cfset arguments.string = replace(trim(rereplace(arguments.string, "([^[:alnum:]_-]+)", " ", "ALL")), " ", "-", "ALL")>
    <cfset arguments.string = rereplace(arguments.string, "([A-Z]+)([A-Z][a-z])", "\1_\2", "ALL")>
    <cfset arguments.string = rereplace(arguments.string, "([a-z\d])([A-Z])", "\1_\2", "ALL")>
    <cfreturn lcase(replace(arguments.string, "-", "_", "ALL"))>
</cffunction>