Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 php is_numberic函数产生sql注入漏洞怎么解决

php is_numberic函数产生sql注入漏洞怎么解决

发布时间:2018-02-11   编辑:www.jquerycn.cn
本文介绍了php中is_numberic函数产生sql注入漏洞的解决方法,有需要的朋友参考下。

本节内容:
php is_numberic函数,sql注入漏洞。

一、is_numberic函数简介
is_numberic函数的结构
bool is_numeric (mixed $var)
如果 var 是数字和数字字符串则返回 true,否则返回 false。

二、函数是否安全

例子,检测此函数安全性。
 

复制代码 代码示例:
<?php
$s = is_numeric($_get['s'])?$_get['s']:0;
$sql="insert into test(type)values($s);";  //是 values($s) 不是values('$s')
mysql_query($sql);

以上代码片段,判断参数s是否为数字,是则返回数字,不是则返回0,然后带入数据库查询。(这样就构造不了sql语句)
把‘1 or 1' 转换为16进制 0x31206f722031 为s参数的值
程序运行后,查询数据库看看,如下图:
php防止sql注入漏洞

如果再重新查询这个表的字段出来,不做过滤带入另一个sql语句,将会造成2次注入。

三、 总结
尽量不要使用此函数。
如果要使用这个函数,建议使用规范的sql语句,条件加入单引号,这样16进制0x31206f722031就会在数据库里显示出来,而不会出现1 or 1。

以上就是php is_numberic函数产生sql注入漏洞的原因与解决方法,与大家共享。

您可能感兴趣的文章:
临时解决办法:360提示DedeCms全局变量覆盖漏洞
php防止sql注入正则过滤一例
一段php过滤危险html的代码
asp防止js或sql注入的方法详解
php与mysql时区设置的一些总结
PHPCMS禁用fsockopen函数的解决办法
很好用的php防止sql注入漏洞过滤函数的代码
php中allow_url_include的应用分析
PHP程序员最容易犯的11个MySQL错误
关于IE下图片的预加载过程

[关闭]