C#和SQl 注入字符串的攻击 和 防止注入字符转的攻击
--SQl中
--建立ren的数据库,插入一条信息
create database ren
go
use ren
go
create table xinxi
(
code nvarchar(20) primary key,--编号
name nvarchar(50)--名字
)
insert into xinxi values('','zhangsan')
for (; ; )
{ bool b = false;//利用中间变量
Console.Write("请输入要修改的编号:");
string no = Console.ReadLine();
//查询展示
SqlConnection zhancnn = new SqlConnection("server=.;database=ren;user=sa;pwd=123");//连接
//操作的语句
SqlCommand zhancmd = zhancnn.CreateCommand();
zhancmd.CommandText = "select * from xinxi where code='" + no + "'";
//执行操作的语句
zhancnn.Open();
SqlDataReader ss = zhancmd.ExecuteReader();
if (ss.HasRows)//数据库中是否有要修改的数据
{
b = true;
}
zhancnn.Close();
if (b == true)//如果有要修改的数据
{ Console.Write("找到【" + no + "】的信息,请输入要修改的名字:");
string mingzi = Console.ReadLine();
zhancmd.CommandText = "update xinxi set name='"+mingzi+"' where code='"+no+"'";
zhancnn.Open();
zhancmd.ExecuteNonQuery();
zhancnn.Close();
Console.WriteLine("修改完毕!");
break;
}
else//如果没有要修改的数据
{
Console.WriteLine("数据库中没有该条信息,请输入正确的编码!!");
} }
Console.ReadLine();
执行时,,注意,我就要输入了:
然后查询数据库,查询全部,就成为了
为了防止这种注入文字攻击,我们就需要:
//C#中 for (; ; )
{ bool b = false;//利用中间变量
Console.Write("请输入要修改的编号:");
string no = Console.ReadLine();
//查询展示
SqlConnection zhancnn = new SqlConnection("server=.;database=ren;user=sa;pwd=123");//连接
//操作的语句
SqlCommand zhancmd = zhancnn.CreateCommand();
zhancmd.CommandText = "select * from xinxi where code='" + no + "'";
//执行操作的语句
zhancnn.Open();
SqlDataReader ss = zhancmd.ExecuteReader();
if (ss.HasRows)//数据库中是否有要修改的数据
{
b = true;
}
zhancnn.Close();
if (b == true)//如果有要修改的数据
{ Console.Write("找到【" + no + "】的信息,请输入要修改的名字:");
string mingzi = Console.ReadLine();
zhancmd.CommandText = "update xinxi set name=@mingzi where code=@no;";//@变量名:占位符。注意:name=@mingzi没有引号
zhancmd.Parameters.Clear();//必须先清空里面所有内容
zhancmd.Parameters.Add("@mingzi",mingzi);//类似哈希表。第一个值随便取,必须跟上边一致;第二个是变量
zhancmd.Parameters.Add("@no",no);
zhancnn.Open();
zhancmd.ExecuteNonQuery();
zhancnn.Close();
Console.WriteLine("修改完毕!");
break;
}
else//如果没有要修改的数据
{
Console.WriteLine("数据库中没有该条信息,请输入正确的编码!!");
} }
Console.ReadLine();
//如果在执行窗口输入上跟上次一样的内容,那么输出的结果就是把”那句注入的代码“和”要改的name“ 作为一整个字符串进行处理。
C#和SQl 注入字符串的攻击 和 防止注入字符转的攻击的更多相关文章
- 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞
目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...
- WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等
核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Websh ...
- SQL注入测试平台 SQLol -2.SELECT注入测试
前面,我们已经安装好了SQLol,打开http://localhost/sql/,首先跳转到http://localhost/sql/select.php,我们先从select模块进行测试. 一条完成 ...
- 【sql注入】简单实现二次注入
[sql注入]简单实现二次注入 本文转自:i春秋社区 测试代码1:内容详情页面 [PHP] 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 1 ...
- Sql 注入详解:宽字节注入+二次注入
sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...
- C# 过滤sql特殊字符串方法
1. /// <summary> /// 过滤不安全的字符串 /// </summary> /// <param name="Str" ...
- [转]SQL Server字符串处理函数大全
select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不 ...
- MSSQL Server数据库的四种连接方法和sql连接字符串
MSSQL Server数据库的四种连接方法和sql连接字符串 分类: [ 03 ] C#(131) [ 07 ] SQL Server(68) [ 01 ] .NET(189) 今天用SQL Ser ...
- sql sever 字符串函数
SQL Server之字符串函数 以下所有例子均Studnet表为例: 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student ...
- SQL判断字符串里不包含字母
Oracle: 方法一:通过To_Number 函数异常来判断,因为这个函数在转换不成功的时候是报错,所以只能用存储过程包装起来. CREATE OR REPLACE FUNCTION Is_Numb ...
随机推荐
- [转] git 常用命令
查看.添加.提交.删除.找回,重置修改文件 git help <command> # 显示command的help git show # 显示某次提交的内容 git show $id gi ...
- ActionController::InvalidAuthenticityToken 解决办法(第二种尤其有效)
第一种: Ror代码 class FooController < ApplicationController protect_from_forgery :except => ...
- ofbiz进击 第五节。 --OFBiz配置之[general.properties] 共有属性的分析(含email)
文件内容如下 unique.instanceId=ofbiz1 #--为JobManger方法提供实例的ID(必须小于20个字符) currency.uom.id.default=USD ...
- ArrayList和LinkList区别
ArrayList和LinkList区别 前者是数组的数据结构,后者是链表的数据结构 前者应用于排序和查找,后者应用于插入删除
- bzoj3437 小P的牧场
斜率优化dp 代码 #include<cstdio> #include<algorithm> using namespace std; typedef long long ll ...
- 深度解析 Java 内存原型
一.Java 虚拟机内存原型 寄存器:我们在程序中无法控制. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在 堆中. 堆:存放用 new 产生的数据. 静态域:存放在对象中用 ...
- SQL关于apply的两种形式cross apply和outer apply(转载)
SQL 关于apply的两种形式cross apply 和 outer apply apply有两种形式: cross apply 和 outer apply 先看看语法: <lef ...
- springmvc简述
Spring Web MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架,即使用了 MVC 架构模式的思想,将 web 层进行职责解耦,基于请求驱动指 ...
- sql server 2008 安装过程与创建建sql server登录用户
1.sql server 下载安装包路径:http://pan.baidu.com/s/1qWuzddq 2.安装过程图解教程 ,参照网址:http://jingyan.baidu.com/album ...
- 如何查看和停止Linux启动的服务
1. 查看Linux启动的服务chkconfig --list 查询出所有当前运行的服务chkconfig --list atd 查询atd服务的当前状态 2.停止所有服务并且在下次系统启动时不再启 ...