ColdFusion程序员常见的编程错误要避免吗?

And*_*mer 9 coldfusion

本着我关于"常见的编程错误......避免"的其他问题的精神

ColdFusion程序员要避免哪些常见的编程错误?

Hen*_*nry 27

  • 设置<cffile>上传路径到Web可访问,启用CF的目录!

  • isStruct()之前isObject()在一系列<cfif>的期望中,isStruct只捕获struct(cfc组件也从isStruct()返回True)

  • HtmlEditFormat()显示用户生成的内容(XSS)

  • 忘了在CFC方法上添加output = false

  • 不在<cfqueryparam>里面使用<cfquery>

  • 没有在方法中确定诸如cfquery name或loop index之类的不那么明显的变量

  • 使用<cfform>时,他们需要的是纯香草HTML<form>

  • 忘了UrlEncodedFormat()用户定义的URL

  • <cffeed>不消毒内容的情况下使用

  • 信任isDate()太多(任何数字都会返回true)

  • 期望字符串比较区分大小写(IS和EQ运算符不区分大小写)

  • 发送字符串"yes"或"no" SerializeJSON()而不附加空格来保留字符串(否则SerializeJSON()DeserializeJSON()将它们翻译为"true"和"false")

  • 不将单身人士服务放在应用范围内

  • 盲目地创造尽可能多的CFC,就像在JAVA中那样

  • 将复杂的值/对象放入列表中(不能,列表只是一串逗号分隔的值)

  • 编写将数组作为参数并修改该数组的函数,期望该数组将被修改(CFML中的数组按值传递)

  • 盲目地改变access="remote"方法并期望它工作(当远程代理通常更合适时)

  • 当CFML更合适时,在cfscript中使用大量的WriteOutput()

  • 盲目使用的IsDefined()时候StructKeyExists()一般可以更有效地做到

  • 盲目地使用Iif()并且De()不知道它们像Evaluate()那样令人讨厌

  • 更新onApplicationStart()中的一些代码,而不是看到刷新的差异(重新启动应用程序!)

  • <cfloop>或''在<cfquery>导致打开多个新查询连接之外.99%的情况下,在一个cfquery中执行多个语句以执行多个操作或一起使用UNION数据会更好.

  • 硬编码绝对路径时ExpandPath()通常更好

  • 忘了在DSN中启用Unicode支持(Unicode变为'????')

  • 不升级到最新的JRE和修补程序

  • 滥用客户端范围并炸毁Windows注册表...

  • 使用折旧/过时的功能/功能(即flash形式又名flex 1.x alpha,cftable,Verity全文搜索等......)

  • 传递CFCATCH给函数作为参数类型Struct (CFCATCH行为类似于a Struct,但事实并非如此.只需将其作为类型' Any' 传递).

  • 没有从ColdBox wiki 阅读CFC最佳实践.

  • 以.ASP(X)或.JSP或[插入网络技术]的思维方式购买总是更好..;)

  • 不使用PrecisionEvaluate()并获得所有类型的浮点舍入误差,尤其是在计算金钱时.

  • @Henry:小错字 - 它是`HTMLEditFormat()`.(XSS漏洞的共性的一个原因是HTML转义函数名称在任何地方都是如此冗长:`htmlspecialchars()`,`Server.HTMLEncode()`,你命名它.通常我为`HTMLEditFormat()创建一个包装函数`并调用`h()`,这非常方便.随着URLEncodedFormat的包装器调用`u()`.) (3认同)