2016-09-26 44 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之間