★精品文档★
PHP登录中防止sql注入方法分析
防止sql注入这些细节问题一般是出现在大意程序员或者是新手程序员了他们未对用户提交过来的数据进行一些非常过滤从而导致给大家测试一下就攻破了你的数据库了下面我来简单的一个用户登录未进行安全配置可能出现的sql注入方法下面一起来看看吧。
比如以下一段登录的代码
代码如下:if($l =@mysql_connect(‘ localhost’ , ‘root’ , ‘123’)) ordie(‘数据库连接失败’);mysql_select_db(‘test’);mysq l_set_charset(‘utf8’);
$sql = ‘select * from test where username =“$username”and password=“$password”‘ ;
$res=mysq l_q u e ry($sq l);if(mysq l_n u m_rows($res)){header(‘Location: ./home.php’);
}else{die(‘输入有误’);
}
注意上面的sql语句存在很大的安全隐患如果使用以下万能密码和万能用户名那么可以轻松进入页面
1/5
★精品文档★
代码如下:
1 . $sql= ‘select * from test where username = “***”and password=“***”or 1 =“1”‘ ;
很明显针对这条sql语句的万能密码是: ***”or 1 =“1
代码如下:
2. $sql = ‘select * from test where username =“***”union select *from users/*and password=“***”‘ ;
正斜线*表示后面的不执行mysql支持union联合查询所以直接查询出所有数据;所以针对这条sql语句的万能用户名是 ***”union select *from users/*
但是此注入只针对代码中的sql语句如果
代码如下:
$sql = “select * from test where username =$username and password=$password”;
上面的注入至少已经不管用了不过方法是一样的;
在使用PDO之后 sql注入完全可以被避免而且在这个快速开发的时代框架横行已然不用过多考虑sql注入问题了。
下面整理了两个防止sql注册函数
代码如下:
/*过滤所有GET过来变量*/foreach ($_GET as$get_key=>$get_var)
2/5
★精品文档★
{if (is_numeric($get_var)) {
$get[strtolower($get_key)]=get_int($get_var);}else{
$get[strtolower($get_key)]=get_str($get_var);}
}
/*过滤所有POST过来的变量*/foreach ($_POST as$post_key=>$post_var){if (is_numeric($post_var)) {
$post[strtolower($post_key)]=get_int($post_var);}else{
$post[strtolower($post_key)]=get_str($post_var);}
}
/*过滤函数*/
//整型过滤函数function get_int($number)
{return intval($number);
}
3/5
★精品文档★
//字符串型过滤函数function get_str($string)
{if (!get_magic_quotes_gpc()) {return addslashes($string);
}return$string;
}
还有一些博客会这样写
代码如下:
<?phpfunction post_check($post)
{if(!get_magic_quotes_gpc()) //判断magic_quotes_gpc是否为打开
{
$post = addslashes($post); //进行magic_quotes_gpc没有打开的情况对提交数据的过滤
}
$post=str_replace(“_”, “ _”,$post); //把‘_’过滤掉$post=str_replace(“%”, “ %”,$post); //把’%‘过滤掉$post=nl2br($post); //回车转换
4/5
★精品文档★
$post=htmlspecialchars($post); //html标记转换return$post;
}
?
5/5
官方网站:点击访问亚洲云官网618活动方案:618特价活动(6.18-6.30)全站首月活动月底结束!地区:浙江高防BGPCPU:至强铂金8270主频7 默频3.61 睿频4.0核心:8核(最高支持64核)内存:8G(最高支持128G)DDR4 3200硬盘:40G系统盘+80G数据盘带宽:上行:20Mbps/下行:1000Mbps防御:100G(可加至300G)防火墙:提供自助 天机盾+金盾 管...
Nocser刚刚在WHT发布了几款促销服务器,Intel Xeon X3430,8GB内存,1TB HDD,30M不限流量,月付$60.00。Nocser是一家注册于马来西亚的主机商,主要经营虚拟主机、VPS和马来西亚独立服务器业务,数据中心位于马来西亚AIMS机房,线路方面,AIMS到国内电信一般,绕日本NTT;联通和移动比较友好,联通走新加坡,移动走香港,延迟都在100左右。促销马来西亚服务器...
简介华圣云 HuaSaint是阿里云国际版一级分销商(诚招募二级代理),专业为全球企业客户与个人开发者提供阿里云国际版开户注册、认证、充值等服务,通过HuaSaint开通阿里云国际版只需要一个邮箱,不需要PayPal信用卡,不需要买海外电话卡,绝对的零门槛,零风险官方网站:www.huasaint.com企业名:huaSaint Tech Limited阿里云国际版都有什么优势?阿里云国际版的产品...