防SQL注入的最好实现方式是什么?

咨询区

  • LeonidasFett

我的问题是:如何在 C# 中是使用SQL防注入,我的模糊理解是可以通过限定应用程序接收的字段格式来实现最终目的,比如说:email字段只能接收email的格式,name字段不能输入特殊字符,以此类推,C#中应该也有对应的预定义方法。

这里想问大家有什么其他的思考。

回答区

  • Oliver

理论上你的做法是相对高效的,但是落地非常繁琐,其实你完全可以使用 SqlCommandSqlParameters[] 实现SQL的参数化查询,它是一种非常通用的解决方案,无需特定字段使用特定格式的方式,参考如下代码:

private static void UpdateDemographics(Int32 customerID,string demoXml, string connectionString)
{// Update the demographics for a store, which is stored  // in an xml column.  string commandText = "UPDATE Sales.Store SET Demographics = @demographics "+ "WHERE CustomerID = @ID;";using (SqlConnection connection = new SqlConnection(connectionString)){SqlCommand command = new SqlCommand(commandText, connection);command.Parameters.Add("@ID", SqlDbType.Int);command.Parameters["@ID"].Value = customerID;// Use AddWithValue to assign Demographics. // SQL Server will implicitly convert strings into XML.command.Parameters.AddWithValue("@demographics", demoXml);try{connection.Open();Int32 rowsAffected = command.ExecuteNonQuery();Console.WriteLine("RowsAffected: {0}", rowsAffected);}catch (Exception ex){Console.WriteLine(ex.Message);}}
}
  • nerdybeardo

SQL 注入是一种很搞的问题,但还是有几种解决办法,要想减少风险,可以使用 ORM 框架 Linq2Entities, Linq2SQL, NHibrenate 等等,即使这么说,用这些框架还是有一定的注入风险的,SQL 注入的来源主要是用户界面的输入框,一个经典的例子是:假如你有一个登录界面,需要输入 用户名密码

SELECT * FROM Users WHERE Username = '" + username + "' AND password = '" + password + "'"

此时有一个用户在input上输入 Admin'--, 那么SQL语句将会发生质的变化。

SELECT * FROM Users WHERE Username = 'Admin' --' AND password = ''

要解决这种问题,就需要使用参数化查询 SQLParameter 来解决。

点评区

说实话, 对于SQL注入这块,我个人倾向于选择  ORM 和 裸SQL 之间的 Dapper 来进行处理,比如下面这样:

var list = Execute(conn =>{var sql = string.Format($@"select t.TagNo from xxx as cjoin xxx as cton c.ID = ct.IDwhere  t.TagNo in @TagNo and c.Cus_ID = @CustomerID");var query = conn.Query<string>(sql, new { TagNo = epcList, CustomerID = context.CustomerID }).ToList();return query;});

写法灵活,可控性高,效率也不错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软职位内部推荐-Senior SW Engineer for Application Ecosystem

微软近期Open的职位:Job posting title: Senior Development EngineerLocation: China, BeijingDivision: Operations System Group Engineering&nbsp Group OverviewOSG is delivering flagship products in Microsoft. China is a second largest economy in the world. …

数学除了摧残祖国的花朵外,竟然还可以赢钱!

全世界只有3.14 % 的人关注了爆炸吧知识端午节假期结束了&#xff0c;知识君又可以开心地回到工作岗位上了。我热爱学习&#xff0c;也热爱工作。这两天&#xff0c;知识君又听到了“哼&#xff0c;数学除了摧残我们这些祖国的花朵之外&#xff0c;然而并没有什么卵用。”知识君…

rocketmq 顺序消费_10 分钟看懂消息队列 RocketMQ

RocketMQ 是阿里巴巴在2012年开源的分布式消息中间件&#xff0c;目前已经捐赠给 Apache 软件基金会&#xff0c;并于2017年9月25日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件&#xff0c;以其高性能、低延时和…

[Tyvj1114 搭建双塔]

[题目来源]&#xff1a;VIjos [关键字]&#xff1a;动态规划 [题目大意]&#xff1a;用n块水晶搭建两个塔&#xff0c;要求双塔必须一样高&#xff0c;问最大能达到的高度为多少。 // [分析]&#xff1a;用f[i,j]表示使用前i个水晶,建起高度差为j的双塔时,较矮的那个塔的最大高…

echarts 时间曲线图_制作按时间每秒实时更新的echarts折线图

有时候我们的图表需要根据后台数据每秒实时更新&#xff0c;那么用echarts应该如何实现呢&#xff1f;2020.11.27发现篇文章很多人关注&#xff0c;但之前写的不是很清楚&#xff0c;今天更新下&#xff0c;大家有问题可以也留言讨论。这是一个仿win10任务管理器的设备信息监控…

linux lua socket编程,CentOs 安装lua,luasocket

一、centos安装Lua3)个人在这里选择使用5.1版本的*下载wget http://www.lua.org/ftp/lua-5.1.5.tar.gz--2013-10-14 16:23:17-- http://www.lua.org/ftp/lua-5.1.5.tar.gzResolving www.lua.org... 89.238.129.35, 2a02:40:41::5Connecting to www.lua.org|89.238.129.35|:80.…

Python 2.7 Tutorial —— 流程控制

.. _tut-morecontrol: ****************************************** More Control Flow Tools 深入流程控制 ****************************************** Besides the :keyword:while statement just introduced, Python knows the usual control flow statements known from …

