php过滤sql注入关键词分析

 更新时间:2016年11月25日 15:56  点击:1464
1.使用mysql_real_escape_string代替 addslashes对输入进行转义 2.字段值两边加上单引号

str_replace替换sql 中的 update 这种做法本身就是错误的, 原因如下:

如果sql中本来就有update字段,如以下的SQL

 代码如下 复制代码
$sql = "update content = 'update your name ..' where userid=1"

那么,你用str_replace替换的后果是什么? 只要用户提交的内容中包含有update,

delete, alter均被篡改?  这是多么可怕的事!!!

那么正确的办法是什么呢?

 代码如下 复制代码
$content = mysql教程_real_escape_string($content);
$sql = "update content = '$content' where userid=1

/*
int mb_strlen ( string $str [, string $encoding ] )

 代码如下 复制代码
<?php教程
echo substr_replace("Hello world","earth",6); Hello earth
?>

值得一提的,当开始和长度都是负和,长度小于或等于开始,长度将有被设置为0的效果。

 代码如下 复制代码
<?php
substr_replace('eggs','x',-1,-1); //eggxs
substr_replace('eggs','x',-1,-2); //eggxs
substr_replace('eggs','x',-1,-2); //eggxs
?>

Same as:
<?php
substr_replace('eggs','x',-1,0); //eggxs
?>

 代码如下 复制代码
<?php
substr_replace('huevos','x',-2,-2); //huevxos
substr_replace('huevos','x',-2,-3); //huevxos
substr_replace('huevos','x',-2,-3); //huevxos
?>

Same as:

 代码如下 复制代码
<?php
substr_replace('huevos','x',-2,0); //huevxos
?>

另一个注意,如果长度为负,开始偏移为长度相同的位置,长度(再次)将具有影响被定为0。 (当然,在手册中提到,当长度为负它实际上代表了之前的立场)

 代码如下 复制代码

<?php
substr_replace('abcd', 'x', 0, -4); //xabcd
?>

Same as:
<?php
substr_replace('abcd','x',0,0); //xabcd
?>

<?php
substr_replace('abcd', 'x', 1, -3); //axbcd
?>

Same as:
<?php
substr_replace('abcd', 'x', 1, 0); //axbcd
?>

看一下参数说明


string 必需。规定要检查的字符串。
replacement 必需。规定要插入的字符串。
start 必需。规定在字符串的何处开始替换。

正数 - 在第 start 个偏移量开始替换
负数 - 在从字符串结尾的第 start 个偏移量开始替换
0 - 在字符串中的第一个字符处开始替换
 
charlist 可选。规定要替换多少个字符。

正数 - 被替换的字符串长度
负数 - 从字符串末端开始的被替换字符数
0 - 插入而非替换
 

//下面提供一三个针对函数来测试服务器的整数运算能力测试, 浮点运算能力测试和数据IO能力测试哦。
 代码如下 复制代码
    function test_int()
    {
        $timeStart = gettimeofday();
        for($i = 0; $i < 3000000; $i++);
        {
            $t = 1+1;
        }
        $timeEnd = gettimeofday();
        $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
        $time = round($time, 3)."秒";
        return $time;
    }

/*--------
    浮点运算能力测试
----------*/
  

 代码如下 复制代码
  function test_float()
    {
        $t = pi();
        $timeStart = gettimeofday();
        for($i = 0; $i < 3000000; $i++);
        {
            sqrt($t);
        }
        $timeEnd = gettimeofday();
        $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
        $time = round($time, 3)."秒";
        return $time;
    }


/*-----
    数据IO能力测试
-----*/

 代码如下 复制代码
    function test_io()
    {
        $fp = fopen(PHPSELF, "r");
        $timeStart = gettimeofday();
        for($i = 0; $i < 10000; $i++)
        {
            fread($fp, 10240);
            rewind($fp);
        }
        $timeEnd = gettimeofday();
        fclose($fp);
        $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
        $time = round($time, 3)."秒";
        return($time);
    }


 /*
  很多公司都自己写了相关的服务器针探测试工具,我们为你提供的只是三种简的整型运算,浮点运算,与io数据输出压力测试。

本程序是先利用判断服务器是否是支持curl_init如果是就模仿用户读取远程数据,并且 进行解析正则过滤不要的信息,否则就用file采集远程数据,如果服务器还不支持file就提示无法采集想要的内容
 代码如下 复制代码

$timestamp = time();
function open($file,$type=''){
        global $fromurl,$referer;
        $cachename=$file;
                if($type){
                        $file='/'.$type.'/'.$file;
                }else{
                        $file=$file;
                }
                        if($open=file($file)){
                                        $count=count($open);
                                        for($i=0;$i<$count;$i++){
                                                $theget.=$open[$i];
                                        }
                                }else{
                                        die('无法连接源站网络,请刷新');
                                }
        return $theget;
}

function cut($file,$from,$end){
        $message=explode($from,$file);
        $message=explode($end,$message[1]);
return        $message[0];
}

function curl($openurl)
{
 global $isfun;
 if($isfun=="curl"){
 $ch = curl_init($openurl);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $file = curl_exec($ch);
 curl_close($ch);
 }
 elseif($isfun=="fopen"){
  $file=open($openurl);
 }
 else{ echo "<script>alert('你的空间不支持本程序,谢谢使用');window.close();</script>";}
 return $file;
}

//使用方法

 代码如下 复制代码
$url = 'http://www.111cn.net';
$content = open($url,0);

/*
下面的函数用来判断函数是否可用
*/

 代码如下 复制代码

