如何防止sql注入

SQL注入攻击的危害性很大。

操作方法

  • 01

    普通用户与系统管理员用户的权限要有严格的区分。 如果一个普通用户在使用查询语句中嵌入另一个Drop Table语句,那么是否允许执行呢?由于Drop语句关系到数据库的基本对象,故要操作这个语句用户必须有相关的权限。在权限设计中,对于终端用户,即应用软件的使用者,没有必要给他们数据库对象的建立、删除等权限。那么即使在他们使用SQL语句中带有嵌入式的恶意代码,由于其用户权限的限制,这些代码也将无法被执行。故应用程序在设计的时候,

  • 02

    强迫使用参数化语句。 如果在编写SQL语句的时候,用户输入的变量不是直接嵌入到SQL语句。而是通过参数来传递这个变量的话,那么就可以有效的防治SQL注入式攻击。也就是说,用户的输入绝对不能够直接被嵌入到SQL语句中。与此相反,用户的输入的内容必须进行过滤,或者使用参数化的语句来传递用户输入的变量。参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。采用这种措施,可以杜绝大部分的SQL注入式攻击。不过可惜的是,现在支持参数化语句的数据库引擎并不多。不过数据库工程师在开发产品的时候要尽量采用参数化语句。

  • 03

    多多使用SQL Server数据库自带的安全参数。 为了减少注入式攻击对于SQL Server数据库的不良影响,在SQLServer数据库专门设计了相对安全的SQL参数。在数据库设计过程中,工程师要尽量采用这些参数来杜绝恶意的SQL注入式攻击。 如在SQL Server数据库中提供了Parameters集合。这个集合提供了类型检查和长度验证的功能。如果管理员采用了Parameters这个集合的话,则用户输入的内容将被视为字符值而不是可执行代码。即使用户输入的内容中含有可执行代码,则数据库也会过滤掉。因为此时数据库只把它当作普通的字符来处理。使用Parameters集合的另外一个优点是可以强制执行类型和长度检查,范围以外的值将触发异常。如果用户输入的值不符合指定的类型与长度约束,就会发生异常,并报告给管理员。如上面这个案例中,如果员工编号定义的数据类型为字符串型,长度为10个字符。而用户输入的内容虽然也是字符类型的数据,但是其长度达到了20个字符。则此时就会引发异常,因为用户输入的内容长度超过了数据库字段长度的限制。

  • 04

    加强对用户输入的验证。 总体来说,防治SQL注入式攻击可以采用两种方法,一是加强对用户输入内容的检查与验证;二是强迫使用参数化语句来传递用户输入的内容。在SQLServer数据库中,有比较多的用户输入内容验证工具,可以帮助管理员来对付SQL注入式攻击。测试字符串变量的内容,只接受所需的值。拒绝包含二进制数据、转义序列和注释字符的输入内容。这有助于防止脚本注入,防止某些缓冲区溢出攻击。测试用户输入内容的大小和数据类型,强制执行适当的限制与转换。这即有助于防止有意造成的缓冲区溢出,对于防治注入式攻击有比较明显的效果。 如可以使用存储过程来验证用户的输入。利用存储过程可以实现对用户输入变量的过滤,如拒绝一些特殊的符号。如以上那个恶意代码中,只要存储过程把那个分号过滤掉,那么这个恶意代码也就没有用武之地了。在执行SQL语句之前,可以通过数据库的存储过程,来拒绝接纳一些特殊的符号。在不影响数据库应用的前提下,应该让数据库拒绝包含以下字符的输入。如分号分隔符,它是SQL注入式攻击的主要帮凶。如注释分隔符。注释只有在数据设计的时候用的到。一般用户的查询语句中没有必要注释的内容,故可以直接把他拒绝掉,通常情况下这么做不会发生意外损失。把以上这些特殊符号拒绝掉,那么即使在SQL语句中嵌入了恶意代码,他们也将毫无作为。 故始终通过测试类型、长度、格式和范围来验证用户输入,过滤用户输入的内容。这是防止SQL注入式攻击的常见并且行之有效的措施。

  • 05

    多层环境如何防治SQL注入式攻击? 在多层应用环境中,用户输入的所有数据都应该在验证之后才能被允许进入到可信区域。未通过验证过程的数据应被数据库拒绝,并向上一层返回一个错误信息。实现多层验证。对无目的的恶意用户采取的预防措施,对坚定的攻击者可能无效。更好的做法是在用户界面和所有跨信任边界的后续点上验证输入。如在客户端应用程序中验证数据可以防止简单的脚本注入。但是,如果下一层认为其输入已通过验证,则任何可以绕过客户端的恶意用户就可以不受限制地访问系统。故对于多层应用环境,在防止注入式攻击的时候,需要各层一起努力,在客户端与数据库端都要采用相应的措施来防治SQL语句的注入式攻击。

