★精品文档★
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
wordpress简洁英文主题,wordpress简洁通用大气的网站风格设计 + 更适于欧美国外用户操作体验,完善的外贸企业建站功能模块 + 更好的移动设备特色模块支持,更高效实用的后台自定义设置 + 标准高效的代码程序功能结构,更利于Goolge等国际搜索引擎的SEO搜索优化和站点收录排名。点击进入:wordpress简洁通用型高级外贸主题主题价格:¥3980 特 惠 价:¥1280安装环境:运...
pacificrack又追加了3款特价便宜vps搞促销,而且是直接7折优惠(一次性),低至年付7.2美元。这是本月第3波便宜vps了。熟悉pacificrack的知道机房是QN的洛杉矶,接入1Gbps带宽,KVM虚拟,纯SSD RAID10,自带一个IPv4。官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款7折秒杀优惠码:R3UWUYF01T内存CPUSS...
BuyVM测评,BuyVM怎么样?BuyVM好不好?BuyVM,2010年成立的国外老牌稳定商家,Frantech Solutions旗下,主要提供基于KVM的VPS服务器,数据中心有拉斯维加斯、纽约、卢森堡,付费可选强大的DDOS防护(月付3美金),特色是1Gbps不限流量,稳定商家,而且卢森堡不限版权。1G或以上内存可以安装Windows 2012 64bit,无需任何费用,所有型号包括免费的...