
正文
php过滤sql数据 php过滤器
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
php如何防止sql注入
PHP防止sql注入是一个比较低级的问题php过滤sql数据了,这个问题其实在php过滤sql数据我大一上学期做第一个个人博客的时候就已经关注过了,不过简单的说一下关于PHP防注入的方式吧。
使用PDO防注入。
这是最简单直接的一种方式,当然低版本的PHP一般不支持PDO方式去操作,那么就只能采用其它方式。
采用escape函数过滤非法字符。
escape可以将非法字符比如 斜杠等非法字符转义,防止sql注入,这种方式简单粗暴,但是不太建议这么用。
自己手写过滤函数,手写一个php sql非法参数过滤函数来说还是比较简单的,但是你的函数需要非常的健壮,不让仍然有可能被非法黑客攻击;你的Coding水平直接决定了你的函数的健壮性。
各种框架里面其实都有对于非法字符过滤的支持,最简单的比如ThinkPHP,你可以直接防止注入。
写一个PHP扩展对于进入参数进行有选择的过滤。 开发一个PHP扩展是对于一个PHP高级程序员必备的技能,将你需要的功能打包在PHP扩展里面,就像黑词过滤一样进行检查,是非常方便的。一般都是用在自己写框架路由器转发的时候,如果你用扩展实现框架的路由器转发的话,可以顺便将参数过滤加入到PHP扩展里面,通过C去实现。
对于现在的防注入技术其实已经成熟了,对于一个站点该关心的不是防注入了,而是大规模高并发如何处理的问题,或者关于各种其他漏洞,比如现在世界上仍然有百分之80使用redis的站点存在redis漏洞,通过redis漏洞可以直接拿到机器的访问权限,一般来说都是直接给你种一个挖矿机器人来。
相关问答
Q1: php过滤sql注入,新手
我在PHP4环境下写php过滤sql数据了一个防SQL注入的代码php过滤sql数据,经过实际使用在PHP5下也兼容,欢迎大家使用修改,使用。
代码如下:
?php
/*
sqlin 防注入类
*/
class sqlin
{
//dowith_sql($value)
function dowith_sql($str)
{
$str = str_replace("and","",$str);
$str = str_replace("execute","",$str);
$str = str_replace("update","",$str);
$str = str_replace("count","",$str);
$str = str_replace("chr","",$str);
$str = str_replace("mid","",$str);
$str = str_replace("master","",$str);
$str = str_replace("truncate","",$str);
$str = str_replace("char","",$str);
$str = str_replace("declare","",$str);
$str = str_replace("select","",$str);
$str = str_replace("create","",$str);
$str = str_replace("delete","",$str);
$str = str_replace("insert","",$str);
$str = str_replace("'","",$str);
$str = str_replace(""","",$str);
$str = str_replace(" ","",$str);
$str = str_replace("or","",$str);
$str = str_replace("=","",$str);
$str = str_replace("%20","",$str);
//echo $str;
return $str;
}
//aticle()防SQL注入函数
function sqlin()
{
foreach ($_GET as $key=$value)
{
$_GET[$key]=$this-dowith_sql($value);
}
foreach ($_POST as $key=$value)
{
$_POST[$key]=$this-dowith_sql($value);
}
}
}
$dbsql=new sqlin();
?
===================================================================================
使用方式:
将以上代码复制新建一个sqlin.php的文件,然后包含在有GET或者POST数据接收的页面
原理:
将所有的SQL关键字替换为空.
Q2: 求php防止被sql 注入攻击的过滤用户输入内容的函数
function clean($v) {
//判断magic_quotes_gpc是否为打开
if (!get_magic_quotes_gpc()) {
//进行magic_quotes_gpc没有打开的情况对提交数据的过滤
$v = addslashes($v);
}
//把'_'过滤掉
$v = str_replace("_", "\_", $v);
//把'%'过滤掉
$v = str_replace("%", "\%", $v);
//把'*'过滤掉
$v = str_replace("*", "\*", $v);
//回车转换
$v = nl2br($v);
//html标记转换
$v = htmlspecialchars($v);
return $v;
}
如果需要,还可以屏蔽一下危险字符,例如insert, update, delete等
//将update去掉
$v = str_replace("update", "", $v);
最后,在拼装sql语句时,用户输入的东西,全括在单引号内
Q3: 我php 怎么过滤SQL注入啊!下面是代码
一般写存储过程屏掉单引号就成,在存储过程中最好不要拼语句。
关于php过滤sql数据和php过滤器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






