2016-09-26 47 views
0

我有一个关于在Coldfusion中验证表单和url变量的问题。这可能是一个非常基本的问题,但请耐心等待。例如,我有一个url,看起来像,https://dev.abc.com/test.cfm?page_id=4&id=54658,但我更新的网址看起来像这样的:https://dev.abc.com/test.cfm?page_id=4&id=546589687534,在这种情况下,页面错误了,我得到一个“无效数据23254523456为CFSQLTYPE CF_SQL_INTEGER”在cfc调用。如何在这种情况下检查url变量,当用户插入URL变量并确保页面没有出错时。与表单域类似。我正在使用像下面这样的regexreplace在处理之前清理表单域。Coldfusion url quesiton

<cfset srchvar = ReReplace(srchvar,"\b(\w)","\u\1","ALL") /> 
<cfset srchvar = REReplace(srchvar,"[^0-9A-Za-z ]","","all") /> 

是否有任何其他需要应用的检查。任何建议,非常感谢。谢谢

+0

必须应用的检查取决于您要完成的工作。另外,你永远不能保证页面不会抛出错误。你可能想看看全局错误处理。此外,替换用户输入而不是向用户报告不良数据不一定是个好主意。 –

+1

对于一个整体更好地理解考虑到安全性的节目,由皮特Freitag的阅读这个优秀的文档 - [ColdFusion开发安全指南(http://www.adobe.com/content/dam/Adobe/en/products/coldfusion/ PDF文件/ CF11/CFML,开发人员安全指南.pdf) –

回答

2

如何检查URL的变量在这种情况下,当用户 插入URL变量并确保页面没有出错?

<cfif !isValid('integer',URL.id)> 
    <!--- Gracefully handle the error here ---> 
</cfif> 

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fb9.html

是否有需要应用的任何其他检查。

我通常尝试验证所有数据,然后将其放入数据库或使用它。我使用isValid来检查数据类型,检查或修剪可能太长的字符串,当我不接受空值时验证数据的存在。这样,我的数据库不必在插入时抛出错误,而是我可以在该步骤之前捕获它。

+0

小心验证日期。 ColdFusion在这个主题上非常慷慨。 –

+1

..而不仅仅是与日期:[?为何的isValid(“整数”,“1,5”)= YES](http://stackoverflow.com/questions/11535979/why-isvalidinteger-1-5-yes) 。 – Leigh

+0

@李非常真实。过去我被一些验证逻辑烧毁了。但只要你正常处理错误,它确实没问题。 – Leeish

0

我猜你的整数对于你使用的数据库/驱动类型来说太大了。如果您使用JDBC:

JDBC类型INTEGER代表一个32位有符号整数范围-2147483648和2147483647之间