(0)

相关推荐

  • 防护黑客必学招数 SQL注入拦截-MYIIS-VIF助你一臂之力

    首先,MYIIS-VIF为站长提供了2种方式的注入设置。 1. 全局自动SQL注入拦截。 2. 自己加入规则的拦截方式。 全局自动SQl注入拦截类似自己给用户添加了一些常用的SQL注入关键字拦截。这些 ...

  • SQL 注入技术详解

    1.1概述 1.2背景 1.3字符编码 2.1综合测试 2.2测试过程 2.3分析结果 3.1绕过验证 3.2 SELECT 3.2.1 直接利用 ' 号 3.2.2 基于UNION 3.2.3 利用 ...

  • 如何检测SQL注入技术以及跨站脚本攻击

    在最近两年中,安全专家应该对网络应用层的攻击更加重视.因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有遵循安全代码进行开发,攻击者将通过80端口进入你的系统 ...

  • 网站被sql注入的修复方法

    近日,网站频频被黑.在网站里莫名其妙的多出一篇文 章,还有多出一组贴图.正在纳闷是谁可以登陆我的后台发表文章和图片的时候,我的qq弹出消息,一个陌生人给我发消息,说我的网站有漏洞,还说是他弄了我 的网 ...

  • 绿盟视频会议系统SQL注入

    通过注入能够拿到管理账户密码,然后登录后台查看会议密码,通过会议密码能够进入到远程会议中,恶意攻击者能够窃取某些敏感信息. http://211.151.49.196:18080/V2Conf/jsp ...

  • 漏洞扫描之SQL注入扫描测试

    对于开发人员而言,最痛苦的是性能优化和漏洞扫描.因为这两块,都涉及到专业性很强的知识,并且,很少有人可以掌握.不是大家学习能力不行,而是在平时的接触中,根本没有或很少机会,可以接触并了解. 因此,直接 ...

  • 防止sql注入的几种方法

    在我们的项目开发中,常常面临的问题就是sql的注入,脚本攻击,如何才能使系统的代码更加的健壮,防止sql的注入呢,本文将介绍几种方法来防止sql的注入. 操作方法 01 JBDC方式查询,我们可以利用 ...

  • 什么是sql注入漏洞?

    介绍一下什么是sql注入漏洞? 操作方法 01 解释起来有点困难,我们直接用实际案例演示吧. 首先,我们用Sql server 创建一个geek的数据库. 再创建一个"表_登录" ...

  • 简单分析什么是SQL注入漏洞

    现在很多人在入侵的过程中基本都是通过SQL注入来完成的,但是有多少人知道为什么会有这样的注入漏洞呢?有的会随口说着对于字符的过滤不严造成的.但是事实是这样吗?我们学这些,不仅要知其然,更要知其所以然! ...

  • 什么是SQL注入

    有些朋友刚刚接触SQL编程,对SQL注入表示不太了解.现在在这里介绍一下什么是SQL注入和怎么预防. 操作方法 01 首先介绍什么是SQL注入.SQL注入是指在编程中SQL语句中参数可以通过客户端传递 ...