什么叫sql盲注,如何防止sql恶意注入?

WEB应用暴露在公网上什么叫sql盲注,时刻都会面临着各种各样的攻击,而SQL攻击也是最为常见且危害很大的。

SQL注入其实就是利用不严谨的SQL查询方法和语言来构造具有危害性的SQL语句,数据库一旦执行了这些SQL,黑客的目的就能达到了。像以前最为常见的SQL注入就是:' or 1='1 类似这种的SQL构造。

考虑到数据库类型不同,SQL操作上也是有一定区别的,但对于SQL注入防御手段而言还是有一些共同方案的,结合我的开发经验总结出一些方案供大家参考:

1、用户所有的输入数据务必做校验

“永远不要相信用户的输入”,所以在WEB应用中,但凡是用户提交的数据我们都要进行合法性校验,另外要做必要的数据类型转换和过滤,比如通常我们会将用户输入的单号引、双引号等字符做一个转换,防止其直接传递到SQL语句中。

2、SQL预编译

开发人员在处理查询时,不要采取拼接SQL这种方式来处理,建议使用预编译SQL,参数使用占位符来替换。

3、服务器关闭错误回显

线上服务器可以关闭具体的错误回显,不要将具体的错误信息暴露给攻击者(如果暴露这些错误信息会被黑客利用),所以通常我们都是做个友好的错误页来作为出错时的提示页。

像一些WEB容器、语言/脚本/框架的版本信息也要隐藏或者伪造一个。

4、服务器对GET、POST数据进行处理

比如我们通过Nginx来对用户的GET、POST数据进行一个校验,如果包含某些危险字符(比如SQL关键字、特殊字符等),则直接拒绝请求。

5、数据库层面上严格控制权限

不同应用使用不同的帐号来操作数据库,不能使用超级帐户来操作数据库,另外不同业务分配不同的数据库帐号,比如:只读权限、只写权限等,另外像DROP这类操作就不允许执行了。

另外数据库端口禁止外网访问。

以上就是防止SQL注入的一些方案,如果大家有不同看法,欢迎在下方评论区发表自己的观点 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

感谢邀请,针对你得问题,我有以下回答,希望能解开你的困惑。

什么叫sql盲注,如何防止sql恶意注入?

首先回答第一个问题:什么是SQL 注入?

什么叫sql盲注,如何防止sql恶意注入?

一般来说,黑客通过把恶意的sql语句插入到网站的表单提交或者输入域名请求的查询语句,最终达到欺骗网站的服务器执行恶意的sql语句,通过这些sql语句来获取黑客他们自己想要的一些数据信息和用户信息,也就是说如果存在sql注入,那么就可以执行sql语句的所有命令

那我延伸一个问题:sql注入形成的原因是什么呢?

数据库的属于与网站的代码未严格分离,当一个黑客提交的参数数据未做充分的检查和防御的话,那么黑客的就会输入恶意的sql命令,改变了原有的sql命令的语义,就会把黑客执行的语句带入到数据库被执行。

现在回答第二个问题:我们常见的注入方式有哪些?

我们常见的提交方式就是GET和POST

首先是GET,get提交方式,比如说你要查询一个数据,那么查询的代码就会出现在链接当中,可以看见我们id=1,1就是我们搜索的内容,出现了链接当中,这种就是get。

第二个是Post提交方式是看不见的,需要我们利用工具去看见,我们要用到hackbar这款浏览器插件

可以就可以这样去提交,在这里我搜索了2,那么显示的数据也就不同,这个就是数据库的查询功能,那么的话,get提交比post的提交更具有危害性。

第二个是Post提交方式是看不见的,需要我们利用工具去看见,我们要用到hackbar这款浏览器插件。

以上便是我的回答,希望对你有帮助。

通常sql注入漏洞分为数字型和字符型

基于布尔的盲注通常攻击者在目标URL中嵌入单引号检查是否返回错误信息来判断是否可以进行sql攻击,

还可以在URL后面分别前入 and 1 = 1和and 1 = 2,如果页面分别显示正常和报错,则存在注入点,记住sql注入的目的是为了获取数据库数据,所以SQL注入点一般存在于登录页面、查找页面或添加页面等用户可以查找或修改数据的地方。

以上都是手工注入,还可以接住工具进行注入,最好用的应该是sqlmap了

2022-06-09

2022-06-09