对于网站的安全性,是每个网站开发者和运营者最关心的问题。网站一旦出现漏洞,那势必将造成很大的损失。为了提高网站的安全性,首先网站要防注入。

下面我们给大家介绍C#防止sql注入的几种方法:

方法一:

在Web.config文件下面增加一个如下标签:< appSettings>

< add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" />

< /appSettings>

其中key是 < saveParameters>后面的值为”OrderId-int32”等,其中”-“前面表示参数的名称比如:OrderId,后面的int32表示数据类型。

方法二:

在Global.asax中增加下面一段:protected void Application_BeginRequest(Object sender, EventArgs e){

String[] safeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString()。Split(',');

for(int i= 0 ;i < safeParameters.Length; i++){

String parameterName = safeParameters[i].Split('-')[0];

String parameterType = safeParameters[i].Split('-')[1];

isValidParameter(parameterName, parameterType);

}

}

public void isValidParameter(string parameterName, string parameterType){

string parameterValue = Request.QueryString[parameterName];

if(parameterValue == null) return;

if(parameterType.Equals("int32")){

if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx");

}

else if (parameterType.Equals("USzip")){

if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");

}

else if (parameterType.Equals("email")){

if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");

}

}

方法三:

使用字符串过滤类/** < summary>

/// 处理用户提交的请求

/// < /summary>

public static void StartProcessRequest()

{

// System.Web.HttpContext.Current.Response.Write("< script>alert('dddd');< /script>");

try

{

string getkeys = "";  //string sqlErrorPage = System.Configuration.ConfigurationSettings.AppSettings["CustomErrorPage"].ToString();

if (System.Web.HttpContext.Current.Request.QueryString != null)

{

for(int i=0;i< System.Web.HttpContext.Current.Request.QueryString.Count;i++)  {

getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i];  if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys],0))

{

//System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+"?errmsg=sqlserver&sqlprocess=true");

System.Web.HttpContext.Current.Response.Write("< script>alert('请勿非法提交!');history.back();< /script>");

System.Web.HttpContext.Current.Response.End();

}

}

}

if (System.Web.HttpContext.Current.Request.Form != null)

{

for(int i=0;i< System.Web.HttpContext.Current.Request.Form.Count;i++)  {

getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i];  if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys],1))

{

//System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+"?errmsg=sqlserver&sqlprocess=true");

System.Web.HttpContext.Current.Response.Write("< script>alert('请勿非法提交!');history.back();< /script>");

System.Web.HttpContext.Current.Response.End();

}

}

}

}

catch

{

// 错误处理: 处理用户提交信息!

}

}

/** < summary>

/// 分析用户请求是否正常

/// < /summary>

/// < param name="Str">传入用户提交数据< /param>

/// < returns>返回是否含有SQL注入式攻击代码< /returns>

private static bool ProcessSqlStr(string Str,int type)

{

string SqlStr;  if(type == 1)

SqlStr = "exec |insert |select |delete |update |count |chr |mid |master |truncate |char |declare ";  else

SqlStr = "'|and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare";  bool ReturnValue = true;  try

{

if (Str != "")

{

string[] anySqlStr = SqlStr.Split('|');

foreach (string ss in anySqlStr)

{

if (Str.IndexOf(ss)>=0)

{

ReturnValue = false;  }

}

}

}

catch

{

ReturnValue = false;  }

return ReturnValue;  }

#endregion  }

}

相关视频教程推荐:《C#教程》

c语言 防止sql注入,c#如何防止sql注入?相关推荐

  1. SQL注入8之其他类型注入

    免责声明 该文章仅用于信息防御技术的交流和学习,请勿用于其他用途: 在未得到网站授权前提下,禁止对政府.事业单位.企业或其他单位网站及系统进行渗透测试:技术是把双刃剑,请遵纪守法,做一名合格的白帽子安 ...

  2. sql注释符注入防御_WAF的SQL注入绕过手段和防御技术

    一.关于SQL注入 SQL注入是一种常见的入侵WEB应用的手法.SQL注入是利用应用系统的编程漏洞和SQL语言的语法特征,改变原始的SQL语句执行逻辑而产生的. 攻击者向Web应用发送精心构造的输入数 ...

  3. SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用

    Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...

  4. java sql注入 正则表达式_Java防止SQL注入(转)

    一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...

  5. SQL注入原理及预防SQL注入的方法

    网络安全成为了现在互联网的焦点,这也恰恰触动了每一位用户的神经,担心网上的信息以及个人隐私遭到泄露.下面要为大家介绍的是SQL注入,对于sql注入,相信程序员都知道或者使用过,如果没有了解或完全没有听 ...

  6. 利用sql报错帮助进行sql注入

    我们可以利用sql报错帮助进行sql注入,这里以sql server 为例: sql查询时,若用group by子句时,该子句中的字段必须跟select 条件中的字段(非聚合函数)完全匹配,如果是se ...

  7. 反引号注入_什么是 SQL 注入?

    (给ImportNew加星标,提高Java技能) 转自:Java程序员联盟 文章目录: 何谓SQL注入? SQL数据库操作示例 SQL数据库注入示例 如何防止SQL注入问题 SQL数据库反注入示例 何 ...

  8. sql挂起小工具cleanup_SQL注入的攻防策略

    什么是SQL注入? SQL注入风险,是攻击者利用请求参数这样一个入口,拼接上自己的恶意SQL语句,根据错误提示信息.执行时长等信息,窥探数据库的库名.表结构和数据,拿到用户数据,再提权控制整个后端系统 ...

  9. sql注入及mybatis防止sql注入

    一.Sql 注入漏洞详解 Sql 注入产生原因及威胁: 当我们访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句.这种网站内部直接发送的Sql ...

  10. SQL注入攻击(SQL注入(SQLi)攻击)-报错注入

    页面没有显示位 , 但有数据库的报错信息时 , 可使用报错注入 报错注入是最常用的注入方式 , 也是使用起来最方便(我觉得)的一种注入方式 updatexml(1,'~',3); 第二个参数包含特殊字 ...

最新文章

  1. 3行代码就能可视化Transformer的奥义 | 开源
  2. shell脚本之case用法
  3. [PKUWC2018][loj2537]Minimax
  4. idea如何连接本地mysql_IDEA如何连接MYSQL
  5. Maven:repositories、distributionManagement、pluginRepositories中repository的区别
  6. 在CentOS/RHEL 7.X安装 EPEL repo 的方法 1
  7. ott盒子 MySQL_LAMP源码环境搭建与phpmyadmin的使用
  8. 测试版降级后软件还在么,2分钟告诉你如何将iOS测试版降级到正式版本
  9. 测试过程中如何解决测试账号问题
  10. 微型计算机初级证书,什么是计算机初级证书
  11. antd源码解读(6)- Affix
  12. 上市公司商誉减值损失数据(2007-2020年)
  13. 《metasploit The PenetrationTester's Guide》读书笔记v2
  14. 怎么把PDF文件拆分,PDF拆分软件怎么操作
  15. XTU 1249 Rolling Variance
  16. Codeforces 1635 E. Cars 二分图+拓扑排序
  17. DSP_TMS320F28377D_ADC学习笔记
  18. manjaro 显卡驱动
  19. POJ 2455 dinic
  20. NodeMCU开发板详解

热门文章

  1. 【BP数据预测】基于matlab蝙蝠算法优化BP神经网络数据预测【含Matlab源码 1379期】
  2. 【SVM预测】基于蝙蝠算法改进SVM实现数据分类
  3. UE4开发工具 - COOKBOOK
  4. 计算机思维概述ppt,常见的第一讲 计算思维概述.ppt
  5. 信贷风控四:高校地址自动化识别
  6. 使用Python绘制淘宝商品评论词云图
  7. dea模型java实例_大水计划之DEA JAVA
  8. TTL和CMOS解析
  9. android 腾讯地图demo,腾讯地图调用Demo
  10. C#反混淆脱壳工具de4dot的使用(转)