一厕难求!NASA悬赏三万五千美元,只为一个能在月球上用的马桶

全世界只有3.14 % 的人关注了爆炸吧知识来源&#xff1a;大数据文摘作者&#xff1a;刘俊寰如今逐渐步入智能生活时代&#xff0c;智能化产品也逐渐普及到我们生活中&#xff0c;有的智能马桶&#xff0c;不仅可以识别大便监测你的生活状况&#xff0c;还可以识别肛纹辨别不同身…

我很高兴地宣布我正在编写第一本官方ABP图书

掌握ABP框架通过实施软件开发最佳实践来构建可维护的 .NET 解决方案从 ABP 框架的创建者那里学习如何构建现代 Web 应用程序主要特点使用 ABP 中的最佳工具构建强大、可维护和可扩展的软件解决方案了解如何在您的 Web 应用程序中实施 SOLID 原则和领域驱动设计了解 ABP 框架如何…

python join_python join 和 split的常用使用方法

python join 和 split的常用使用方法 python join 和 split方法的使用,join用来连接字符串&#xff0c;split恰好相反&#xff0c;拆分字符串的。 1.join用法示例 >>>li [my,name,is,bob] >>> .join(li) my name is bob >>>_.join(li) my_name_is_…

layui 如何去dom_javascript 怎么去引用layui里面的方法

现在&#xff0c;我有一个JSP页面&#xff0c;里面同时存在普通javascript的代码和layui的代码&#xff0c;我想调用layui里面的方法&#xff0c;该怎么引用&#xff1f;这是javascript代码&#xff1a;var treeSetting {data: {simpleData: {enable: true,idKey: "id&qu…

ExtJs Grid分页时序号自增的实现,以及查询以后的序号的处理

ExtJs Grid分页时&#xff0c;默认情况下每页的序号都是从1起始的&#xff0c;这往往不符合我们的习惯。这里实现了序号的自动增加。如&#xff1a;每页20条第一页从1开始&#xff0c;第二页从21条开始。先定义一个全局变量如record_start 0,这里记得赋初始值主要是考虑第一次…

linux的自定义input,linux键值到Android键值的转换与自定义

首先要确定按键输入设备是对应/dev/input目录下哪个event&#xff0c;根据VID PID匹配对应的kl文件&#xff0c;可通过如下命令 cat /proc/bus/input/devices 查看设备信息framework层通过.kl文件将获取的键值转换成实际按键含义后&#xff0c;又会通过KeycodeLabel转换成相应的…

原来历史人物的英文名竟然叫这些,太好笑了吧哈哈哈哈哈

全世界只有3.14 % 的人关注了爆炸吧知识我们学了这么多年的英语你有英文名字吗&#xff1f;如果有一天&#xff0c;古人穿越到了现在那么他们的英文名字是……汉武帝&#xff1a;Woody汉文帝&#xff1a;Wendy▽朱棣&#xff1a;judy▽朱熹&#xff1a;Juicy▽周瑜&#xff1a;…

10款优秀的跨平台免费生产力软件[转]

因为多数人并不需要OpenOffice.org那样整合了字处理、表格、幻灯片制作等完整的生产力工具&#xff0c;他们只需要其中一项功能&#xff1a;字处理软件AbiWord 2.8.6&#xff1b;开源桌面排版系统Scribus 1.3.8&#xff1b;整合浏览器、电子邮件、IRC和HTML编辑器的SeaMonkey 2…

From Apprentice To Artisan 翻译 19

为什么80%的码农都做不了架构师&#xff1f;>>> 上一篇 Interface Segregation Principle 接口隔离原则 Introduction 介绍 The Interface Segregation principle states that no implementation of an interface should be forced to depend on methods it does n…

Winform模拟post请求和get请求登录网站

引言最近有朋友问如何用winform模拟post请求&#xff0c;然后登录网站&#xff0c;稍微想了一下&#xff0c;大致就是对http报文的相关信息的封装&#xff0c;然后请求网站登录地址的样子。发现自己的博客中对这部分只是也没总结&#xff0c;就借着这股风&#xff0c;总结一下h…

python eval函数_Python eval 函数妙用

作者博文地址&#xff1a;https://www.cnblogs.com/liu-shuai/ eval 功能&#xff1a;将字符串str当成有效的表达式来求值并返回计算结果。 语法&#xff1a; eval(source[, globals[, locals]]) -> value 参数&#xff1a; source&#xff1a;一个Python表达式或函数compil…

易宝支付碰到 交易签名无效问题

今天在易宝支付问题上给纠结了半天&#xff0c;将模块加进文件中&#xff0c;设置好商户ID与密钥&#xff0c;加上对应的域名&#xff0c;是可以实现在线支付问题。但我现在要的功能是要按不同的分组&#xff0c;去读取不同的商户ID与密钥&#xff0c;因些&#xff0c;我将这些…

那些上海滩的金融传奇,或许都开始于一份PPT

全世界只有3.14 % 的人关注了爆炸吧知识 我从07年开始在上海做商务PPT定制&#xff0c;从工作室一步一步到国内首家PPT定制公司&#xff0c;从电脑前到讲台前做培训&#xff0c;算是见证了中国PPT行业的发展。在我大大小小做过的项目里&#xff0c;印象最深的莫过于“靠PPT拿下…