sql注入

1、数据库权限控制,只给访问数据库的web应用功能所需的最低权限账号,不要用sa账号

MSSQL中一共8种权限:sysadmin, dbcreator, diskadmin, processadmin, serveradmin, setupadmin, securityadmin, bulkadmin

新建一个用户,服务器角色:public,用户角色成员身份:db_datareader,db_datawriter

在数据库属性-权限-用户的权限,具有exec(执行)的权限,这样就可以执行存储过程

2、参数化sql语句SqlParamenter

3、漏洞修复建议:前端过滤敏感字符,后端采用预编译来避免注入

预编译:

SqlConnection conn = new SqlConnection(txtConn);
        SqlCommand cmd = new SqlCommand("SearchContact", conn);  //存储过程名称为SearchContact
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);   //传入参数
        cmd.Parameters["@name"].Value = txtName.Text.Trim();

       由于存储过程是数据库预编译的,执行效率高,推荐采用。

posted @ 2016-08-04 13:23  wjl910  阅读(209)  评论(0)    收藏  举报