回答
设置
<cffile>
上传可访问Web的路径,启用CF的目录!!!isStruct()
在一系列<cfif>
的期待isStructisObject()
之前仅捕获结构(CFC部件从isStruct(返回True)以及)显示用户生成的内容(XSS) 时
没有
HtmlEditFormat()
忘记
不使用
<cfqueryparam>
添加输出=假上CFC方法内<cfquery>
没有作用域像CFQUERY名称或循环索引不那么明显变量的方法
使用
<cfform>
时,他们需要的是纯香草HTML<form>
忘记
UrlEncodedFormat()
用户自定义URL使用
<cffeed>
没有消毒的内容信任
isDate()
过多(任何数量将返回true)期望字符串比较是区分大小写(IS和EQ运营商是不区分大小写)
发送串“是”或“否”
SerializeJSON()
无追加一个空白保留字符串(否则SerializeJSON()
或DeserializeJSON()
将它们翻译为“真”和“假”)不把单身人士服务的应用范围
盲目创建小号多氯氟烃作为一个想要像一个会在JAVA
做到把复杂的值/对象到一个列表(不能,名单只是一个逗号分隔值的字符串),其采用
写入功能数组作为参数和修改阵列期待该阵列将被修改(在CFML阵列由值来传递)
盲目地改变上的方法
access="remote"
和期望它的工作(当远程代理一般是更合适)使用在CFSCRIPT很多WriteOutput()时CFML是比较合适的
盲目使用
IsDefined()
当StructKeyExists()
一般可以更有效地盲目使用
Iif()
和De()
做到这一点不知道他们是为评估为讨厌的()更新onApplicationStart()中的一些代码,并没有看到刷新的区别(重新启动应用程序!)
<cfloop>
或'<cfquery>
以外的''导致多个新的查询连接被打开。 99%的时间最好在一个cfquery内部执行多个操作的多个语句,或者在一起执行UNION数据。硬编码绝对路径时
ExpandPath()
一般都比较好忘了DSN打开Unicode支持(统一变为 '????')
没有升级到最新的JRE和修补程序
滥用客户范围和炸毁的Windows注册表...
用途贬值/过时的功能/ featu res(即闪存形式又称柔性1.x的α,CFTABLE,Verity的全文检索等)
传递
CFCATCH
的功能参数类型Struct
(CFCATCH
表现得像Struct
,但事实并非如此。只是通过它类型为'Any
')。从ColdBox维基未阅读CFC Best Practices。
买盘.ASP(X)或.JSP或[插入网络技术]的心态总是会更好一些..;)
不使用
PrecisionEvaluate()
并获得所有种类的浮点舍入误差尤其是当计算金钱。
不适当使用的#
SELECT *
未洗涤URL /表单输入
在生产环境(即使输出被抑制)调试上
SQL Injection Attacks。看起来好像cfquery只是为了让他们。所以你应该使用cfqueryparams。
在Coldfusion中,除非用关键字var
声明所有变量,否则默认情况下所有变量都是全局变量。 (有点类似于JavaScript中的情况。)
所以,你要么必须记得在函数中使用var
每变量,包括之类的名字被用在cfquery
name
,或者你可以只使用这一招:
<cffunction name="MyFunction">
<cfset var Local = StructNew()>
<!--- Now anything Local. is automatically local --->
<cfset Local.x = 42>
<!--- Including cfquery name="" --->
<cfquery name="Local.Customers" datasource="some_datasource">
SELECT C.ID, C.Name
FROM Customers C
</cfquery>
</cffunction>
没有什么魔法这个名字Local
,这只是惯例。虽然Coldfusion 9 will add an explict local scope,所以如果你使用Local
它可能会轻松升级到CF9时间到了。
请注意,对于CFC,情况有点不同:在CFC中,variables
作用域(“默认”作用域)不是全局的,而是存在于每个CFC实例中。因此,尽管在CFC中忘记使用var
并不像在顶级功能中那样危险,但最佳做法仍然始终使用var
。
过度使用'查询查询'。也就是说,使用cfquery标签进一步过滤或排序查询结果。
这种类型的工作通常由数据库本身做得更好,特别是在数据集很大的情况下。
无耻偷亨利的格式...
一个最大的错误,将不使用cfqueryparam
非常糟糕:
SELECT UserName
FROM Customers
WHERE CustomerID = #URL.custid#
非常好:
SELECT UserName
FROM Customers
WHERE CustomerID = <cfqueryparam value="#URL.custid#" cfsqltype="cf_sql_integer">`
犯这样的错误会让你成为一个网站。
将变量放在错误的范围内;即使你没有炸毁注册表或崩溃服务器,也很容易通过将变量冲击到你认为可能需要它们的最高范围,或者因为将它存储在一个范围,并试图在不同的范围内访问它们。
使用cfcatch
没有捕获和/或传输有关错误的一些信息,以便它可以找到并修复。 (很难找到一个不会告诉你它发生的错误。)
使用listcontains()
当你想要listfind()
。特别是如果列表包含数字。 listfind()
仅匹配列表中的整个项目; listcontains()
匹配项目的一部分。 (是的,我们犯了这个错误一次。)
具有管理员访问权限:
- 离开默认值设置在服务器上的数据源。 “最低特权”也适用于CF方面;不要再给它任何比它特别需要的权限。 (GRANT,ALTER,REVOKE,DROP ...你并不想要那些检查。)
- 不检查从CLOB/BLOB字段中检索所有内容的复选框,当这是你所期望的。 (看到适用于存储PDF的字段非常有趣。)
未能防止用户看到coldfusion错误。
将onError方法添加到顶层Application.cfc中,以防止用户看到所有这些都暴露给详细的转储消息,从而暴露内部工作(和失败)。
<cffunction name="onError" returntype="void" output="true">
<cfargument name="exception" type="any" required="true" />
<cfargument name="eventname" type="string" required="true" />
varscoper也是自动检查组件中变量范围遗漏的好工具。
- 1. WPF开发人员要避免的常见编程错误?
- 2. ANTLR入门和避免常见错误
- 3. C++程序员应该避免memset吗?
- 4. 十大ColdFusion的编程错误
- 5. 如何在引用常见jar文件时避免编译错误?
- 6. ASP.Net/Web编程的基本技巧和窍门以及程序员犯的常见错误是什么?
- 7. 避免常见的sql开发错误的策略(误加入bug的结果)
- 8. 避免顺序过程
- 9. 避免ClickOnce引导程序
- 10. 优化数据转换程序以避免内存错误
- 11. 在I/O错误时避免程序退出
- 12. 程序员错误或gcc-5.1.0错误?
- 13. 避免MySQL1044错误
- 14. 避免编译泛型错误
- 15. 避免裁员
- 16. 如何避免以编程方式共享应用程序?
- 17. coldfusion管理员500错误
- 18. 我的程序常见错误(多态/覆盖/继承)
- 19. CommandLine ::应用程序吞噬我的主要异常,如何避免?
- 20. 如何避免“线程中的异常”main中的“java.util.ConcurrentModificationException”Java中的错误
- 21. 避免错误的HttpWebRequest(500)
- 22. 避免在零的错误
- 23. 避免在类成员初始化程序中重复类型?
- 24. 避免不必要的负载闪亮的应用程序
- 25. 普通程序员的所有常见软件许可证简要说明?
- 26. 如何避免此JavaFX示例程序的异常?
- 27. 避免应用程序中的模块出现异常
- 28. 如何避免断开JDBC驱动程序时的异常?
- 29. 意见,建议使用IIS 7中的线程托管ASP.Net应用程序以避免堆栈溢出异常
- 30. 展望编程避免Attachment.SaveAsFile()上XSL
询问SO过于宽泛的问题。 ;) – 2009-07-27 23:11:26
有趣的问题......内容丰富的问题......不仅过于宽泛!其中一些“错误”问题正在得到很好的答案!良好的阅读。 – 2009-07-27 23:12:31
@Greg Beech +1 - 虽然我必须承认我使用ColdFusion编程从CF 3到6.1 ...一旦有人发现像C#和.NET这样的语言/平台,就很难保持对ColdFusion世界的兴趣。但是回顾一下,必须承认ColdFusion 2.0为ASP经典开发人员提供了.NET在多年后才能提供的东西。我甚至会说,ASP.NET受到了ColdFusion的极大启发,就像C#受Java启发一样。 – 2009-07-27 23:31:31