首先咱们来了解下什么是SQL注入,SQL注入简单来说就是将一些非法参数插入到网站数据库中去,执行一些sql命令,好比查询数据库的帐号密码,数据库的版本,数据库服务器的IP等等的一些操做,sql注入是目前网站漏洞中危害最大的一个漏洞,受攻击的网站占大多数都是sql注入攻击。php
sql注入攻击用英语来说Structured Query Language,在网站的编程语言当中是一种比较另类的网站开发语言,咱们网站安全行业一般来说sql是用来数据库查询的一种网站开发语言,同时也是一种脚本文件的一个文件名,通俗来说sql就是用来对网站的数据库进行查询,以及增长,写入,更新数据库的一个sql数据库操做。前端
关于数据库咱们分为2种数据库,一种是关系数据库,非关系数据库,那么目前网站使用的都是关系数据库,关系数据库分为sql数据库,microsoft sql server数据库,ACC数据库,mysql数据库,oracle数据库,DB2数据库,postgresql数据库等等的关系数据库,非关系数据库分为nosql数据库,能够存储很大数据,针对于一些并发较高,存储较多,云计算的场景,频繁读取写入的数据库,像memcachedb,redis,mongodb等等非关系数据库。mysql
那么什么是sql注入呢? 简单来说就是对网站强行进行插入数据,执行sql恶意语句对网站进行攻击,对网站进行sql注入尝试,能够获取一些私密的信息,像数据库的版本,管理员的帐号密码等等。redis
关于如何防止sql注入攻击,咱们从如下几点开始入手sql
首先咱们能够了解到sql注入攻击都是经过拼接的方式,把一些恶意的参数拼接到一块儿,而后在网站的前端中插入,并执行到服务器后端到数据库中去,一般咱们在写PHP网站代码的时候会将get ID这个参数值获取到后直接拼接到后端服务器中去,查询数据库,可是若是拼接了一些恶意的非法参数,那么久能够当作sql语句来执行,若是防止sql注入呢?mongodb
为了防止网站被sql注入攻击,咱们应该从一开始写代码的时候就应该过滤一些sql注入的非法参数,将查询的一些sql语句,以及用户输入的参数值都以字符串的方式来处理,不论用户输入的什么东西,在sql查询的时候只是一段字符串,这样构造的任何恶意参数都会以字符串的方式去查询数据库,一直恶意的sql注入攻击就不会被执行,sql注入语句也就没有效果了,再一个就是网站里的任何一个能够写入的地方尽量的严格过滤与限制,漏下一个能够输入的地方网站就会被攻击,网站就会被黑,全部作的网站安全就会没有效果,包括一些get,post,cookie方式的提交都是不可信的,像数据表里referer user-agent等字段都是能够伪造,写入sql注入语句的,像前端时间爆发的ecshop漏洞利用的就是user.php,伪造referer参数进行了sql注入,执行了远程代码。数据库
再一个防止sql注入的方法就是开启PHP的魔术配置,开启安全配置模式,将safe_mode开启on.以及关闭全局变量模式,register_globals参数设置为on,magic_quotes_gpc参数开启,防止sql注入.若是对网站防止sql注入不懂的话,也能够找专业的网站安全公司来作安全,防止sql注入,国内像SINE安全公司,绿盟安全公司,启明星辰安全公司都是比较不错。编程