★精品文档★
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
DiyVM是一家比较低调的国人主机商,成立于2009年,提供VPS主机和独立服务器租用等产品,其中VPS基于XEN(HVM)架构,数据中心包括香港沙田、美国洛杉矶和日本大阪等,CN2或者直连线路,支持异地备份与自定义镜像,可提供内网IP。本月商家最高提供5折优惠码,优惠后香港沙田CN2线路VPS最低2GB内存套餐每月仅50元起。香港(CN2)VPSCPU:2cores内存:2GB硬盘:50GB/R...
妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款到网站余额,超过2天...
创梦网络怎么样,创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以****,属于一手资源,高防机柜、大带宽、高防IP业务,另外创梦网络近期还会上线四川眉山联通、广东优化线路高防机柜,CN2专线相关业务。广东电信大带宽近期可以预约机柜了,成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快,直连省骨干,大网...