在coldfusionMX 7的時代,如果你還把自己的sql語句停留在cf4或5的時代,那我可以告訴你,你落伍了,在7的時代,我們完全可以使用cfqueryparam來改進我們的程式,如果你問我原因的話,就只有兩個,一是安全,二是效率。讓我來告訴你why...


  很多時候,我們都需要用url來傳遞參數給sql執行,例如:http://www,yoursite.com?itemID=4


SELECT *

FROM tableName

WHERE idColumn =' #URL.itemID#
 '

這個時候,大家有沒有考慮到,如果有個人在你的url後面加上http://www.mysite.com/page.cfm?itemID=4; DROP TABLE tableName.你怎麼辦,那個時候你的sql語句將會變成:


SELECT *

FROM tableName

WHERE idColumn = 『#URL.itemID#』; DROP TABLE tableName

那這樣的,就game over了,如果你加上cfqueryparam的話



」#URL.itemID#」 cfsqltype=」cf_sql_integer」>



這樣的話,如果對方進行sql攻擊,帶入drop命令,就會被cfqeryparam所阻攔,這就是我所要說的 cfqueryparam所帶來的安全性考慮


第二是效率


效率體現在,如果在sql語句中,你這樣寫


SELECT *

FROM tableName

WHERE idColumn =#URL.itemID#

那麼系統需要自動的去判讀你寫入的這個value是不是和sql數據庫中的一致,在每次操作sql時都需要去做判讀,


如果你使用cfqueryparam,cfsqltype功能可以很好的告訴sql,value屬於什麼類型,在大數據量的情況下提高效率是很重要的環節



引用自:查爾斯實驗室


狼翔月影 發表在 痞客邦 PIXNET 留言(0) 人氣()