Asp.net之Sql注入与Parameter对象
一.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对象的更多相关文章
- SQL注入原理二
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多. 但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候 ,没有对用户输入数据的合法性进行判断,使应用程序存 ...
- SQL注入专题
SQL注入专题--整理帖 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被 ...
- (转载)ASP网站如何防止注入漏洞攻击
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如 果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉.但 ...
- SQL注入(一) - 入门篇
什么是SQL注入 可能大家还不是对SQL注入这个概念不是很清楚,简单地说,SQL注入就是攻击者通过正常的WEB页面,把自己SQL代码传入到应用程序中,从而通过执行非程序员预期的SQL代码,达到窃取数据 ...
- SQL注入攻击三部曲之入门篇
SQL注入攻击三部曲之入门篇 服务器安全管理员和攻击者的战争仿佛永远没有停止的时候,针对国内网站的ASP架构的SQL注入攻击又开始大行其道.本篇文章通过SQL注入攻击原理引出SQL注入攻击的实施方法, ...
- (非原)SQL注入专题--整理帖 && like 语句拼sql 如何防止注入攻击。
原地址:blog.csdn.net/lvjin110/article/details/28697695 like 语句拼sql 如何防止注入攻击?http://bbs.csdn.net/topics/ ...
- PHP SQL注入的防范
说到网站安全就不得不提到SQL注入(SQL Injection),如果你用过ASP,对SQL注入一定有比较深的理解,PHP的安全性相对较高,这是因为MYSQL4以下的版本不支持子语句,而且当php.i ...
- MySQL-注释-Navicat基本使用-复杂查询练习题-解题思路-pymysql操作数据库-SQL注入-05
目录 mysql语句注释 navicat 的基本使用 特色(个人总结) 与数据服务器建立连接 创建&打开数据库.表 创建 打开 修改操作表结构 修改表结构 查询修改操作表数据 基本语句对应的操 ...
- ASP.NET会员注册登录模块(MD5加密,Parameters防止SQL注入,判断是否注册)
MD5加密,Parameters防止SQL注入: protected void btnLog_Click(object sender, EventArgs e) { //获取验 ...
随机推荐
- VS Code 工具配置和格式化
{ "onSave": true, "javascript": { "indent_size": 2, "indent_char& ...
- java库中具体集合
ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效地插入和删除操作的有序序列 ArrayDeque 一种用循环数组实现的双端队列 HashSet ...
- 手把手教你实现 Google 拓展插件(转自实验楼)
一.课程简介 1.1 实验介绍 本课程的实验环境由实验楼提供,Google 浏览器拓展的运行环境为 Google 浏览器.在本实验中,你将了解如何制作一个属于你自己的 Google 拓展插件. 课程实 ...
- Python3 字典 setdefault() 方法
Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值. dict.setdefault(key, default=None) k ...
- VirtualBox网络的Host-Only配置
创建host-only虚拟网卡 VBox管理器页面-管理-主机网络管理器,如果已经存在默认的虚拟网卡则下一步,如果不存在则创建一个虚拟网卡,不启用DHCP服务器,这里ip地址为192.168.137. ...
- Innodb中MySQL如何快速删除2T的大表
转自:http://database.51cto.com/art/201808/582324.htm OK,这里就说了.假设,你有一个表erp,如果你直接进行下面的命令: drop table erp ...
- mysql 计算两点经纬度之间的距离含具体sql语句
mysql距离计算,单位m,以及排序 lon 经度 lat 纬度 一般地图上显示的坐标顺序为,纬度在前(范围-90~90),经度在后(范围-180~180) 首先新建一张表,里面包含经纬度 SET F ...
- websocket简单理解
实现及原理 Websocket是一种在单个TCP连接上进行全双工通讯的协议. WebSocket 首先发起一个 HTTP 请求,在请求头加上 `Upgrade` 字段,该字段用于改变 HTTP 协议版 ...
- 2017-2018-2 20165312 实验四《Android程序设计》实验报告
2017-2018-2 20165312 实验四<Android程序设计>实验报告 一.安装Android Studio并进行Hello world测试和调试程序 安装Android St ...
- c# 泛型和IComparable<T>接口
泛型 因为我们在编程中想先不定义数据类型,只想先写逻辑,就可以使用Object类型, 这样我们的逻辑就适用于所有类型,但是,在运行中,Object类型的变量会需要 转换到对应类型,浪费资源,所有出现泛 ...