CN107277057A - 一种.net服务器上防止SQL注入的方法 - Google Patents
一种.net服务器上防止SQL注入的方法 Download PDFInfo
- Publication number
- CN107277057A CN107277057A CN201710656994.6A CN201710656994A CN107277057A CN 107277057 A CN107277057 A CN 107277057A CN 201710656994 A CN201710656994 A CN 201710656994A CN 107277057 A CN107277057 A CN 107277057A
- Authority
- CN
- China
- Prior art keywords
- sql
- sqlparams
- parameter
- objects
- sql statement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种在.net服务器中防止SQL注入的方法,涉及.net框架,c#,数据库等技术领域。本发明前端通过接口,把SQL语句需要用到的参数传递到后台,后台接收到参数之后,第一步把参数封装进一个对象里面保存起来,如果有多个参数,那么就封装多个对象,并且把这些对象按顺序依次加入到一个数组中。然后拿到这个数组和SQL语句,依次把数组中的对象取出来,通过参数化的方式,完成SQL语句,最后调用这个SQL语句去访问数据库,就能安全的获得结果。如果传入的参数有恶意的SQL注入,那么这段恶意的SQL代码依然只能被当作是参数来使用,不会直接执行,只会导致该条SQL执行不成功,这样一来,就能完全的避免SQL注入,导致数据库出现风险。
Description
技术领域
本发明涉及一种涉及.net框架,c#,数据库等技术领域。具体为一种在.net服务器中防止SQL注入的方法。
背景技术
随着互联网技术的飞速发展,我们身边的各种软件也已经越来越多了起来,各种玲琅满目的网站,app等等,这些都使用了数据库技术来存储数据,随之而来的也有越来越大的风险,其中在数据库使用上SQL注入一直是一个需要重点防范的方面。一旦软件能够被SQL注入,那么将面临极大的风险,可能是数据库内容的泄漏,可能是数据库内容被恶意篡改,甚至连数据库被删除都有可能发生。
发明内容
本发明的目的是为了防范SQL注入的风险,本专利就发明了一种在.net服务器上防止SQL注入的方法。
为了达到上述的技术效果,本发明采取以下技术方案:一种.net服务器上防止SQL注入的方法,其特征在于,包括以下步骤:
A、提供一个供前端调用的接口:所述接口接受前端传过来的SQL语句和SQL的条件,为后续的构造SQL语句做准备;
B、初始化SqlParams:接口接受到前端传进来的信息之后,先通过SqlParams类的构造方法,初始化SqlParams对象;
C、加入数组:按顺序初始化SqlParams对象之后,把所有的SqlParams对象添加到一个已经初始化好的数组里面;
D、构造SQL语句:通过@+key的形式,来拼接SQL语句的条件;
E、参数化处理:通过参数化的方法,首先遍历SqlParams对象的数组,把每个SqlParams对象取出来,然后通过key和content初始化数据库参数对象,最后把数据库参数对象加到数据库SQL语句操作对象中。
进一步的技术方案是:通过SqlParams类的构造方法,初始化SqlParams对象的具体操作是:构造SqlParams类,所述SqlParams类包含key,content和type共三个属性,key是string类型,表示参数名字的唯一标识;content是object类型,表示参数的内容;type是int类型,表示参数在数据库中的类型,然后传入key,congtent,type三个参数来初始化SqlParams类对象。
进一步的技术方案是:在步骤E之后,还包括步骤:F、调用SQL进行执行。
进一步的技术方案是:执行SQL后,一步一步的返回结果,如果返回的结果为空,表示SQL语句执行失败。
本发明与现有技术相比,具有以下的有益效果:本方法主要利用的原理就是把传入的条件参数化,当外部传入一个SQL语句的条件时,并不直接拼接在SQL语句后面直接执行,而是通过对SQL语句添加参数的方式来执行,并且把参数封装到一个对象里面来使用。使用本方法简单的把传入的条件封装成一个对象,当成参数传递到SQL语句中去,这样一来程序并不会直接的去执行传入的代码,而仅仅是把传入的字符串当成是一个参数来执行,能够完全阻止SQL注入的发生,并且能够大幅度的提高SQL语句的编写效率,防止SQL语句的输入性错误,提高开发效率,提高了程序的安全性。
附图说明
图1是本发明方法实现的流程图;
图2是SqlParams类图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
如图1所示,一种.net服务器上防止SQL注入的方法,主要包括以下步骤:
A、提供一个接口,供前端调用,接受前端传过来的SQL语句和SQL的条件的参数,为后续的构造SQL语句做准备;例如,登录接口通常需要的参数就是account和password。
B、初始化SqlParams:接口接受到前端传进来的信息之后,先通过SqlParams类的构造方法,把每个参数都初始化一个SqlParams类的对象。具体地:构造一个SqlParams类,该类主要是保存参数的所有信息,该类包含3个属性,第一个string类型的key,每个参数的唯一标识;第二个object类型的content,每个参数的内容;最后一个int类型的type,参数的类型,包括int,string,date等等。并且提供一个构造方法,传入以上三个参数来初始化SqlParams类对象。
C、加入数组:按顺序初始化SqlParams对象之后,把所有的SqlParams对象添加到一个已经初始化好的数组里面。以登录为例的话就是初始化了两个SqlParams对象,其中一个包含有account的信息,另一个包含有password的信息。然后数组里面就存放了这两个对象。
D、构造SQL语句:通过@+key的形式,来拼接SQL语句的条件。构造SQL语句,SQL语句的条件的构造,就是本方法的关键之处。在构造SQL语句是并不是进行简单的字符串拼装。而是通过@key的方式来拼接参数。例如登录接口的SQL就应该这样构造:string sql="select count(*)as Count where account=@"+accountParam.key+"and"+"Password=@"+passwordParam.key;其中accountParam和passwordParam分别为account和password构造的SqlParams的对象,key就是account和password的唯一标志符,如果要获取到account和password的内容,只需要accountParam.content和passwordParam.content就能获取。
E、参数化处理:通过参数化的方法,首先遍历SqlParams对象的数组,把每个SqlParams对象的key和content的type取出来,然后通过key和content初始化数据库参数对象,最后把数据库参数对象加到数据库SQL语句操作对象中。这样就把传入的SQL的条件参数化,防止了传入的字符串被直接当作SQL的条件直接执行,对数据库造成破坏。
F、最后执行完成后,一步一步的返回结果,如果返回的结果为空,那么就是SQL语句执行失败了。通过使用了本方法之后,即使是有恶意的SQL代码注入,也不能破坏数据库。并且在构造SQL语句时,通过取对象的属性的方式来获取key和content,能够更准确,不容易出现书写错误。
当前端调用接口,发送请求时,服务器通过SQL语句去操作数据库。如果不对传入的SQL语句进行验证,那么可能传入的参数为恶意的SQL代码,程序就会直接去执行这段代码,就可能导致数据库被破坏。本发明前端通过接口,把SQL语句需要用到的参数传递到后台,后台接收到参数之后,第一步把参数封装进一个对象里面保存起来,如果有多个参数,那么就封装多个对象,并且把这些对象按顺序依次加入到一个数组中。然后拿到这个数组和SQL语句,依次把数组中的对象取出来,通过参数化的方式,完成SQL语句,最后调用这个SQL语句去访问数据库,就能安全的获得结果。如果传入的参数有恶意的SQL注入,那么这段恶意的SQL代码依然只能被当作是参数来使用,不会直接执行,只会导致该条SQL执行不成功,这样一来,就能完全的避免SQL注入,导致数据库出现风险。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (4)
1.一种.net服务器上防止SQL注入的方法,其特征在于,包括以下步骤:
A、提供一个供前端调用的接口:所述接口接受前端传过来的SQL语句和SQL的条件,为后续的构造SQL语句做准备;
B、初始化SqlParams:接口接受到前端传进来的信息之后,先通过SqlParams类的构造方法,初始化SqlParams对象;
C、加入数组:按顺序初始化SqlParams对象之后,把所有的SqlParams对象添加到一个已经初始化好的数组里面;
D、构造SQL语句:通过@+key的形式,来拼接SQL语句的条件;
E、参数化处理:通过参数化的方法,首先遍历SqlParams对象的数组,把每个SqlParams对象取出来,然后通过key和content初始化数据库参数对象,最后把数据库参数对象加到数据库SQL语句操作对象中。
2.根据权利要求1所述的一种.net服务器上防止SQL注入的方法,其特征在于:通过SqlParams类的构造方法,初始化SqlParams对象的具体操作是:构造SqlParams类,所述SqlParams类包含key,content和type共三个属性,key是string类型,表示参数名字的唯一标识;content是object类型,表示参数的内容;type是int类型,表示参数在数据库中的类型,然后传入key,congtent,type三个参数来初始化SqlParams类对象。
3.根据权利要求1所述的一种.net服务器上防止SQL注入的方法,其特征在于:在步骤E之后,还包括步骤:F、调用SQL进行执行。
4.根据权利要求3所述的一种.net服务器上防止SQL注入的方法,其特征在于:执行SQL后,一步一步的返回结果,如果返回的结果为空,表示SQL语句执行失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710656994.6A CN107277057A (zh) | 2017-08-03 | 2017-08-03 | 一种.net服务器上防止SQL注入的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710656994.6A CN107277057A (zh) | 2017-08-03 | 2017-08-03 | 一种.net服务器上防止SQL注入的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107277057A true CN107277057A (zh) | 2017-10-20 |
Family
ID=60075870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710656994.6A Pending CN107277057A (zh) | 2017-08-03 | 2017-08-03 | 一种.net服务器上防止SQL注入的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107277057A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388763A (zh) * | 2007-09-12 | 2009-03-18 | 北京启明星辰信息技术有限公司 | 一种支持多种数据库类型的sql注入攻击检测系统 |
CN101609493A (zh) * | 2009-07-21 | 2009-12-23 | 国网电力科学研究院 | 一种基于自学习的数据库sql注入防护方法 |
CN103338208A (zh) * | 2013-07-16 | 2013-10-02 | 五八同城信息技术有限公司 | 一种sql注入防御的方法和系统 |
-
2017
- 2017-08-03 CN CN201710656994.6A patent/CN107277057A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388763A (zh) * | 2007-09-12 | 2009-03-18 | 北京启明星辰信息技术有限公司 | 一种支持多种数据库类型的sql注入攻击检测系统 |
CN101609493A (zh) * | 2009-07-21 | 2009-12-23 | 国网电力科学研究院 | 一种基于自学习的数据库sql注入防护方法 |
CN103338208A (zh) * | 2013-07-16 | 2013-10-02 | 五八同城信息技术有限公司 | 一种sql注入防御的方法和系统 |
Non-Patent Citations (4)
Title |
---|
ANGELFEATHER: "《Sqlparameter的用法》", 《HTTPS://WWW.CNBLOGS.COM/ANGELFEATHER/ARTICLES/1225902.HTML》 * |
ZYW_ANQUAN: "SQL参数化查询", 《HTTPS://BLOG.CSDN.NET/ZYW_ANQUAN/ARTICLE/DETAILS/22178821》 * |
金鑫: "SQL注入的攻与防", 《电脑知识与技术》 * |
黄晓华: "ASP.NET网站防SQL注入的方法研究", 《电脑知识与技术》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Costin et al. | A {Large-scale} analysis of the security of embedded firmwares | |
CN102006163B (zh) | 用户验证方法、装置及服务器 | |
CN106131047A (zh) | 账号登录方法及相关设备、账号登录系统 | |
CN112805694A (zh) | 用于改进的实施区块链的智能合约的系统和方法 | |
CN105450730A (zh) | 一种处理客户端请求的方法和装置 | |
CN112039900B (zh) | 网络安全风险检测方法、系统、计算机设备和存储介质 | |
CN111258900A (zh) | 接口测试脚本的生成方法、系统、设备及存储介质 | |
CN109145235B (zh) | 用于解析网页的方法、装置及电子设备 | |
EP3918494B1 (en) | Systems, methods, and storage media for obfuscating a computer program by representing the control flow of the computer program as data | |
CN106815524B (zh) | 恶意脚本文件的检测方法及装置 | |
CN105100054A (zh) | 一种客户端的登录方法和装置 | |
CN104168116A (zh) | 一种数据库身份验证方法及系统 | |
CN111857860A (zh) | 一种安全加载插件的实现方法及系统 | |
CN105141429A (zh) | 用户验证方法、装置和服务器 | |
CN102984260A (zh) | 一种互联网帐号和密码的信息管理方法及系统 | |
CN104683327A (zh) | 一种Android软件用户登录界面安全性检测方法 | |
US10419423B2 (en) | Techniques for identification of location of relevant fields in a credential-seeking web page | |
CN110502482B (zh) | 用户操作界面配置方法、系统及数据操作方法 | |
CN107122656A (zh) | 一种通过自调试防止外部调试的方法和装置 | |
CN105208032A (zh) | 异步登录方法和装置 | |
CN111045722A (zh) | 智能合约打包方法、装置、系统、计算机设备及存储介质 | |
Rubin et al. | Merkelized abstract syntax trees | |
CN112882690B (zh) | 一种应用开发方法及装置 | |
CN110263548A (zh) | 一种Web应用漏洞检测规则生成方法、终端及存储介质 | |
CN107277057A (zh) | 一种.net服务器上防止SQL注入的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171020 |
|
RJ01 | Rejection of invention patent application after publication |