360鹰眼-更智能的Web安全监控系统

产品描述:

下一代web漏洞扫描器,她是一款硬件,包含:最全面的"爬出"引擎,不再需要收集资产清单,不再需要指定扫描时间,同步发现新上线业务漏洞

适用对象:

企业

价格服务:

目录价19.8万起
我了解,我要试用
高危高危

天方有声图书馆user_history.aspx文件SQL注入漏洞

WASC Threat Classification

发现时间:

2016-05-27

漏洞类型:

SQL注入

所属建站程序:

其他

所属服务器类型:

IIS

所属编程语言:

Asp.net

描述:

目标存在SQL注入漏洞。

1.SQL注入攻击就是攻击者通过欺骗数据库服务器执行非授权的任意查询过程。

+ 展开
危害:

被SQL注入后可能导致以下后果:

1.网页被篡改

2.数据被篡改

+ 展开
解决方案:

1、联系厂商升级

2、接入360网站卫士(http://wangzhan.360.cn/)等云WAF

3、安装服务器防护软件

4、自行修改代码进行参数过滤:

5.3过滤用户输入

将任何数据传给 SQL 查询之前,应始终先使用筛选技术来适当过滤。 这无论如何强调都不为过。 过滤用户输入可让许多注入缺陷在到达数据库之前便得到更正。

5.4将用户输入加引号

不论任何数据类型,只要数据库允许,便用单引号括住所有用户数据。

5.5 转义数据值

以下是保护 Web 应用程序免遭 SQL 注入攻击的两种可行方法:

5.1  使用存储过程,不用动态构建的 SQL 查询字符串。将参数传递给 SQL Server 存储过程的方式,可防止使用单引号和连字符。

以下是如何在ASP.NET 中使用存储过程的简单示例:

  ' Visual Basic example

  Dim DS As DataSet

  Dim MyConnection AsSqlConnection

  Dim MyCommand AsSqlDataAdapter

 

  Dim SelectCommand As String= "select * from users where username = @username"

  ...

  MyCommand.SelectCommand.Parameters.Add(NewSqlParameter("@username", SqlDbType.NVarChar, 20))

 MyCommand.SelectCommand.Parameters("@username").Value =UserNameField.Value

 

 

  // C# example

  String selectCmd ="select * from Authors where state = @username";

  SqlConnection myConnection =new SqlConnection("server=...");

  SqlDataAdapter myCommand =new SqlDataAdapter(selectCmd, myConnection);

 

 myCommand.SelectCommand.Parameters.Add(newSqlParameter("@username", SqlDbType.NVarChar, 20));

  myCommand.SelectCommand.Parameters["@username"].Value= UserNameField.Value;

5.2  您可以使用验证控件,将输入验证添加到“Web 表单”页面。验证控件提供适用于所有常见类型的标准验证的易用机制,例如,测试验证日期是否有效,或验证值是否在范围内,以及进行自定义编写验证的方法。此外,验证控件还可以使您能够完整定义向用户显示错误信息的方式。验证控件可搭配“Web 表单”页面的类文件中处理的任何控件使用,其中包括 HTML 和 Web 服务器控件。为了确保用户输入仅包含有效值,您可以使用以下其中一种验证控件:

5.2.1 “RangeValidator”:检查用户条目(值)是否在指定的上下界限之间。 您可以检查配对数字、字母字符和日期内的范围。

5.2.2 “RegularExpressionValidator”:检查条目是否与正则表达式定义的模式相匹配。 此类型的验证使您能够检查可预见的字符序列,如电子邮件地址、电话号码、邮政编码等中的字符序列。最后:验证控件不会阻止用户输入或更改页面处理流程;它们只会设置错误状态,并产生错误消息。程序员的职责是,在执行进一步的应用程序特定操作前,测试代码中控件的状态。有两种方法可检查用户输入的有效性: 1. 测试常规错误状态:在您的代码中,测试页面的 IsValid 属性。该属性会将页面上所有验证控件的 IsValid 属性值汇总(使用逻辑 AND)。如果将其中一个验证控件设置为无效,那么页面属性将会返回 false。 2. 测试个别控件的错误状态:在页面的“验证器”集合中循环,该集合包含对所有验证控件的引用。然后,您就可以检查每个验证控件的 IsValid 属性。

 

SQL 注入漏洞演示

如果你的网站服务器是Windows系统,建议使用"主机卫士"修复漏洞,点击下载
对该漏洞进行评论