我们通过前篇:web上存漏洞及原理分析、防范方法 学习,已经知道后端获取服务器变量,很多来自客户端传入的。跟普通的get,post没有什么不同。下面我们看看,常见出现漏洞代码。 1、检测文件类型,并且用用户上存文件名保存 if(isset($_FILES['img']))
{
$file = save_file($_FILES['img']);
if($file===false) exit('上存失败!');
echo "上存成功!",$file;
}
function check_file($img)
{
///读取文件
if($img['error']>0) return false;
$tmpfile = $img['tmp_name'];
$filename = $img['name'];
///读取文件扩展名
$len=strrpos($filename,".");
if($len===false) return false;
//得...
阅读全文
以前看了,很多框架,基本上很少使用相对路径包含。而一般很多做php web站点,喜欢用相对路径。 认为这样,无论目录放到那里。 只要跟另外目录关系一致。那么就不会出现问题。如果一个站点,一般都认为,如果用根目录,经常会改变网站地址,觉得很不方便。其实,我们从各大常见框架里面会发现,基本上都是采用是绝对路径方法。 相对路径带来问题 我们有如下结构的目录。 <web>(网站根目录)
├<a>文件夹
│ │
│ └a.php
├<b>文件夹
│ │
│ └b.php
└test.php
如果b.php 包含a.php (include(“../a/a.php”)) ,然后test.php 包含b.php (include(“b/b.php”)) ,我们发现很奇怪问题。
首先访问:b.php 可...
阅读全文
一直以来,在网上编辑器里面写wordpress 博客,就怕没有保存丢失内容,还有就是大量的图片上存。排版加水印等也比较复杂。 一直寻找可客户端软件,能够通过软件写wordpress博客。也可以在线管理博客! 其实,win7 自带的live write 就可以很好完成,而且它有丰富的插件。能够很方便完成图片上存,代码着色等工作。下面我们逐一介绍,希望对大家有帮助。 配置windows live writer 管理wordpress 1、添加帐号 2、配置日志 3、开始写自己的博客了 使用技巧 1.用户live wirter 多了。你会发现软件里面有,编辑模式、预览模式、源代码模式,可以很方便切换各种模式 2.图片处理简单多了,...
阅读全文
网站提供上存功能,是很多站点经常会有功能,商城,论坛还有常见一些网盘站点。常见互联网上面,我们也是经常听说,某某站点出现上存漏洞,某某开源项目有上存漏洞。 从互联网开始出现动态程序,上存漏洞像幽灵一样,频繁的出现在各种系统中。为什么,一个上存漏洞会这么频繁出现呢。而且,有些系统反复修补,多次还没有修补成功!其实主要问题,还是出现在上存原理上面。我们先看看,上存过程。 网站上存过程分析 <?php
header("Content-type: text/html; charset=utf-8");
if($_FILES)
{
echo '<pre>';
var_dump($_FILES);
echo '</pre>';
}
?>
<form action="" en...
阅读全文
通过上一篇,获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR) ,我们已经意 识到直接从http_x_forwarded_for中读取用户IP,跟我们直接从一个get,post值中读取其实没有两样。web参数检测里面一个基本原则:“一切输入都是有害的”,因此,只要是输入我们就需要进行过滤。 安全过滤后的getIP函数 function getIP() { $realip = ''; //设置默认值 if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $realip = $_SERVER['HTTP_CLIENT_IP']; } else { $realip = $_SERVER['REMOTE_ADDR']; } preg_match('/^((?:\d{1,3}\.){3}\d{1,3})/',$rea...
阅读全文
分析过程这个来自一些项目中,获取用户Ip,进行用户操作行为的记录,是常见并且经常使用的。 一般朋友,都会看到如下通用获取IP地址方法。function getIP() { if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $realip = $_SERVER['HTTP_CLIENT_IP']; } else { $realip = $_SERVER['REMOTE_ADDR']; } return $realip; }这个是网上常见获取,ip函数,用这些值获取IP,我们首先要弄清楚,这些数据是从那个地方传过来的。 IP获取来源1.'REMOTE_ADDR' 是远端IP,默认来自tcp 连接是,客户端的Ip。可以说,它最准确,确定是,只会得到直...
阅读全文
从上一篇:wordpress 3.5 filter 消息标签的名称 ,我们知道了wordpress过滤器消息灵活性。接下来,我们分析下这个具体执行过程。这个也是wordpress 优秀代码一个核心点。学习并使用该方法,应用到自己的站点中,将会给自己的系统带来很大的灵活性提升,扩展性将大大增强。其实这 类设计模式,就是”监听者模式“,先让监听者监听某个事件,只要发生某个事情,就去执行任务。对一个事件,可以添加条监控,分别执行独立任务。 不过,消息过滤模式,它有一个特点,每个执行任务将会返回一个结果,这个结果将作为下一个任务输入参数。第一个任务输入参数,就是发送消息,并且传入的参数。 是不是感觉有点晕晕啦,呵呵,如果对监听者设计模式熟悉的话...
阅读全文
wordpress 框架有很多优点,从前一篇“《我的博客》之从技术眼中分析wordpress结构优缺点” ,可以看到,它的消息标签在解耦方面扩展性有多强。 我看了,wordpress官方手册,里面没有对所有标签进行罗列。而如果你要进行wordpress插件开发,功能扩展开发。它的消息标签,是必须要有所了解的。 以下是我收集的所有filters类的消息标签,居然有500多个。 'add_menu_classes' 'admin_body_class' 'admin_comment_types_dropdown' 'admin_footer_text' 'admin_memory_limit' 'admin_post_thumbnail_html' 'admin_title' 'admin_url' 'admired_attachment_size' 'admired_author_bio_avatar_size' '...
阅读全文
我还是觉得自己开辟搭建一个独立blog平台,我常用linux服务器,因此选择php环境。 这样,我可以选择的开源博客系统会有很多。这里不对博客系统进行纵向对比。我说下,对wordpress认识过程,一些自己的体会。纯属代表个人意见,欢迎讨论! 刚开始,下载一套wordpress 3.5,然后一路安装下来,比较简单,跟常见其它一些开源平台查不到。 只要配置好数据库连接,然后一路下一步,分把钟就可以做好。 也是由于,对wordpress 早已经有所耳闻,而且感觉它名气很大,这类系统中佼佼者。 首先看看它数据库结构吧 11张表,实现了强大的博客功能,首先表示不简单。现在很多cms 基本上都是40-50个表。其中很有几张表,设计...
阅读全文
前言:看到很多同人有自己的博客,也知道它的重要性,以及带来诸多好处。 于是乎准备开始搭建一个自己的技术博客平台。分享经验教训,分享技术前瞻,聊聊自己对新鲜事务看法。 于是准备开始搭建平台了,首先遇到棘手问题就是,家按在那里呢? 博客安家在那里呢? 这个可能是很多朋友比较纠结的问题。自己建个博客站点,还是在公共平台申请呢? 可能很多朋友看到很多博客公共平台上面,有些用户流量很高,访问量也多,于是打算去申请一个。这里各有各的好处,各有各的问题。 以下分析来自个人观点,欢迎交流! 公共博客平台PK独立搭建博客 其实,我3年前在知名博客站点,开通了博客,大概2,3 个月, 排名就进入1000多位。 后来,一直没有打理...
阅读全文