登录界面常常会涉及到敏感关键字的注入

为了对应面试,再看一下

怎样防止注入,

可以过滤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注入简单认识的更多相关文章

  1. SQL Server里简单参数化的痛苦

    在今天的文章里,我想谈下对于即席SQL语句(ad-hoc SQL statements),SQL Server使用的简单参数化(Simple Parameterization)的一些特性和副作用.首先 ...

  2. Sql server注入一些tips

    sql server环境测试: 几个特性: 1.sql server兼容性可以说是最差的. 举例: select x from y where id=1 字符串查询 select x from y w ...

  3. 第三篇——第二部分——第一文 SQL Server镜像简单介绍

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/DBA_Huangzj/article/details/26951563 原文出处:http://bl ...

  4. Perl/C#连接Oracle/SQL Server和简单操作

    连接数据库是一个很常见也很必须的操作.先将我用到的总结一下. 1. Perl 连接数据库 Perl 连接数据库的思路都是: 1)使用DBI模块: 2)创建数据库连接句柄dbh: 3)利用dbh创建语句 ...

  5. SQL Server注入

    1.利用错误消息提取信息 1.1 枚举当前表与列 --' 抛出错误:选择列表中的列 'users.id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中. 发现表名为 'users',存 ...

  6. Hangfire实战(一)------Hangfire+SQL Server实现简单的任务调度

    Hangfire:一个开源的任务调度框架 开发环境:VS2017,SQL Server 2012,.NET Framework 4.5 项目类型:控制台应用程序 1.在vs的程序包控制台中为项目添加H ...

  7. Sql Server事务简单用法

    var conStr = "server=localhost;database=Data;user=sa;pwd=123456"; using (var connection = ...

  8. Sql Server Job 简单使用

    http://www.cnblogs.com/zerocc/p/3400529.html(转载) use msdb EXEC sp_add_job @job_name =   'tk_bakdata' ...

  9. springmvc+mybatis+sql server实现简单登录功能

    一.源码: 1.Users.java package com.login.entity; import java.io.Serializable; public class Users impleme ...

随机推荐

  1. 解决office2007-安装程序找不到office.zh-cn\Setup.xml

    安装Microsoft Office Project Standard 2007时出现了小问题,经过百度google一番后才发现安装office2007与安装vs2008有着紧密的联系,参见:http ...

  2. DELPHI纤程的演示

    DELPHI纤程的演示 DELPHI7编译运行通过. 纤程实现单元: unit FiberFun; //Fiber(纤程测试Demo)//2018/04/11//QQ: 287413288 //参考 ...

  3. FIS3使用官方例子流程

    fis3 的常用例子:https://github.com/fex-team/fis3-demo git链接可在页面中获取替换下面的git链接: 例子准备: git clone https://git ...

  4. 纠正jQuery获取radio选中值的写法

    先看一段代码 <input type="radio" name="aaa" value="1" checked="true& ...

  5. Net设计模式实例之观察者模式

    一.观察者模式简介(Brief Introduction) 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化的时,会通知所有观察者对象,使他们能 ...

  6. mysql DATE_FORMAT(date, format) 函数

    DATE_FORMAT(date, format) 函数用法 DATE_FORMAT(date, format) 函数根据format字符串格式化date值. 1.把字符串转为日期格式 实例: SEL ...

  7. Git分布式开发之生成ssh公钥

    1.在Preferences>Network Connections>SSH2,切换至Key Management面板,点击 2.点击生成Genarate RSA Key,并修Commne ...

  8. 从头開始学 RecyclerView(六) LayoutManager

    前言 在前面的文章中.每一个演示样例,都使用了LayoutManager,毕竟它是RecyclerView必不可少的一部分. LayoutManager,顾名思义,就是『布局管理器』. 使用例如以下代 ...

  9. Spark Streaming:大规模流式数据处理的新贵(转)

    原文链接:Spark Streaming:大规模流式数据处理的新贵 摘要:Spark Streaming是大规模流式数据处理的新贵,将流式计算分解成一系列短小的批处理作业.本文阐释了Spark Str ...

  10. 高性能CSS

    避免使用@import 有两种方式加载样式文件,一种是link元素,另一种是CSS 2.1加入@import.而在外部的CSS文件中使用@import会使得页面在加载时增加额外的延迟.虽然规则允许在样 ...