什么是SQL Server上的SQL注入攻击?我们怎样才能阻止它们呢?

时间:2015-03-03 09:42:02

标签: sql asp.net sql-server

SQL Server上的SQL注入攻击是什么?我们怎样才能防止这种情况?

2 个答案:

答案 0 :(得分:0)

  

SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中将恶意SQL语句插入到输入字段中以便执行(例如,将数据库内容转储给攻击者)。

http://en.wikipedia.org/wiki/SQL_injection

如何:保护ASP.NET中的SQL注入

https://msdn.microsoft.com/en-us/library/ff648339.aspx

https://msdn.microsoft.com/en-us/magazine/cc163917.aspx

以下是一些提示:

  • 永远不要信任用户输入。

  • 始终使用参数化存储过程。

  • 始终对用户输入进行编码/解码。

  • 不要编写内联查询。

  • 始终在客户端和方面验证特殊字符(<,>)的用户输入 服务器端

https://msdn.microsoft.com/en-us/library/hh882339%28v=vs.110%29.aspx

http://www.asp.net/whitepapers/request-validation

答案 1 :(得分:0)

在简单语言中,SQLi或SQL注入攻击是使应用程序将数据视为命令的攻击。例如,假设您有一个使用以下SQL语句的身份验证系统:

SELECT * 
FROM userlist 
WHERE name ='" + username + "';

现在,请说攻击者输入以下用户名:

username = ' OR '1'='1

这将创建一个如下所示的查询:

SELECT * 
FROM userlist 
WHERE username=' ' OR '1'='1';

由于OR条件始终评估为true,因此由于查询的结果而绕过身份验证将始终返回有效响应。 这是一个基本的SQLi攻击。您可以组合多个查询,例如:

DROP TABLE userlist;

以下列方式将附加原始查询:

SELECT * 
FROM userlist 
WHERE username=' ' OR '1'='1';DROP TABLE userlist;

将删除名为' userlist'的表格。来自数据库。

希望有所帮助。