★精品文档★
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经典外贸企业建站主题,经典配色扁平化简约设计+跨屏自适应移动端设备,特色外贸企业建站功能模块+在线Inquiry询单功能,更有利于Google等英文搜索优化和站点收录。采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera等;同时支持移动终端的常用...
ZJI发布了9月份促销信息,针对香港华为云线路物理服务器华为一型提供立减300元优惠码,优惠后香港华为一型月付仅450元起。ZJI是原来Wordpress圈知名主机商家:维翔主机,成立于2011年,2018年9月更名为ZJI,提供中国香港、台湾、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册等业务,商家所选数据中心均为国内访问质量高的机房和线路,比如香港阿里云、华为...
六一云 成立于2018年,归属于西安六一网络科技有限公司,是一家国内正规持有IDC ISP CDN IRCS电信经营许可证书的老牌商家。大陆持证公司受大陆各部门监管不好用支持退款退现,再也不怕被割韭菜了!主要业务有:国内高防云,美国高防云,美国cera大带宽,香港CTG,香港沙田CN2,海外站群服务,物理机,宿母鸡等,另外也诚招代理欢迎咨询。官网www.61cloud.net最新直销劲爆...