function isfun($funName)
 {
        return (false !== function_exists($funName))?YES:NO;
 }
?>

HTTP_REFERER这个是作用是返回上一个页面地址包,但有时会取不到,我们可以模仿它来做下面来看二种在正常的$_SERVER[\\\'HTTP_REFERER\\\']取不到值的处理方法。

//简单关于HTTP_REFERER一

 代码如下 复制代码

$phpSelf = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];

$queryString = '';
if (!empty($_SERVER['QUERY_STRING']))
{
 $queryString = '?' . $_SERVER['QUERY_STRING'];
}

echo $phpSelf . $queryString;

//实例教程二 HTTP_REFERER二

 代码如下 复制代码
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost/test.php');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER,   'http://www.baidu.com');
$data = curl_exec($ch);
curl_close($ch);
echo $data;

/* http://www.111cn.net/test.php */
die($_SERVER['HTTP_REFERER']);

[!--infotagslink--]

相关文章

  • phpems SQL注入(cookies)分析研究

    PHPEMS(PHP Exam Management System)在线模拟考试系统基于PHP+Mysql开发,主要用于搭建模拟考试平台,支持多种题型和展现方式,是国内首款支持题冒题和自动评分与教师评分相...2016-11-25
  • ASP/PHP sql注入语句整理大全

    SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作 标准注入语句1.判...2016-11-25
  • PHP防止SQL注入的例子

    防止SQL注入是我们程序开发人员必须要做的事情了,今天我们就来看一篇关于PHP防止SQL注入的例子了,具体的实现防过滤语句可以参考下面来看看吧。 使用prepared以及参...2016-11-25
  • cmd下过滤文件名称的两种方法

    这篇文章主要介绍了cmd下过滤文件名称的两种方法,需要的朋友可以参考下...2020-06-30
  • PHP中自带函数过滤sql注入代码分析

    SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或...2016-11-25
  • 站内搜索关键词变亮方法

    我们这个做法是把搜索结果出来,与搜索关键词相同的替换成高亮的字, 我们会用到str_replace(你找的关键字,你找的关键字,$str); 就这么容易了,好了下面我们来看一...2016-11-25
  • php实现搜索多关键词高亮显示程序代码

    关键词高亮在php中实现相对很简单,他只需要获取利用提取过来的关键词进行分词然后再利用str_replace()函数来实现替换就可以原理相对很简单。 项目结构: 开始搜索:...2016-11-25
  • C#中类成员的定义的修饰关键词知识点总结

    在本篇文章里小编给大家整理了关于C#中类成员的定义的修饰关键词知识点内容,有需要的朋友们可以参考下。...2020-06-25
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • 如何应对百度更新改动关键词

    网页头部head 部分:TITLE 、<mtea>部分 网站描述Description、keyword 内容中的关键词,大家优化时也都比较重视这部分的关键词优化,因为在查询搜索结果时此处出现的关键词...2017-07-06
  • JS实现获取来自百度,Google,soso,sogou关键词的方法

    这篇文章主要介绍了JS实现获取来自百度,Google,soso,sogou关键词的方法,结合实例形式分析了js获取来路页面的方法与相关搜索引擎关键词的处理技巧,需要的朋友可以参考下...2017-01-09
  • JavaScript过滤字符串中的中文与空格方法汇总

    这篇文章主要介绍了JavaScript过滤字符串中的中文与空格方法汇总 的相关资料,需要的朋友可以参考下...2016-03-09
  • sql安全之SQL注入漏洞拖库原理解析

    本文章以自己的一些经验来告诉你黑客朋友们会怎么利用你数据库的sql漏洞来把你的数据库下载哦,有需要的同这参考一下本文章。 在数据库中建立一张表: 代码...2016-11-25
  • 百度指数工具分析关键词的价值

    仅仅凭自己的感觉是根本无法判断这个关键词的价值的,那么这时候我们就可以适当的应用一下百度指数工具,利用这个工具我们可以挖掘出一些有价值的关键词。 一、从百...2016-10-10
  • C# 撒列实现关键字过滤的实例

    C# 撒列实现关键字过滤的实例,需要的朋友可以参考一下...2020-06-25
  • ASP.NET防止SQL注入的方法示例

    这篇文章主要介绍了ASP.NET防止SQL注入的方法,结合具体实例形式分析了asp.net基于字符串过滤实现防止SQL注入的相关操作技巧,需要的朋友可以参考下...2021-09-22
  • 如何挖掘网站长尾关键词

     第一、百度知道,搜搜问问等问答平台。   我们每搜一个词几乎都会有一个和这个词相关的一个问题出来,而且排名一般都比较靠前。先不说百度对百度知道的权重由多高,我们...2016-10-10
  • C#实现简单过滤非法字符实例

    这篇文章主要介绍了C#实现简单过滤非法字符的方法,涉及C#针对字符串遍历与判断的相关技巧,非常简单实用,需要的朋友可以参考下...2020-06-25
  • Python过滤序列元素的方法

    这篇文章主要介绍了Python过滤序列元素的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-31
  • 如何用QQ群把6000多指数的关键词做到首页

    关于SEO,入行入得比较早,06年就开始,然后经过培训就正式上班了,途中也有过几次跳槽,几经转折,12年来到了现在的深圳的一家公司,公司对SEO看得比较重,并且从百度获取的业务比重...2016-10-10