2015-03-03 55 views

回答

0

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

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

如何:防止SQL注入在ASP.NET

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

+0

请将报价格式化为报价,因此很明显,内容是从列出的来源中提取的。 – Tanner 2015-03-03 09:53:02

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; 

它将从数据库中删除名为“用户列表”表。

希望有帮助。