Validation 服务器端验证ColdFusion 9?

Validation 服务器端验证ColdFusion 9?,validation,coldfusion,coldfusion-9,server-side-validation,cffunction,Validation,Coldfusion,Coldfusion 9,Server Side Validation,Cffunction,我有一个关于服务器端验证的问题。我正在传递CFF函数中的参数。其中有些参数来自用户填充的值,有些参数是我从数据库填充的隐藏值。隐藏值将使用窗体上特定字段的当前值。所以我的问题是,如果我在cffunction中传递新值和隐藏值,然后比较这两个值,这对我的服务器端验证足够吗?我想知道是否存在用户可以绕过验证的场景?或者更好的选择是创建cfquery,直接从服务器端的DB中提取记录,而不是在客户端创建隐藏字段,然后将值作为参数传递?以下是我上述问题的示例: <select name="vehic

我有一个关于服务器端验证的问题。我正在传递CFF函数中的参数。其中有些参数来自用户填充的值,有些参数是我从数据库填充的隐藏值。隐藏值将使用窗体上特定字段的当前值。所以我的问题是,如果我在cffunction中传递新值和隐藏值,然后比较这两个值,这对我的服务器端验证足够吗?我想知道是否存在用户可以绕过验证的场景?或者更好的选择是创建cfquery,直接从服务器端的DB中提取记录,而不是在客户端创建隐藏字段,然后将值作为参数传递?以下是我上述问题的示例:

<select name="vehicles" id="vehicles">
   <input type="hidden" name="curVehicle" id="curVehicle" value="#oldVce.VehcileNum#" readonly>
   <option value="">Pick the vehicle</option>
   <cfloop query="myVehicles">
      <option value="#vehicleNum#">#vehicleName#</option>
   </cfloop>
</select>

挑选车辆
#车辆名称#
服务器端:

<cffunction name="InsertUpdateVehicles" access="remote" returnformat="JSON" output="true">
   <!--- current value from drop down menu --->
   <cfargument name="newVehicle" type="string" required="yes">
   <!--- value from hidden field curVehicle ---> 
   <cfargument name="oldVehicle" type="string" required="yes">

   <cfset myResults = structNew()>

   <cfif trim(arguments.newVehicle) NEQ trim(arguments.oldVehicle)>
       <!--- Run Insert/Update --->
   </cfif>

   <cfreturn myResults>
</cffunction> 


如果有人能提供帮助或提供一个例子,如果有一些方法可以解决这个验证,请让我知道。提前感谢。

如果需要服务器端验证,应该在函数中抓取并检查
#oldVce.VehcileNum
。或者,您可以使用哈希函数加密隐藏字段。

客户端显示的任何内容都可以操作。甚至隐藏输入或只读输入也可以使用浏览器的开发人员工具进行修改。永远不要相信来自web客户端的任何信息。是的,客户端信息总是可疑的。但是,您遗漏了一个重要的细节:您的验证究竟试图阻止什么,即如果值发生更改,结果会是什么?这就是正确的方法。因此答案是直接从数据库中提取CFF函数中服务器端的记录。正如@Carl Von Stetten所说,客户端数据可以被操纵。是的,从函数中的DB中提取它来检查NewVehicle,或者根据此答案对其进行哈希。