Sql server注入简单认识
登录界面常常会涉及到敏感关键字的注入
为了对应面试,再看一下
怎样防止注入,
可以过滤SQL需要参数中的敏感字符(忽略大小写)
public static string Split(string inputString) //防止SQL注入方法
{
inputString = inputString.Trim();
inputString = inputString.Replace("'","");
inputString = inputString.Replace(";--", "");
inputString = inputString.Replace("--", "");
inputString = inputString.Replace("=", "");
//and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join|count|*|%|union 等待关键字过滤
//不要忘记为你的用户名框,密码框设定 允许输入的最多字符长度 maxlength的值哦,这样他们就无法编写太长的东西来再次拼成第一次过滤掉的关键字 如 oorr一次replace过滤后又成了 or 喔。
inputString = inputString.Replace("and", "");
inputString = inputString.Replace("exec", "");
inputString = inputString.Replace("insert", "");
inputString = inputString.Replace("select", "");
inputString = inputString.Replace("delete", "");
inputString = inputString.Replace("update", "");
inputString = inputString.Replace("chr", "");
inputString = inputString.Replace("mid", "");
inputString = inputString.Replace("master", "");
inputString = inputString.Replace("or", "");
inputString = inputString.Replace("truncate", "");
inputString = inputString.Replace("char", "");
inputString = inputString.Replace("declare", "");
inputString = inputString.Replace("join", "");
inputString = inputString.Replace("count", "");
inputString = inputString.Replace("*", "");
inputString = inputString.Replace("%", "");
inputString = inputString.Replace("union", "");
return inputString;
}
#region 过滤SQL,所有涉及到输入的用户直接输入的地方都要使用
/// <summary>
/// 过滤SQL,所有涉及到输入的用户直接输入的地方都要使用。
/// </summary>
/// <param name="text">输入内容</param>
/// <returns>过滤后的文本</returns>
public static string filterSQL(string text)
{
text = text.Replace("'", "''");
text = text.Replace("{", "{");
text = text.Replace("}", "}"); return text;
}
#endregion
#region 过滤SQL,将SQL字符串里面的(')转换成(''),再在字符串的两边加上(')
/// <summary>
/// 将SQL字符串里面的(')转换成(''),再在字符串的两边加上(')。
/// </summary>
/// <param name="text">输入内容</param>
/// <returns>过滤后的文本</returns>
public static String GetQuotedString(String text)
{
return ("'" + filterSQL(text) + "'");
}
#endregion
防注入参数化过程实例:
public static void Paramter(string getdataSql, string template, object parameters)
{
if (!string.IsNullOrEmpty(getdataSql))
{
CallContext.SetData(getdataSql, new KeyValuePair<string, object>(template, parameters));
}
} private long ExecuteScalar(string sql)
{
using (
IDbConnection dbConnection =
new SqlConnection(_unitOfWork.DbConnectionString))
{
try
{
dbConnection.Open();
var command = dbConnection.CreateCommand();
command.CommandText = sql;
command.CommandType = CommandType.Text;
object obj = command.ExecuteScalar();
long result = default(long);
if (null != obj)
{
result = Convert.ToInt64(obj);
}
return result;
}
finally
{
dbConnection.Close();
}
}
}

Sql server注入简单认识的更多相关文章
- SQL Server里简单参数化的痛苦
在今天的文章里,我想谈下对于即席SQL语句(ad-hoc SQL statements),SQL Server使用的简单参数化(Simple Parameterization)的一些特性和副作用.首先 ...
- Sql server注入一些tips
sql server环境测试: 几个特性: 1.sql server兼容性可以说是最差的. 举例: select x from y where id=1 字符串查询 select x from y w ...
- 第三篇——第二部分——第一文 SQL Server镜像简单介绍
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/DBA_Huangzj/article/details/26951563 原文出处:http://bl ...
- Perl/C#连接Oracle/SQL Server和简单操作
连接数据库是一个很常见也很必须的操作.先将我用到的总结一下. 1. Perl 连接数据库 Perl 连接数据库的思路都是: 1)使用DBI模块: 2)创建数据库连接句柄dbh: 3)利用dbh创建语句 ...
- SQL Server注入
1.利用错误消息提取信息 1.1 枚举当前表与列 --' 抛出错误:选择列表中的列 'users.id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中. 发现表名为 'users',存 ...
- Hangfire实战(一)------Hangfire+SQL Server实现简单的任务调度
Hangfire:一个开源的任务调度框架 开发环境:VS2017,SQL Server 2012,.NET Framework 4.5 项目类型:控制台应用程序 1.在vs的程序包控制台中为项目添加H ...
- Sql Server事务简单用法
var conStr = "server=localhost;database=Data;user=sa;pwd=123456"; using (var connection = ...
- Sql Server Job 简单使用
http://www.cnblogs.com/zerocc/p/3400529.html(转载) use msdb EXEC sp_add_job @job_name = 'tk_bakdata' ...
- springmvc+mybatis+sql server实现简单登录功能
一.源码: 1.Users.java package com.login.entity; import java.io.Serializable; public class Users impleme ...
随机推荐
- wpf 分别用前台和后台 两种方法 绘制矩形 填充
xaml: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft ...
- localhost与127.0.0.1的区别 2
localhost与127.0.0.1的区别localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析.看来这个 ...
- VS收集插件
有空再做细细解说,大部分童鞋应该都在用1.Achievements这个就是传说中的VS成就插件了,一边编程一边解锁成就 2.Spell Checker拼写检查插件,这个插件能够实时帮你检查注释或字符串 ...
- Maven配置浅析
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- 对开源库使用 AutoCAD 文件格式[转]
https://www.ibm.com/developerworks/cn/opensource/os-autocad/ 对开源库使用 AutoCAD 文件格式 读取 DWG 和 DXF 文件格式 C ...
- 如何从头开始确定虚拟SharePoint服务器场的配置(compute resource, network和storage)
让我们来设想一下, 假设你被上级要求设计一个SharePoint场, 用于满足自己公司的需求. 那么, 你会怎么做呢? 首先, 摆在你面前的是一系列的问题: 1. 用实体机搭建还是选用虚拟机平台? ...
- 超链接的禁用属性Disabled了解
可以设置超链接的Disabled属性的true 和 false来确定超链接是不是能点击 例如: <a herf='http://www.baidu.com' onclick='return cl ...
- 转载 C++实现的委托机制
转载 C++实现的委托机制 1.引言 下面的委托实现使用的MyGUI里面的委托实现,MyGUI是一款强大的GUI库,想理解更多的MyGUI信息,猛击这里http://mygui.info/ 最终的代码 ...
- Android实战简易教程-第二十八枪(基于Bmob实现头像图片设置和网络上传功能!)
上一篇我们介绍了怎样由uri转换成String ,本文就用到了上篇文章的方法.以下我们介绍一下怎样设置头像后将头像图片上传到云端的方法,本文基于Bmob提供的服务. 看一下代码:(布局文件和前两篇文章 ...
- android学习的网站收集
1. http://mob.com/#/index 提供分享等统一解决方案 2. http://bbs.apkbus.com/explore/ 这个类似的quroa问答模块,覆盖不错.就是人气,稍差. ...