网安学警应该了解的SQL注入防御

Posted 苏警院网安学生大队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网安学警应该了解的SQL注入防御相关的知识,希望对你有一定的参考价值。

简介

网安学警应该了解的SQL注入防御

在Web1.0时代,人们更多是关注服务器端动态脚本语言的安全问题,

伴随着Web2.0、社交网络、微博等一系列新型互联网产品的兴起,基于Web环境的互联网应用越来越广泛,Web攻击的手段也越来越多样。


网安学警应该了解的SQL注入防御


一般说来,在Web安全领域,常见的攻击方式大致有以下几种:

1、SQL注入攻击

2、跨站脚本攻击 - XSS

3、跨站伪造请求攻击 - CSRF

4、文件上传漏洞攻击

5、分布式拒绝服务攻击 - DDOS



而SQL注入作为其中一种,是攻击者通过把恶意SQL命令插入到Web表单的输入域或页面请求的查询字符串中来实现的,以此达到欺骗服务器从而执行恶意的SQL命令的一种攻击方式。 

从更本质上说,SQL注入是数据和语句的混淆。


网安学警应该了解的SQL注入防御


SQL注入攻击是Web安全史上的一个重要里程碑,自1999年出现至今,至今已经有十几年的历史了,虽然我们现在已经有了很全面的防范对策,但是它的威力仍然不容小觑,SQL注入攻击至今仍然是Web安全领域中的一个重要组成部分。


确定方式

网安学警应该了解的SQL注入防御

黑客确定一个网站是否存在SQL注入漏洞一般说来有以下2种途径:

1、错误提示

如果目标Web网站开启了错误显示,攻击者就可以通过反复调整发送的参数、查看页面打印的错误信息,推测出Web网站使用的数据库和开发语言等重要信息。

2、盲注

如Web运营网站关闭了错误提示信息,此时攻击者一般会采用盲注的技巧来进行反复的尝试判断。


防御方式

网安学警应该了解的SQL注入防御

程序要接受来自客户端用户输入的变量或URL传递的参数,并且这个变量或参数是组成SQL语句的一部分,对于用户输入的内容或传递的参数,我们应该要时刻保持警惕,这是安全领域里的「外部数据不可信任」的原则。


网安学警应该了解的SQL注入防御



1、对于服务器配置层面的防范,应该保证生产环境的Webserver是关闭错误信息的,比如php在生产环境的配置文件php.ini中的display_errors应该设置为Off,这样就关闭了错误提示。



2、检查变量数据类型和格式

如果你的SQL语句是类似where id={$id}这种形式,数据库里所有的id都是数字,那么就应该在SQL被执行前,检查确保变量id是int类型;如果是接受邮箱,那就应该检查并严格确保变量一定是邮箱的格式,其他的类型比如日期、时间等也是一个道理。

所以,只要是有固定格式的变量,在SQL语句执行前,应该严格按照固定格式去检查,确保变量是我们预想的格式,这样很大程度上可以避免SQL注入攻击。



3、过滤特殊符号

对于无法确定固定格式的变量,一定要进行特殊符号过滤或转义处理。

以PHP为例,通常是采用addslashes函数,它会在指定的预定义字符前添加反斜杠转义,这些预定义的字符是:单引号 (') 双引号 (") 反斜杠 () NULL。



4、绑定变量,使用预编译语句

mysql的mysqli驱动提供了预编译语句的支持,不同的程序语言,都分别有使用预编译语句的方法。

实际上,绑定变量使用预编译语句是预防SQL注入的最佳方式,使用预编译的SQL语句语义不会发生改变,在SQL语句中,变量用问号?表示,黑客即使本事再大,也无法改变SQL语句的结构。



5,、提高数据库安全性

将数据库内数据进行加密,即使黑客进入了数据库,也无法很顺利地盗取数据。


网安学警应该了解的SQL注入防御


在Web开发中,传统的加解密大致可以分为三种:

(1)、对称加密:

即加密方和解密方都使用相同的加密算法和密钥,这种方案的密钥的保存非常关键,因为算法是公开的,而密钥是保密的,一旦密匙泄露,黑客仍然可以轻易解密。常见的对称加密算法有:AES、DES等。

(2)、非对称加密:

即使用不同的密钥来进行加解密,密钥被分为公钥和私钥,用私钥加密的数据必须使用公钥来解密,同样用公钥加密的数据必须用对应的私钥来解密,常见的非对称加密算法有:RSA等。

(3)、不可逆加密:

利用哈希算法使数据加密之后无法解密回原数据,这样的哈希算法常用的有:md5、SHA-1等。


总结

知己知彼,方能百战不殆。只有不断去了解黑客是如何攻击,方能做好防守的实力。


文字:张彦,部分来源网络

图片:部分来源网络

编辑:张彦


以上是关于网安学警应该了解的SQL注入防御的主要内容,如果未能解决你的问题,请参考以下文章

网络安全--SQL注入介绍

PHP之防御sql注入攻击的方式 兄弟连分享经验技巧

电子书 SQL注入攻击与防御.pdf

sql注入和防御

SQL注入知识讲解 简介 危害 防御

SQL注入攻击和防御