php防止sql语句注入常用方法:过滤法

php防止sql语句注入常用方法:过滤法

<?
$id=$_GET["id"];
$query="SELECT * FROM my_table where id=‘".$id."‘"; //注入漏洞$result=mysql_query($query);
这里很明显我们可以用注入来获得数据库的其它内容了。
可以用下面的方法防止注入。
注入一样的,大家可以看看以前的黑防。然后我们看下面通过post方法获取变量的处理:
$text1=$_POST["text1"];
$text2=$_POST["text2"];
$text3=$_POST["text3"];
这些数据得到后要是直接写入数据库,肯定会存在很大的漏洞。
 
漏洞解决:
这个漏洞的解决方法其实很简单,就是严格对全部提交的变量进行过滤。对一些敏感的字符进行替换。我们可以借助PHP提供的htmlspecialchars()函数来替换HTML的内容。这里给出一段例子:
//构造过滤函数
function flt_tags($text)
{
$badwords=array("敏感词1","敏感词2"); //词汇过滤列表把那你认为敏感的字写在里面
$text=rtrim($text);
foreach($badwords as $badword) //这里进行词汇的过滤
{
if(stristr($text,$badword)==true){ die("错误:你提交的内容含有敏感字眼,请不要提交敏感内容。"); }
}
$text=htmlspecialchars($text); //HTML替换
//这两行把回车替换为

$text=str_replace(" "," ",$text);
$text=str_replace(" ","",$text);
$text=str_replace("&line;","│",$text); //文本数据库分隔符"&line;"替换为全角的"│"
$text=preg_replace("/s{ 2 }/"," ",$text); //空格替换
$text=preg_replace("/ /"," ",$text); //还是空格替换
if(get_magic_quotes_gpc()){ $text=stripslashes($text); } //如果magic_quotes开启,则进行‘的替换
return $text;
}

$text1=$_POST["text1"];
$text2=$_POST["text2"];
$text3=$_POST["text3"];

//过滤后的数据
//上面数据通过过滤后,就可以直接用啦,基本是安全的。

?>

时间: 2024-08-04 06:48:03

php防止sql语句注入常用方法:过滤法的相关文章

想做SQL语句注入实验,可以在JSP页面直接嵌入sql语句查询吗?

问题描述 想做SQL语句注入实验,可以在JSP页面直接嵌入sql语句查询吗? 我是名大三的学生,想请假各位大神,如果想做SQL语句注入实验,可以在JSP页面直接嵌入sql语句查询吗?还是使用ssh框架反应机制?还是其它的,有大神可以指教一下小弟吗?该课程是网络安全,主要就是想做sql语句注入检测网页漏洞的? 解决方案 直接建个环境做测试啊,网上这方面的课程很多. 解决方案二: 只要是页面有访问数据库操作的 都可以拿来做 SQL语句注入 解决方案三: 最简单的就是在页面上允许输入查询条件,在jsp

防止SQL语句注入攻击总结

-----解决方案-------------------------------------------------------- 过滤URL中的一些特殊字符,动态SQL语句使用PrepareStatement.. ------解决方案-------------------------------------------------------- 注入的方式就是在查询条件里加入SQL字符串. 可以检查一下提交的查询参数里是否包含SQL,但通常这样无益. 最好的办法是不要用拼接SQL字符串,可以用

绕过WAF继续SQL注入常用方法

这篇文章之前的名字叫做:WAF bypass for SQL injection #理论篇,我于6月17日投稿了Freebuf.链接:点击这里 现博客恢复,特发此处. Web Hacker总是生存在与WAF的不断抗争之中的,厂商不断过滤,Hacker不断绕过.WAF bypass是一个永恒的话题,不少基友也总结了很多奇技怪招.那今天我在这里做个小小的扫盲吧.先来说说WAF bypass是啥. WAF呢,简单说,它是一个Web应用程序防火墙,其功能呢是用于过滤某些恶意请求与某些关键字.WAF仅仅是

见招拆招:绕过WAF继续SQL注入常用方法

这篇文章之前的名字叫做:WAF bypass for SQL injection #理论篇,我于6月17日投稿了Freebuf.链接:点击这里 现博客恢复,特发此处. Web Hacker总是生存在与WAF的不断抗争之中的,厂商不断过滤,Hacker不断绕过.WAF bypass是一个永恒的话题,不少基友也总结了很多奇技怪招.那今天我在这里做个小小的扫盲吧.先来说说WAF bypass是啥. WAF呢,简单说,它是一个Web应用程序防火墙,其功能呢是用于过滤某些恶意请求与某些关键字.WAF仅仅是

多条件查询拼接sql语句如何防止sql注入

问题描述 假如有四个条件可以任意输入1到4个条件取交集求解 解决方案 解决方案二:引用楼主abc12346579的回复: 假如有四个条件可以任意输入1到4个条件取交集求解 你的"任意输入条件"是什么意思?如果说随便输入sql,那么这其实根本不需要注入,你都随便让人家写代码了,还要想什么"注入"方式干什么?直接干就行了.解决方案三:你要是让人家输入sql,那就相当于超市敞开大门让顾客把东西搬回家,再来讨论"如何防止盗窃"就没有意义了.解决方案四:在

mysql语句转义,sql特殊字符转义(sql防注入)

具体方法 当sql where 条件等于一串特殊符号时候 就容易报错,切断,甚至不执行,或者造成数据库危险. 下面我们简单测试下 创建测试数据  代码如下 复制代码 DROP TABLE IF EXISTS `user`; CREATE TABLE `user` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `name` varchar(255) DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=I

MySQL开启记录执行过的SQL语句方法

  这篇文章主要介绍了MySQL开启记录执行过的SQL语句方法,配置的方法很简单,本文直接给出配置示例,需要的朋友可以参考下 概述 很多时候,我们需要知道 MySQL 执行过哪些 SQL 语句,比如 MySQL 被注入后,需要知道造成什么伤害等等.只要有 SQL 语句的记录,就能知道情况并作出对策.服务器是可以开启 MySQL 的 SQL 语句记录功能,从而就能间接地检测到客户端程序的行为. 方法 开启方法很简单:编辑/etc/my.cnf文件,在[mysqld]节下面添加:log=/var/l

存储过程与SQL语句如何选择

58到家数据库30条军规,有一条是"禁止使用存储过程.视图.触发器.Event", 高并发大数据的互联网业务,架构设计思路是"解放数据库CPU,将计算转移到服务层", 并发量大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现"增机器就加性能". 数据库擅长存储与索引,在目前的互联网系统架构中,服务器的扩展要比存储的扩展更简单, 需要考虑系统可能的瓶颈在服务器还是数据存储,存储过程有它的优点,应该在开发中合理的

如何在sql语句中用java判断

问题描述 如何在sql语句中用java判断 String SQL =""select *from emp where"" +""empid='""+empid+""'"".............我想判断empid有没有值.如果有就拼在SQL里如果没有就不拼在sql里 解决方案 如果你只是想要根据判定来拼SQL的话,可以使用三目运算符.例如你的empid是String类型,则可将你的语句