本文介绍了FieldByName注入安全吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我说的是Delphi + ADO + MSSQL。
好的,我知道带有参数的查询对于SQL注入非常安全。
另一方面,动态查询并不安全。
但是经典的FieldByName方法呢?我可以安全地为FieldByName绝对分配一个任何字符串值,而不必冒险进行注入吗?
I'm talking about Delphi + ADO + MSSQL.Okay, I know that queries with parameters are quite safe against SQL-injections. On the other hand, dynamic queries are quite not safe. But what about classic FieldByName methods? Can I safely assign to FieldByName an ABSOLUTELY any string value, without risking to have an injection?
推荐答案
这是安全的。
Ado正在使用参数进行更新/插入/删除。
It is safe.Ado is using parameters for Update/Insert/Delete.
您可以使用SQLProfile进行跟踪,例如
You can trace this with SQLProfile, e.g.
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
这篇关于FieldByName注入安全吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!