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();
由于存储过程是数据库预编译的,执行效率高,推荐采用。

浙公网安备 33010602011771号