为了防止sql注入,我在ColdFusion的介绍中读到了我们要使用cfqueryparam标签。使用存储过程,是否需要cfSqlType?
但在使用存储过程时,我通过我的变量在SQL Server中对应的变量声明:
DROP PROC Usr.[Save]
GO
CREATE PROC Usr.[Save]
(@UsrID Int
,@UsrName varchar(max)
) AS
UPDATE Usr
SET UsrName = @UsrName
WHERE [email protected]
exec Usr.[get] @UsrID
问:是否有包括cfSqlType当我调用存储过程的任何值? 这里是如何我目前做它Lucee:
storedproc procedure='Usr.[Save]' {
procparam value=Val(form.UsrID);
procparam value=form.UsrName;
procresult name='Usr';
}
总是数据输入您的参数。 – 2015-04-03 15:30:57
同意。 [总是输入参数有几个原因](http:// stackoverflow。COM /问题/ 27049918/ColdFusion的,参数化-A-querie/27066113#27066113)。虽然它涉及查询参数,但存储过程的相同问题也适用。 – Leigh 2015-04-03 15:51:42
在将它们传递给查询之前验证参数也是一个非常好的主意。也许你正在这样做,但是一旦它们得到验证,我通常会将'form'(以及'url')参数放入'variables'范围。 – 2015-04-03 17:28:57