我说的是德尔福+ ADO + MSSQL。 好吧,我知道,与参数查询是针对SQL的注射很安全。 在另一方面,动态查询是非常不安全的。 但是关于经典FieldByName方法是什么? 我可以肯定地分配给FieldByName绝对任意字符串值,而不用担心打针?
Answer 1:
它是安全的。 ADO是使用参数更新/插入/删除。
你可以用SQLProfile,如跟踪此
exec sp_executesql N'UPDATE "test".."Activity" SET "data"=@P1 WHERE "InvokeTime"=@P2 AND "data"=@P3',N'@P1 float,@P2 datetime,@P3 float',1,'2013-04-24 10:46:22.933',0,48607825089780715
exec sp_executesql N'INSERT INTO "test".."Activity" ("InvokeTime","data") VALUES (@P1,@P2)',N'@P1 datetime,@P2 float','2000-01-01 00:00:00',2
exec sp_executesql N'DELETE FROM "test".."Activity" WHERE "InvokeTime"=@P1 AND "data"=@P2',N'@P1 datetime,@P2 float','2000-01-01 00:00:00',3
文章来源: Is FieldByName injection-safe?