写在前面的话 正则表达式它的强大字符串匹配功能,导致目前在各种程序语言中,都非常流行!它被用来描述或者匹配一系列符合某个句法规则的字符串。很多刚刚使用正则表达式都是从听说这个,然后在要使用时候去网上搜索。 很少人一开始就系统去学习正则表达式,从定义原理使用系统学习。因为,对应初学者觉得它太麻烦了,好多原字符。看到那么长一串字符,就很头痛。因此,也懒得去学习。一般遇到问题,直接去网上搜索。如:“邮箱正则表达式,手机号正则表达式,url正则表达式…..” ,我们发现一个很有意思现象,“怎么邮箱正则表达式可以各种各样,url正则表达式也不相同“,都出都在推荐,都说自己是正确的,到底那个是正确的呢? 从各异的正则表...
阅读全文
最近工作中,时不时有用户输入自己真实姓名,然后申请银行提款时候,遇到一些特殊字符。而输入错误,提款失败!其中最多就是少数名字,姓名中的点字符。如:某某·李四,经常有人输入:某某.李四 或 某某・李四。其中:”·・” 这2个中间点很容易输入错误。都是中间点,一个大一个细。 那一个才是中文姓名中间点呢? 作为技术开发人员,我们有办法知道,到底那个点才是中文中间分割点。因为,这些都是常见姓名字符,因此,我们只要检测下,这2个字符对应在gb2312字符集中,字符编码即可。对于计算机而言,无论多怪的字符,看起来还怎么像,其实计算机本质去区分,是按照字符在字符集中,对应编码(字符编码)来保存、传输的。 因此,...
阅读全文
这个问题很多做php开发朋友应该都有遇到过,一个启用了session_start 页面,由于执行时间过长。导致通一个用户访问,另外一个很简单的启用session_start页面一直阻塞着。 直到第一个页面执行完了。第二个页面就可以读取。这个就是,我们常说的,session阻塞机制。 我用file 存放用户session session默认以文件保存,当一个用户访问session_start页面后,这个时候,就会默认创建一个包含session_id文件名,并且这个时候,会对文件进行锁定。如果这个用户点击链接,又访问一个该站session_start网页。这是,由于session_id一样,这个页面也有读取锁定该用户存放session文件。 由于,第一个页面没有执行完,它一直锁定了该文件。 第2...
阅读全文
做web开发,我们经常会做代码走查,很多时候,我们都会抽查一些核心功能,或者常会出现漏洞的逻辑。随着技术团队的壮大,组员技术日益成熟。 常见傻瓜型SQL注入漏洞、以及XSS漏洞。会越来越少,但是我们也会发现一些新兴的隐蔽性漏洞偶尔会出现。这些漏洞,跟多来自开发人员,对一个函数、常见模块功能设计不足,遗留下的问题。以前我们能够完成一些功能模块,现在要求是要安全正确方法完成模块才行。 接下来,我会分享一些常见功能模块,由于设计原因导致漏洞出现。下面,我们先看下,读取文件型功能漏洞。 我们先看下下面一段代码,通过用户输入不同目录,包含不同文件 <?php
///读取模块名称
$mod = isset($_GET['m'])?trim($_GET['m']):'i...
阅读全文
最近工作中遇到个问题,就是有一些资源,不希望别人很派发的抓取,这样会占用我们带宽还有资源。因此,我们对页面访问做了频率限制。这样一来,又怕搜索蜘蛛给限制了。 因此,我们有个需求,就是除了常见搜索蜘蛛,其它都要做频率限制。 工作就变成了,首先我们怎么样正确表示搜索蜘蛛。 怎么样识别搜索蜘蛛 搜索引擎基本上由最先google,和国内的baidu统一了。刚开始比较混乱,后期有很多规则协议,可以遵循。基本上一些新兴的搜索引擎在访问站点时候,都会延用google制定的一些规则。它们一般都会有特定的user-agent,但是,如果我们只通过user-agent去识别搜索蜘蛛的话,那样第三方抓取程序,都会去伪造个user-agent。变成搜索...
阅读全文
看我上两篇,我们知道,上存漏洞常见有,文件名检测漏洞,还有就是文件格式检查漏洞。 另外还有个一个,就是保存文件存在漏洞。这类漏洞,主要是可以读取用户传入路径名称,采用不正确的过滤方法,导致恶意用户,将文件上存到非预期的地方,带来安全隐患。其实,我们抓住几个地方即可,我们先来分析下,既然用户要上存文件,而且文件将是多种多样格式;可能有的文件内容与用户传入格式不一致,有的文件内容还夹杂木马代码。 那么,我们让用户上存文件,跟站点文件做一个分别授权,做隔离。 让保存上存目录独立开来,目录权限只读不能执行这一步从系统设计加以授权,无论你上次什么文件,都不可能执行到。就算我不做任何检测,你的文件都上存到这...
阅读全文
通过上一篇文章,我们知道wed上存漏洞,最常见一种是文件名检测漏洞,接下来,我们看看另外一种漏洞,上存文件类型漏洞,这也是一种较为容易出现问题。 我当时就想,既然我知道我需要允许上存什么样的文件,那么,我就只允许你上存该文件。只要我文件类型判断准确了,你想上存能够执行的代码。我都给阻止掉,不就行了吗? 这确实,是个好的方法,但是我们再做的时候,往往会出现下面一些问题。 这里我们看下常见实现的php代码。 这里,常见两个问题是: 1.读取文件type,直接做文件类型判断 2.通过工具分析文件格式,以此来确认文件类型 问题一:读取文件type,判断文件类型
if(isset($_FILES['img'...
阅读全文
我们通过前篇: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.图片处理简单多了,...
阅读全文