承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

SQL开发知识:Sql注入原理简介

管理员 2023-08-16 08:03:55 互联网圈 0 ℃ 0 评论 6083字 收藏

SQL开发知识:Sql注入原理简介

一、甚么是sql注入呢?

        所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面要求的查询字符串,终究到达欺骗服务器履行歹意的SQL命令,比如先前的很多影视网站泄漏VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易遭到SQL注入式攻击.当利用程序使用输入内容来构造动态sql语句以访问数据库时,会产生sql注入攻击。如果代码使用存储进程,而这些存储进程作为包括未挑选的用户输入的字符串来传递,也会产生sql注入。 黑客通过SQL注入攻击可以拿到网站数据库的访问权限,以后他们就能够拿到网站数据库中所有的数据,歹意的黑客可以通过SQL注入功能篡改数据库中的数据乃至会把数据库中的数据损坏掉。做为网络开发者的你对这类黑客行动恨之入骨,固然也有必要了解一下SQL注入这类功能方式的原理并学会如何通过代码来保护自己的网站数据库

二、sql注入产生缘由

     sql注入攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql语句和进行其他方式的攻击,动态生成Sql语句时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要缘由。对java数据库连接JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是由于PreparedStatement不允许在区别的插入时间改变查询的逻辑结构。

    如验证用户会不会存在的SQL语句为:

    用户名'and pswd='密码

如果在用户名字段中输入: 'or 1=1或是在密码字段中输入:'or 1=1

将绕过验证,但这类手段只对只对Statement有效,对PreparedStatement无效。相对Statement有以下优点:

    1.防注入攻击

    2.屡次运行速度不错

    3.避免数据库缓冲区溢出

    4.代码的可读性可保护性好

    这四点使得PreparedStatement成为访问数据库的语句对象的首选,缺点是灵活性不够好,有些场合或者一定要使用Statement。 

三、sql注入原理

      下面我们来讲一下sql注入原理,以使读者对sql注入攻击有一个感性的认识,至于其他攻击,原理是一致的。
     SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。 SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web利用都使用SQL数据库来寄存利用程序的数据。几近所有的Web利用在后台 都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不仔细的话,用户数据就有可能被解释成命令, 这样的话,远程用户就不但能向Web利用输入数据,而且还可以在数据库上履行任意命令了。

     SQL注入式攻击的主要情势有两种。一是直接将代码插入到与SQL命令串连在一起并使得其以履行的用户输入变量。上面笔者举的例子就是采取了这类方法。由于其直接与SQL语句捆绑,故也被称为直接注入式攻击法。二是一种间接的攻击方法,它将歹意代码注入要在表中存储或作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以履行一些歹意的SQL代码。注入进程的工作方式是提早终止文本字符串,然后追加一个新的命令。如以直接注入式攻击为例。就是在用户输入变量的时候,先用一个分号结束当前的语句。然后再插入一个歹意SQL语句便可。由于插入的命令可能在履行前追加其他字符串,因此攻击者常经常使用注释标记“—”来终止注入的字符串。履行时,系统会认为尔后语句位注释,故后续的文本将被疏忽,不背编译与履行。

四.SQL注入攻击的简单示例:

         这里我们举一个比较常见的例子来扼要说明一下sql注入的原理。假设我们有一个users表,里面有两个字段username和password。在我们的java代码中我们初学者都习惯用sql拼接的方式进行用户验证。比如
:”select id from users where username = '"+username +"' and password = '"  + password +"'” 这里的username和password都是我们存取从web表单取得的数据。下面我们来看一下一种简单的注入,如果我们在表单中username的输入框中输入’ or 1=1– ,password的表单中随意输入一些东西,假设这里输入123.此时我们所要履行的sql语句就变成了select id from users where username = '' or 1=1--  and password = '123',我们来看一下这个sql,由于1=1是true,后面 and password = ‘123’被注释掉了。所以这里完全跳过了sql验证。这里只是简单的举一个例子。很多sql注入的方式还有很多,要是感兴趣的话,可以更深入的去研究

总结

以上所述是小编给大家介绍的Sql注入原理简介,大家如有疑问可以留言,或联系站长。感谢亲们支持!!!

文章来源:丸子建站

文章标题:SQL开发知识:Sql注入原理简介

https://www.wanzijz.com/view/71997.html

相关文章

Related articles

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信