Sql server之sql注入篇

2022-08-02 00:00:00 用户 代码 输入 注入 验证

SQL Injection

关于sql注入的危害在这里就不多做介绍了,相信大家也知道其中的厉害关系。这里有一些sql注入的事件大家感兴趣可以看一下

 

防范sql注入的方法无非有以下几种:

1.使用类型安全的SQL参数
2.使用参数化输入存储过程
3.使用参数集合与动态SQL
4.输入滤波
5.过滤LIKE条款的特殊字符

...如果有遗漏的也欢迎园子的大大们指教。

Sample:

var Shipcity;
ShipCity = Request.form ("ShipCity");
var sql = "select * from OrdersTable where ShipCity = '" + ShipCity + "'";

上面是一个简单的sql注入示例

用户将被提示输入一个市县名称。如果用户输入 Redmond,则查询将由与下面内容相似的脚本组成:

SELECT * FROM OrdersTable WHERE ShipCity = 'Redmond'

但是,假定用户输入以下内容:

Redmond'; drop table OrdersTable--

此时,脚本将组成以下查询:

1 SELECT * FROM OrdersTable WHERE ShipCity = 'Redmond';drop table OrdersTable--'

分号 (;) 表示一个查询的结束和另一个查询的开始。双连字符 (--) 指示当前行余下的部分是一个注释,应该忽略。如果修改后的代码语法正确,则服务器将执行该代码。SQL Server 处理该语句时,SQL Server 将首先选择 OrdersTable 中的所有记录(其中 ShipCity 为 Redmond)。然后,SQL Server 将删除 OrdersTable。

只要注入的 SQL 代码语法正确,便无法采用编程方式来检测篡改。因此,必须验证所有用户输入,并仔细检查在您所用的服务器中执行构造 SQL 命令的代码。本主题中的以下各部分说明了编写代码的佳做法。

下面就介绍一下常用的几种防止sql注入的方法:

相关文章