SQL注入的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 14:14:07
今天在网上看了一篇讲解SQL注入的文章,里面有这样一段话不是很懂:

防止SQL注入的另外一层涉及正确地确定应用程序中所有SQL查询的参数,不管是在动态SQL语句中还是在存储过程中。例如,如果代码像下面这样构建查询,就比较安全:

SELECT [CustomerID], [CompanyName], [ContactName]
FROM [Customers]
WHERE CompanyName = @CompanyName

当作为SQL语句的一部分执行时,参数化查询将输入作为一个字面值,因此服务器就可能将带参数的输入作为可执行代码。即使你使用了存储过程,你仍然必须采取另外一步来确定输入的参数,因为存储过程并不对嵌入式查询中的SQL注入提供保护。

想问一下为什么带参数的SQL查询也是不安全的

因为这里存储过程指的参数和WHERE CompanyName = @CompanyName 的参数 并不是一个概念

两种类型并不一致

这里是只存储过程的参数不能解决SQL 注入

Sql的注入主要是靠构造具有威胁的sql 语句来实现,用参数的形式来做就可以尽量的避免