一.Sql注入实例

 using System;
 using System.Collections.Generic;
 using System.Data;
 using System.Data.SqlClient;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 namespace ConsoleApp5
 {
     class Program
     {
         static void Main(string[] args)
         {
             //创建连接字符串
             SqlConnectionStringBuilder strConn = new SqlConnectionStringBuilder();
             strConn.DataSource = "DESKTOP-0MBGCKA\\SQL2016";
             strConn.InitialCatalog = "Login";
             strConn.IntegratedSecurity = true;
             using (SqlConnection conn = new SqlConnection(strConn.ConnectionString))
             {
                 Console.WriteLine("请输入用户名:");
                 var username = Console.ReadLine();
                 Console.WriteLine("请输入密码:");
                 var password = Console.ReadLine();
                 try
                 {
                     string strSql = "select count(*) from users where (name='" + username + "') and (word='" + password + "')";
                     SqlCommand cmd = new SqlCommand(strSql, conn);
                     conn.Open();
                     int row = (int)cmd.ExecuteScalar();
                     )
                     {
                         Console.WriteLine("登陆成功");
                     }
                     else
                     {
                         Console.WriteLine("登录失败");
                     }
                 }
                 catch (Exception ex)
                 {
                     Console.WriteLine("\nError:\n{0}", ex.Message);
                 }
             }
             Console.Read();
         }
     }
 }

Sql注入的原理:通过单引号破坏Sql语句的结构,从而使得输入的内容能够被当做Sql语句执行

二.Parameter对象

防止Sql注入的原理:将输入的内容作为字符串处理,不能够破坏Sql语句的结构,使得输入内容不能被当做Sql语句执行

实例:

 using System;
 using System.Collections.Generic;
 using System.Data;
 using System.Data.SqlClient;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 namespace ConsoleApp5
 {
     class Program
     {
         static void Main(string[] args)
         {
             //创建连接字符串
             SqlConnectionStringBuilder strConn = new SqlConnectionStringBuilder();
             strConn.DataSource = "DESKTOP-0MBGCKA\\SQL2016";
             strConn.InitialCatalog = "Login";
             strConn.IntegratedSecurity = true;
             using (SqlConnection conn = new SqlConnection(strConn.ConnectionString))
             {
                 Console.WriteLine("请输入用户名:");
                 var username = Console.ReadLine();
                 Console.WriteLine("请输入密码:");
                 var password = Console.ReadLine();
                 try
                 {
                     SqlParameter[] paras = new SqlParameter[] {
                         ),
                         )
                     };
                     paras[].Value = username;
                     paras[].Value = password;
                     string strSql = "Select count(*) from users where name= @username and word= @password";
                     SqlCommand cmd = new SqlCommand(strSql, conn);
                     cmd.Parameters.Add(paras[]);
                     cmd.Parameters.Add(paras[]);
                     conn.Open();
                     int row = (int)cmd.ExecuteScalar();
                     )
                     {
                         Console.WriteLine("登录成功");
                     }
                     else
                     {
                         Console.WriteLine("登录失败");
                     }
                 }
                 catch (Exception ex)
                 {
                     Console.WriteLine("\nError:\n{0}", ex.Message);
                 }
             }
             Console.ReadLine();
         }
     }
 }

Asp.net之Sql注入与Parameter对象的更多相关文章

  1. SQL注入原理二

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多. 但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候 ,没有对用户输入数据的合法性进行判断,使应用程序存 ...

  2. SQL注入专题

    SQL注入专题--整理帖 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被 ...

  3. (转载)ASP网站如何防止注入漏洞攻击

    SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如 果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉.但 ...

  4. SQL注入(一) - 入门篇

    什么是SQL注入 可能大家还不是对SQL注入这个概念不是很清楚,简单地说,SQL注入就是攻击者通过正常的WEB页面,把自己SQL代码传入到应用程序中,从而通过执行非程序员预期的SQL代码,达到窃取数据 ...

  5. SQL注入攻击三部曲之入门篇

    SQL注入攻击三部曲之入门篇 服务器安全管理员和攻击者的战争仿佛永远没有停止的时候,针对国内网站的ASP架构的SQL注入攻击又开始大行其道.本篇文章通过SQL注入攻击原理引出SQL注入攻击的实施方法, ...

  6. (非原)SQL注入专题--整理帖 && like 语句拼sql 如何防止注入攻击。

    原地址:blog.csdn.net/lvjin110/article/details/28697695 like 语句拼sql 如何防止注入攻击?http://bbs.csdn.net/topics/ ...

  7. PHP SQL注入的防范

    说到网站安全就不得不提到SQL注入(SQL Injection),如果你用过ASP,对SQL注入一定有比较深的理解,PHP的安全性相对较高,这是因为MYSQL4以下的版本不支持子语句,而且当php.i ...

  8. MySQL-注释-Navicat基本使用-复杂查询练习题-解题思路-pymysql操作数据库-SQL注入-05

    目录 mysql语句注释 navicat 的基本使用 特色(个人总结) 与数据服务器建立连接 创建&打开数据库.表 创建 打开 修改操作表结构 修改表结构 查询修改操作表数据 基本语句对应的操 ...

  9. ASP.NET会员注册登录模块(MD5加密,Parameters防止SQL注入,判断是否注册)

    MD5加密,Parameters防止SQL注入: protected void btnLog_Click(object sender, EventArgs e)     {         //获取验 ...

随机推荐

  1. 剑指Offer 43. 左旋转字符串 (字符串)

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=&quo ...

  2. 王者荣耀交流协会第5次Scrum立会

    开会时间:2017年10月31日下午18:00-18:31  共计31分钟 开会地点:一食堂二楼靠近窗户倒数第四排 今日完成工作进度: 王超同学完成了将生成饼状图原型整合到程序中 立会内容: 添加了新 ...

  3. QT | QT MSVC 2015 + VS 2015开发环境配置及GIT设置

    1.下载: 所有Qt版本的下载地址: http://download.qt.io/archive/qt/ 实际使用了http://download.qt.io/archive/qt/5.7/5.7.1 ...

  4. A Language Modeling Approach to Predicting Reading Difficulty-paer

    Volume:Proceedings of the Human Language Technology Conference of the North American Chapter of the ...

  5. linux下安装mysql解决乱码、时间差、表的大小写问题

    编辑vi /etc/mysql/my.cnf,有的则是:/etc/my.cnf,加入 [client]default-character-set=utf8mb4 [mysql]default-char ...

  6. 安装ucenter以及单点实现

    1.下载ucenter包 最好是utf-8格式2.解压得到4个安装包 3.1)新建一个站点c 把upload中的所有文件复制到站点根目录下中2)访问出现 Please click here to in ...

  7. MyCat配置详解

    MyCAT 配置解析 server.xml Mycat的配置文件,设置账号.参数等schema.xml Mycat对应的物理数据库和数据库表的配置rule.xml Mycat分片(分库分表)规则 一 ...

  8. 寒假作业pta3

    某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利 ...

  9. python中时间、日期、时间戳的转换

    1.简介 在编写代码时,往往涉及时间.日期.时间戳的相互转换. 2.示例 # 引入模块 import time, datetime 2.1 str类型的日期转换为时间戳 # 字符类型的时间 tss1 ...

  10. Docker组件与元素(三)

    说明:         这篇博文是根据国外的另一篇总结而来,第一个链接为原文,第二个为译文,第三个有几个图挺好           http://blog.flux7.com/blogs/docker ...