我说的是Delphi + ADO + MSSQL。 好的,我知道带参数的查询对SQL注入非常安全。 另一方面,动态查询非常不安全。 但是经典的FieldByName方法呢?我可以安全地为FieldByName分配一个绝对任意的字符串值,而不会有注入的风险吗?
答案 0 :(得分:5)
很安全。 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