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

为了对应面试,再看一下

怎样防止注入,

可以过滤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. Visual Studio 2010 使用 Git Extensions 连接 google code

    下载最新版本 Git Extensions http://code.google.com/p/gitextensions/downloads/list Git Extensions 2.46 Wind ...

  2. ida plug-in helloworld

    #include <ida.hpp> #include <idp.hpp> #include <loader.hpp> #include <kernwin.h ...

  3. js 实现纯前端将数据导出excel

    通过将json遍历进行字符串拼接,将字符串输出到csv文件,输出的文件不会再是html类型的文件而是真正的csv文件,代码如下 <html> <head> <p styl ...

  4. Servlet实现的三种方法

    (1)方法一: //这是第一个实现servlet的方法.使用时限servlet接口的方法来实现,使用的时候须要引用servlet-api.jar package com.lc; import java ...

  5. 【采集层】Kafka 与 Flume 如何选择(转)

    原文链接:[采集层]Kafka 与 Flume 如何选择 采集层 主要可以使用Flume, Kafka两种技术. Flume:Flume 是管道流方式,提供了很多的默认实现,让用户通过参数部署,及扩展 ...

  6. 数学图形(2.26) 3D曲线结

    我收集的几种曲线结 knot(huit) #http://www.mathcurve.com/courbes3d/noeuds/noeudenhuit.shtml vertices = 1000 t ...

  7. go语言基础之 if else的使用

    一.if_else 示例1: package main //必须有一个main包 import "fmt" func main() { a := 11 if a == 10 { f ...

  8. Glide Picasso Fresco UIL 图片框架 缓存 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. SQL 服务没有及时响应启动或控制请求”的解决方法

        解决方法很简单:卸载删除跟IIS相关的几个漏洞安全更新补丁即可,包括KB939373.KB2290570和KB2124261.卸载微软安全更新补丁的方法:打开控制面板的“添加删除程序”面板,勾 ...

  10. 标准C++类std::string的内存共享和Copy-On-Write技术

    标准C++类std::string的  内存共享和Copy-On-Write技术 陈皓 1. 概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是 ...