当前位置: 首页> 娱乐> 影视 > 深圳航空官网机票预订_动画设计专业介绍_app001推广平台官网_外贸是做什么的

深圳航空官网机票预订_动画设计专业介绍_app001推广平台官网_外贸是做什么的

时间:2025/7/11 18:34:39来源:https://blog.csdn.net/gjw3037109961/article/details/144621878 浏览次数:0次
深圳航空官网机票预订_动画设计专业介绍_app001推广平台官网_外贸是做什么的

一、sql注入风险及解决方案

SQL注入是指在事先定义好的SQL语句中注入额外的SQL语句,从此来欺骗数据库服务器的行为。

示例:制作会员登录功能。

二、防止sql注入解决方案

  • 使用参数化查询
  • 使用ORM框架 Entity Framework可以自动处理SQL查询的安全性

使用参数化查询

private void btLogin_Click(object sender, EventArgs e)
{// 定义数据库连接字符串string conStr = "server=.;database=adoNet;uid=sa;pwd=123456";    // 创建SqlConnection对象并初始化连接字符串SqlConnection conn = new SqlConnection(conStr);    // 打开数据库连接conn.Open();// 定义SQL查询语句,并使用参数化查询防止SQL注入string sql = " select * from Member where MemberAccount = @MemberAccount and MemberPwd = @MemberPwd";// 创建一个SqlDataAdapter对象,用于填充DataTableSqlDataAdapter adapter = new SqlDataAdapter(sql, conn);// 向SelectCommand中添加参数,将文本框中的值作为参数值传递adapter.SelectCommand.Parameters.Add(new SqlParameter("@MemberAccount", this.textAccount.Text));adapter.SelectCommand.Parameters.Add(new SqlParameter("@MemberPwd", this.textPwd.Text));// 创建一个新的DataTable实例DataTable dt = new DataTable();// 使用SqlDataAdapter的Fill方法填充DataTableadapter.Fill(dt);if (dt.Rows.Count > 0)           MessageBox.Show("登录成功");    else    MessageBox.Show("登录失败");}
string sql ="INSERT INTO Member (MemberAccount, MemberPwd, MemberName, MemberPhone)VALUES" +" (@MemberAccount ,@MemberPwd ,@MemberName ,@MemberPhone )";//****执行sql语句******SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Add(new SqlParameter("@MemberAccount", this.textAccount.Text));cmd.Parameters.Add(new SqlParameter("@MemberPwd", this.textPwd.Text));cmd.Parameters.Add(new SqlParameter("@MemberName", this.textName.Text));cmd.Parameters.Add(new SqlParameter("@MemberPhone", this.textIphone.Text));int code = cmd.ExecuteNonQuery();

三、封装DBHelper类

  • 代码重用
  • 提高可读性和可维护性
  • 遵循单一职责原则
  • 安全性参数化查询
  • 
    internal class DBHelper
    {// 连接字符串,包含服务器地址、数据库名称、用户名和密码public static string strConn = "server=.;database=adoNet;uid=sa;pwd=123456";// 数据库连接对象,用于与数据库建立连接public static SqlConnection conn = null;// 数据适配器,用于执行 SQL 命令并填充数据集public static SqlDataAdapter adp = null;/// <summary>/// 打开数据库连接/// </summary>public static void OpenConn(){if (conn == null){// 如果连接对象为空,则创建一个新的连接对象并打开连接conn = new SqlConnection(strConn);conn.Open();}if (conn.State == System.Data.ConnectionState.Closed){// 如果连接已关闭,则重新打开连接conn.Open();}if (conn.State == System.Data.ConnectionState.Broken){// 如果连接状态为断开,则先关闭再重新打开连接conn.Close();conn.Open();}}/// <summary>/// 准备 SQL 语句,包括打开数据库连接和创建数据适配器/// </summary>/// <param name="sql">要执行的 SQL 语句</param>public static void PrepareSql(string sql){OpenConn(); // 打开数据库连接adp = new SqlDataAdapter(sql, conn); // 创建数据适配器并设置 SQL 语句和连接对象}/// <summary>/// 设置 SQL 语句的参数/// </summary>/// <param name="paramenterName">参数名称</param>/// <param name="paramenterValue">参数值</param>public static void SetParamenter(string paramenterName, object paramenterValue){if (paramenterValue == null){// 如果参数值为 null,则将其转换为 DBNull.ValueparamenterValue = DBNull.Value;}// 添加参数到 SQL 命令中adp.SelectCommand.Parameters.Add(new SqlParameter(paramenterName, paramenterValue)); }/// 执行非查询 SQL 语句(如 INSERT、UPDATE、DELETE)public static int ExecNonQuery(){int count = adp.SelectCommand.ExecuteNonQuery(); // 执行 SQL 命令并返回受影响的行数conn.Close(); // 关闭数据库连接return count;}/// 执行查询 SQL 语句并返回数据表public static DataTable ExceQuery(){DataTable dt = new DataTable(); // 创建一个新的数据表adp.Fill(dt); // 使用数据适配器填充数据表return dt; // 返回数据表}// 执行查询 SQL 语句并返回 DataReader 对象//<returns>包含查询结果的 DataReader 对象</returns>public static SqlDataReader ExcuDataReader(){// 执行 SQL 命令并返回 DataReader 对象,同时设置关闭连接的行为return adp.SelectCommand.ExecuteReader(CommandBehavior.CloseConnection); }/// <summary>/// 执行查询 SQL 语句并返回单个值/// </summary>/// <returns>查询结果的第一个值</returns>public static Object ExecuteScalar(){Object obj = adp.SelectCommand.ExecuteScalar(); // 执行 SQL 命令并返回第一个值conn.Close(); // 关闭数据库连接return obj; // 返回查询结果}
    }

 

private void button1_Click(object sender, EventArgs e){   //准备sql语句string sql = "INSERT INTO Member (MemberAccount, MemberPwd, MemberName, MemberPhone)VALUES" +" (@MemberAccount ,@MemberPwd ,@MemberName ,@MemberPhone )";DBHelper.PrepareSql(sql);//传参数DBHelper.SetParamenter("@MemberAccount", this.textAcount.Text);DBHelper.SetParamenter("@MemberPwd", this.textPwd.Text);DBHelper.SetParamenter("@MemberName", this.textName.Text);DBHelper.SetParamenter("@MemberPhone", this.textIphone.Text);//执行DBHelper.ExecNonQuery();}

关键字:深圳航空官网机票预订_动画设计专业介绍_app001推广平台官网_外贸是做什么的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: