一.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. Sql Server索引重建

    公司线上数据有几千万数据,有时候索引碎片会导致索引达不到我们的预期查询效率,这个时候将索引重建将会提升一定效率,不过重建的时候一定得晚上用户少的时候,索引重建需要一定时间. 直接贴自动重建索引脚本吧 ...

  2. 近期面试总结(Android)

    关于近期面试总结(2018年下半年) 有些是老生常谈有些是没有遇到的. 1.HTTP和HTTPS的区别 HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为 ...

  3. 剑指Offer 13. 调整数组顺序使奇数位于偶数前面 (数组)

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 题目地址 https ...

  4. Canvas名侦探柯南-canvas练习

    var canvas=document.getElementById("canvas"); var ctx=canvas.getContext("2d"); / ...

  5. 导入maven项目导入依赖不会报错,但使用的jar会标红

    方法1: 1.通过编译找到报错的jar; 2.在 repository找到此jar,一般未下载完大小为1k我的是这样(); 3.删除未下载完全的jar,在项目上执行maven reimport会重新下 ...

  6. matplotlib.pyplot展示MNIST图片

    import torch import torch.utils.data as Data import torchvision import torchvision.transforms as tra ...

  7. Appium介绍及工作原理

    一.Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriver的 ...

  8. hsdfz -- 6.18 -- day3

    第三次被hn菜和hn话支配…… 相比起前两天好一点,但是由于前面时间安排的太散(睡着了……)导致c题DP差一点肝出来(所以最后没有…… 恩就算肝出来DP也只有30分,这次好歹是有DP思路了,继续康复吧 ...

  9. hsdfz -- 6.16 -- day1

    恩这回不写游记了 按照老师要求记录今天的心里路程:这题似乎可做期望得分150->日部分分似乎不是很显然->a题似乎是结论题,大力猜一波结论->过不了样例,先看b题->b题动态树 ...

  10. python3中的编码

    python2字符串编码存在的问题: 使用 ASCII 码作为默认编码方式,对中文处理不友好 把字符串分为 unicode 和 str 两种类型,将unicode作为唯一内码,误导开发者 python ...