参数化查询
预防SQL注入攻击的攻击手法的防御方式
参数化查询(Parameterized Query或Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数(Parameter)来给值,这个方法已被视为最有效可预防SQL注入攻击的攻击手法的防御方式。
简介
参数化查询(Parameterized Query或Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数(Parameter)来给值,这个方法已被视为最有效可预防SQL注入攻击的攻击手法的防御方式。
除了安全因素,相比起拼接字符串的SQL语句,参数化的查询往往有性能优势。因为参数化的查询能让不同的数据通过参数到达数据库,从而公用同一条SQL语句。大多数数据库会缓存解释SQL语句产生的字节码而省下重复解析的开销。如果采取拼接字符串的SQL语句,则会由于操作数据是SQL语句的一部分而非参数的一部分,而反复大量解释SQL语句产生不必要的开销。
原理
在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部分来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有具破坏性的指令,也不会被数据库所运行。
指令撰写方法
在撰写SQL指令时,利用参数来代表需要填入的数值,例如:
Microsoft SQL Server
Microsoft Access
MySQL
PostgreSQL/SQLite
PostgreSQLSQLite的参数格式是以“:”加上参数名而成。当然,也支持类似Access的匿名参数。
程序撰写方法
在客户端代码中撰写使用参数的代码,例如:
ADO.NET
ADO.NET用于ASP.NET之内。
参考资料
最新修订时间:2024-05-21 14:31
目录
概述
简介
原理
参考资料