一、正常的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;namespace MySqlOperation
{class Program{static void Main(string[] args){//Database指定数据库,Data Source指定本机ip,port指定端口号,user id指定用户名,password 指定密码,各属性之间用“;”进行分隔String connStr = "Database=test_connection;Data Source=127.0.0.1;port=3306;User Id=root;Password=123456";//建立连接,参数为连接的字符串,即ip地址、端口号、账号、密码MySqlConnection conn = new MySqlConnection(connStr);//打开连接conn.Open();String userName = "test";String passWord = "test";MySqlCommand cmd = new MySqlCommand("insert into user set userName='"+userName+"',passWord='"+passWord+"'",conn);cmd.ExecuteNonQuery();//关闭流conn.Close();                                                                   //关闭连接Console.ReadKey();                                                              //让程序暂停}}
}

正常的运行结果:

在表的最后增加了一个userName和passWord都为test的用户

二、异常代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;namespace MySqlOperation
{class Program{static void Main(string[] args){//Database指定数据库,Data Source指定本机ip,port指定端口号,user id指定用户名,password 指定密码,各属性之间用“;”进行分隔String connStr = "Database=test_connection;Data Source=127.0.0.1;port=3306;User Id=root;Password=123456";//建立连接,参数为连接的字符串,即ip地址、端口号、账号、密码MySqlConnection conn = new MySqlConnection(connStr);//打开连接conn.Open();String userName = "test";String passWord = "test'delete from user";MySqlCommand cmd = new MySqlCommand("insert into user set userName='"+userName+"',passWord='"+passWord+"'",conn);cmd.ExecuteNonQuery();//关闭流conn.Close();                                                                   //关闭连接Console.ReadKey();                                                              //让程序暂停}}
}

运行结果:

passWord中增加了sql命令,user表中的内容全部被删除掉了

三、解决办法:

将代码由

  String userName = "test";String passWord = "test';delete from user;";MySqlCommand cmd = new MySqlCommand("insert into user set userName='"+userName+"',passWord='"+passWord+"'",conn);

改为:

 String userName = "test";String passWord = "test';delete from user;";MySqlCommand cmd = new MySqlCommand("insert into user set userName=@un,passWord=@pwd", conn);cmd.Parameters.AddWithValue("un",userName);cmd.Parameters.AddWithValue("pwd", passWord);

其中un和pwd都是自己定义的,AddWithValue会将这两个参数仅仅作为参数传递

完整的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;namespace MySqlOperation
{class Program{static void Main(string[] args){//Database指定数据库,Data Source指定本机ip,port指定端口号,user id指定用户名,password 指定密码,各属性之间用“;”进行分隔String connStr = "Database=test_connection;Data Source=127.0.0.1;port=3306;User Id=root;Password=123456";//建立连接,参数为连接的字符串,即ip地址、端口号、账号、密码MySqlConnection conn = new MySqlConnection(connStr);//打开连接conn.Open();String userName = "test";String passWord = "test';delete from user;";//MySqlCommand cmd = new MySqlCommand("insert into user set userName='"+userName+"',passWord='"+passWord+"'",conn);MySqlCommand cmd = new MySqlCommand("insert into user set userName=@un,passWord=@pwd", conn);cmd.Parameters.AddWithValue("un",userName);cmd.Parameters.AddWithValue("pwd", passWord);cmd.ExecuteNonQuery();//关闭流conn.Close();                                                                   //关闭连接Console.ReadKey();                                                              //让程序暂停}}
}

运行后的结果:

解决sql注入问题(丛林战争项目)相关推荐

  1. mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...

    本文实例讲述了MySQL解决SQL注入的另类方法.分享给大家供大家参考,具体如下: 问题解读 我觉得,这个问题每年带来的成本可以高达数十亿美元了.本文就来谈谈,假定我们有如下 SQL 模板语句: se ...

  2. 使用过滤器解决SQL注入和跨站点脚本编制

    1 SQL注入.盲注 1.1 SQL注入.盲注概述 Web 应用程序通常在后端使用数据库,以与企业数据仓库交互.查询数据库事实上的标准语言是 SQL(各大数据库供应商都有自己的不同版本).Web 应用 ...

  3. python防止sql注入的方法_python解决sql注入以及特殊字符

    python往数据库插入数据, 基础做法是: cur=db.cursor() sql = "INSERT INTO test2(cid, author, content) VALUES (1 ...

  4. mysql5无法注入_MySQL解决SQL注入的另类方法详解_MySQL

    本文实例讲述了MySQL解决SQL注入的另类方法.分享给大家供大家参考,具体如下: 问题解读 我觉得,这个问题每年带来的成本可以高达数十亿美元了.本文就来谈谈,假定我们有如下 SQL 模板语句: se ...

  5. 解决SQL注入与XSS攻击

    最近接手之前同事的几个项目,公司利用扫描工具进行全项目扫描,发现了部分项目代码存在安全漏洞,所以需要进行项目代码修复以避免有人恶意攻击.这个任务自然而然的就落到我手上.在这里记录一下操作的过程. 扫描 ...

  6. ibatis解决sql注入问题 .

    最近看看了SQL注入的问题,这篇文章解决了ibatis如何防sql注入攻击,值得参考,转自http://blog.csdn.net/scorpio3k/article/details/7610973 ...

  7. SQL注入检测模块开源项目DRUID-SQL-WALL学习小结

    作为sql注入原理.sql注入检测.防御系列学习的第三篇.本文主要关注了抽象语法树ast在sql注入检测上的应用开发.以及开源项目druid-sql-wall的学习,希望能给研究这一领域的朋友带来一点 ...

  8. 026_jdbc-mysql-PrepareStatement解决sql注入

    1. 新建一个JDBCPrepareStatement工程, 使用我们之前的JDBCUtil.java和jdbc.properties属性文件 2. PreparedStatement对象相比较以前的 ...

  9. SQL注入-入门需了解项目

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 什么是SQL? 一.SQL注入 1.什么是SQL注入 2.SQL注入漏洞的原理是什么? 3.SQL注入漏洞产生的基本前提 4 ...

  10. 什么是SQL注入?怎么解决SQL注入?

    SQL注入就是一些攻击者把SQL命令插入到web表单的输入或者页面的url中,欺骗服务器执行恶意的SQL语句.在某些表单中,用户输入的内容直接用来构造或者影响动态SQL命令,或者作为存储过程的输入参数 ...

最新文章

  1. ArcGIS字段计算器 Field Calculator错误
  2. 程序员如何优雅度过一生的15个建议
  3. FreeMarker 语法
  4. 关于进程句柄 窗口句柄的关系
  5. 【并行计算-CUDA开发】GPGPU OpenCL/CUDA 高性能编程的10大注意事项
  6. spark读取kafka数据_解决Spark数据倾斜(Data Skew)的N种姿势
  7. VMware11.1.2+centOS7.4虚拟机联网问题并设置静态IP
  8. HTML期末网页设计——设计报告
  9. web测试和app测试的区别你知道吗?
  10. VM和CentOS的安装
  11. apkg格式怎么打开_win10系统怎么打开mdb文件
  12. ArcGIS表转EXCEL超出上限转换失败
  13. QuantLib 金融计算——基本组件之 ExchangeRate 类
  14. MM物料账在制品承担差异功能及配置
  15. Excel如何批量查询手机号码归属地
  16. es6面试题总结(一)
  17. AD19设置元件属性
  18. 计算机毕业设计之java+ssm基于web的医院门诊互联电子病历管理信息系统
  19. linux 获取优盘设备序列号变为小写再用MD5加密
  20. SQL Server 数据分区管理

热门文章

  1. Vue3 + TS 使用 element-plus 的Icon组件(包括动态路由菜单图标)
  2. Ubuntu——为软件创建菜单(桌面)图标的方法
  3. C语言:统计候选人的得票数
  4. linux下的c开发工具,4.3.2 Linux下的C开发工具
  5. Redis 的缓存策略
  6. 图神经网络 | (2) 图神经网络(Graph Neural Networks,GNN)综述
  7. 移动端--app,小程序,h5
  8. 助理工程师职称到底有没有用呢?一定要评吗?甘建二
  9. 字符编码与游戏中的字符边界检查
  10. multipartfile 后端怎么接受_精华 | 前端必看,一文教你读懂芯片后端报告!