我一直在Coldfusion中使用普通表单和输入字段一段时间,但最近发现cfinput标签会自动为我阻止一些xss攻击。这让我想知道,如果在ColdFusion中使用cffrom和cfinput比正常形式和输入标签有什么缺点。CFForm vs Coldfusion中的表格
我在短时间内发现的唯一缺点是它在页面上添加了2个外部样式表和1个脚本标签。
因此,在短期:
什么是ColdFusion的使用CFFORM重于形式的优点和缺点?
我一直在Coldfusion中使用普通表单和输入字段一段时间,但最近发现cfinput标签会自动为我阻止一些xss攻击。这让我想知道,如果在ColdFusion中使用cffrom和cfinput比正常形式和输入标签有什么缺点。CFForm vs Coldfusion中的表格
我在短时间内发现的唯一缺点是它在页面上添加了2个外部样式表和1个脚本标签。
因此,在短期:
什么是ColdFusion的使用CFFORM重于形式的优点和缺点?
我更喜欢在我的表单中编写我自己的JS。我在当天就开始使用cfform,但最终想要做比cfform能够处理的更强大的事情(验证等)。这迫使我学习JS,自从写了自己的JS之后,我一直很开心。
所以我想我会说一个很大的缺点就是你仅限于cfform可以处理的东西。根据你的情况,这可能是好的。
我很久以前遇到过的另一个缺点(公平,可能已经被解决),是由cfform生成的JS会冲突或干扰我的手写JS。
它肯定会降低偏好。使用cfform或常规形式既不“正确”也不“错”。对我而言,我更喜欢能够进行手动操作所需的任何操作,因为没有任何限制/限制。
我不想用cfinput来验证前端的表单,我更注重后端。每当我放入类似“”/>“转换为基本输入格式,它会结束输入并运行js,我必须使用HTMLEditFormat来防止这种情况发生,但是如果我使用cfinput,它将会像HTMLEditFormat那样转换符号,但我永远不需要实际调用HTMLEditFormat – corymathews 2011-06-07 19:49:40
I' d仍然更喜欢自己添加HTMLEditFormat(),我想在其中添加它,这样,如果需要不使用它,我不必提出解决方法,但那就是我。在他的回应(我是释义),如果它适合你,使用它。在大多数情况下,“优势”或“劣势”将成为主观。 – charliegriefer 2011-06-07 19:56:09
我与查理在这方面的客户我有很多场合CFFORM的JavaScript引起了其他脚本函数的问题,我也有一个问题,就是Adobe坚持要你手动破解cfform.js来创建一个需要的选择框。将使用CFFORM Server validateAt属性可以快速处理服务器端验证,如果它非常基本。 – 2011-06-16 13:28:15
我与<cfform>
& <cfinput>
有爱恨关系。
具有相同的XSS保护是CFFORM提供,只是包装htmlEditFormat()围绕价值= “” 经常像这样:
<input name="x" value="#htmlEditFormat(x)#">
为了更好的保护XSS,使用OWASP Enterprise Security API(包括的.jar在一个的CF9最新修补程序)
我喜欢如何在不编写JS的情况下轻松完成Ajax化表单,但我讨厌它是如何生成大量丑陋的JavaScript并加载大量JS和css文件以获得相当简单的东西。所以我决定只对内部网站使用cfform,而不是面向公众的网站(性能问题)。
其他然后Ajax特性,接受CF布尔和填充选择与查询对象的属性checked
是功能cfinput
和cfselect
提供一种可以是非常有用的。
使用合适的工具进行正确的工作。如果您发现<cfform>
的功能有用,请使用它。只知道它的局限性,然后自己决定。
您也可以使用''。请参阅http://stackoverflow.com/questions/3640156/is-xmlformat-always-better-than-htmleditformat – 2011-06-07 21:34:46
@Ciaran是的,但'htmlEditFormat()'是cfinput使用的。 – Henry 2011-06-07 22:40:36
我很久没有使用过ColdFusion的CFInput了。我一直在使用jQuery验证插件,这样我可以在其他事情上一样执行验证:
大多数验证规则可以在线添加到类参数:
<input type="text" name="Name" class="required">
<input type="text" name="Birthdate" class="required date">
<input type="text" name="Email" class="required email">
<input type="text" name="Website" class="url">
我更喜欢使用jQuery,因为有时我需要将这个相同的逻辑添加到基于非ColdFusion的表单中,并且我不必担心CFInput是ColdFusion-Only标签。
这里有关于jQuery验证库的详细信息的链接:为在14年
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
当你将ColdFusion与jQuery结合在一起时,你会让所有的地狱散去,这真是太棒了!你已经完全掌握了jQuery。 – 2011-08-19 23:24:24
我一直在使用ColdFusion。 CF是这样一个踢屁股产品的原因是,让新用户在没有太多理解的情况下快速完成大量工作,并使火箭科学家能够快速构建真正强大和安全的应用程序。
CFFFORM,CFINPUT,CFLAYOUT,CFPOD是为新用户创建的标签。基本上,他们是训练轮子。如果你是网络开发新手,你应该试试这个标签。随着您获得经验,您需要放弃这些标签并转到其他技术来创建更强大的应用程序。
这些标签没有问题,就像训练轮没有问题一样。你只需要知道每项工作都有适当的工具。实际上,每项工作都有很多适合的工具。
目前,我正在开发构建外部网站的ColdFusion 9/jQuery/SQL Server Intranet。我正在做,而不使用单个表单标签。而且,我正在使用CFSCRIPT完成它。哇!
使用jQuery,你不需要窗体。你只需要输入。以下是我如何在CFSCRIPT中创建输入。
<cfscript>
Options = "";
for (i = 1; i lte 10; i++) {
Options = Options & wrapOption("Some choice #i# ", i);
}
SelectBox = wrapSelect(Options, "MySelectID");
writeOutput(SelectBox);
SecretDiv = wrapDiv("", "", "MyDivID");
writeOutput(SecretDiv);
</cfscript>
用户定义的函数来创建HTML在我UDF_Library.cfm文件:
// WRAP SELECT
function wrapSelect(SelectContent, Class, ID) {
LOCAL.SelectContent = ARGUMENTS.SelectContent;
LOCAL.Properties = "";
// CLASS
if (isDefined("ARGUMENTS.Class")) {
LOCAL.Properties = LOCAL.Properties & " class='#ARGUMENTS.Class#'";
}
// ID
if (isDefined("ARGUMENTS.ID")) {
LOCAL.Properties = LOCAL.Properties & " id='#ARGUMENTS.ID#'";
}
LOCAL.Item = "<select #LOCAL.Properties#>#LOCAL.SelectContent#</select>";
return LOCAL.Item;
}
// WRAP OPTION
function wrapOption(Content, Value, Selected) {
LOCAL.Content = ARGUMENTS.Content;
LOCAL.Properties = " value='#ARGUMENTS.Value#'";
// SELECTED
if (isDefined("ARGUMENTS.Selected") and (ARGUMENTS.Selected eq "selected")) {
LOCAL.Properties = LOCAL.Properties & " selected";
}
LOCAL.Item = "<option #LOCAL.Properties#>#LOCAL.Content#</option>";
return LOCAL.Item;
}
// CREATE DIV
function wrapDiv(Content, Class, ID) {
LOCAL.Properties = "";
// CLASS
if (isDefined("ARGUMENTS.Class")) {
LOCAL.Properties = LOCAL.Properties & " class='#ARGUMENTS.Class#'";
}
// ID
if (isDefined("ARGUMENTS.ID")) {
LOCAL.Properties = LOCAL.Properties & " id='#ARGUMENTS.ID#'";
}
LOCAL.Item = "<div #LOCAL.Properties#>#ARGUMENTS.Content#</div>";
return LOCAL.Item;
}
我使用jQuery和它的类或ID是指每个元素。如果你这样做,你可以在每个元素提交数据到Ajax调用是这样的:
<script type="text/javascript">
$(document).ready(function() {
$("#MySelectID").change(function() {
MyID = $("#MySelectID").val();
$("#MySecretDiv").load("CoolQuery.cfm?UserID"+MyID);
});
});
</script>
的一点是,只要您使用CFFORM和CFINPUT,你不能做所有的真强大的jQuery的东西。但是,你需要这些标签才能开始。
2012年将成为ColdFusion和jQuery强大的一年!
祝你好运!
我很想知道你相信你从cfforms获得的XSS保护。我知道没有。 – 2011-06-07 20:03:32
' '导致无法从这里出现问题。我总觉得这个代码应该是开源的,所以人们可以独立地向前发展它。一种可能的方法是使用XML可换肤表单:http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7b0e.html,但我一直认为XSL是解决问题的方法。 –
orangepips
2011-06-07 20:06:57
@Jason AFAIK cfinput/cfselect/cftextarea中的所有value =“”都是xmlFormat()自动编辑的,就这些了。 – Henry 2011-06-07 20:08:30