sql注入攻击就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
其实,大家可以简单的理解SQL注入为:未对用户输入进行过滤,导致用户的一些输入在程序执行时,当做SQL语句的一部分进行执行,从而针对一些敏感操作:OR 1=1 或者 WHERE 1=1 这种条件的加入,使得大家本身的SQL逻辑被跳过执行。
从sql注入攻击的特性中,大家发现sql攻击主要是对sql语句或特定sql关键词进行改写,达到一种欺骗程序的方式,由此,大家只需要把这种欺骗限制的语法进行规范话控制,就能有效的防止sql注入。
那么在PHP中,可以通过简单的四种方法来有效防止SQL注入:
1、对用户的输入进行过滤处理后,在进行操作,如:addslashes()方法或者开启magic_quotes_gpc方法;
2、针对获取的数值型数据,进行二次转换,如intval(),floatval();
3、所有需进行数据库查询的变量都使用单引号(’)包围;
4、使用PDO或mysqli来对数据库进行操作。