手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:php

杂谈:Zend Studio 惊爆严重安全漏洞,系国内黑客首先发现

我是在cnbeta上看到这个新闻的,不过看到这个新闻后我也有疑问,这真的算是BUG吗?还是。。。要知道注释这个东西,本来就是允许你写上html代码让你在生成DOC的时候可以以特定的格式进行输出
不过,文中所说的内容,想来应该确实算是漏洞,但我本身都是在使用zend了,还有什么不可以使用系统变量或者权限呢?随便说说。。
只是看到这个的时候,我不知道phpdoc会怎么样,他会有同样的漏洞吗?他根据图片中的注释,会生成弹出计算器的doc文档吗??

新闻如下:
著名安全从业人员Saiy于2010年7月10日在安全网站80vul.com发布了Zend Studio的安全漏洞。 通过这个漏洞,可以在操作系统中执行任意命令。 在Zend Studio 6.0以上版本中,如果开发者开启了自动提示的功能,那么在一份存在问题的工程文件里(可能是别有用心者提供的),开发者就很可能触发这个漏洞,以执行他 人指定的代码。 文章中进行了案例演示。代码中定义了一个名为A的函数,那么只要在编辑区域输入A即触发此函数,此函数启动了 Windows系统中自带的计算器软件,那么同理,它可以启动任何一个软件,也可以执行任意其他的命令…… 目前Zend公司还没有对此安全漏洞作出任何反应。 建议相关开发者关闭自动提示的功能。
大小: 122.17 K
尺寸: 500 x 282
浏览: 1785 次
点击打开新窗口浏览全图
原文地址(英文): http://80vul.com/Zend%20studio/Zend%20studio%20location%20Cross.htm

Tags: php, zend, zendstudio

PHP的面试题

求职的朋友可以看看,不过也不要想着这些就一定有用,有时候工作中的经验也是非常重要的。不过,基本知识点还是非常重要的。至于高阶中的算法问题,如果你不是做特别重要的任务,这些算法你是碰不到的(做网游的除外);高阶中的像册处理,如果你真能处理好了,你单独做一个产品出售也不成问题啊。

1. 基本知识点

  1. HTTP协议中几个状态码的含义:503 500 401 200 301 302。。。
  2. Include require include_once require_once 的区别.
  3. PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改进等等。
  4. HEREDOC介绍
  5. 写出一些php魔幻方法;
  6. 一些编译php时的configure 参数
  7. 向php传入参数的两种方法。
  8. (mysql)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;
  9. error_reporting 等调试函数使用
  10. 您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?
  11. posix和perl标准的正则表达式区别;
  12. Safe_mode 打开后哪些地方受限.
  13. 写代码来解决多进程/线程同时读写一个文件的问题。
  14. 写一段上传文件的代码。
  15. Mysql 的存储引擎,myisam和innodb的区别。

2. web 架构,安全,项目经验

  1. 介绍xdebug,apc,eAccelerator,Xcache,Zend opt的使用经验。
  2. 使用mod_rewrite,在服务器上没有/archivers/567.html这个物理文件时,重定向到index.php?id=567 ,请先打开mod_rewrite.
  3. MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
  4. 写出一种排序算法(原理),并说出优化它的方法。
  5. 请简单阐述您最得意的开发之作
  6. 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题
  7. 您是否用过模板引擎? 如果有您用的模板引擎的名字是?
  8. 请介绍Session的原理,大型网站中Session方面应注意什么?
  9. 测试php性能和mysql数据库性能的工具,和找出瓶颈的方法。
  10. 正则提出一个网页中的所有链接.
  11. 介绍一下常见的SSO(单点登陆)方案(比如dedecms整合discuz的passport)的原理。
  12. 您写过的PHP框架的特点,主要解决什么问题,与其他框架的不同点。
  13. 大型的论坛/新闻文章系统/SNS网站在性能优化上有什么区别?
  14. 相册类应用:要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达50M的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成flv供flash播放。叙述要涉及的各类开源软件和简单用途。
  15. 一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…, 如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程。

3. unix/linux 基本使用

  1. linux下查看当前系统负载信息的一些方法。
  2. vim的基本快捷键。
  3. ssh 安全增强方法;密码方式和rsa key 方式的配置。
  4. rpm/apt/yum/ports 装包,查询,删除的基本命令。
  5. Makefile的基本格式,gcc 编译,连接的命令,-O0 和-O3区别。
  6. gdb,strace,valgrind的基本使用.

4. 前端,HTML,JS

  1. css盒模型。
  2. javascript中的prototype。
  3. javascript中this对象的作用域。
  4. IE和firefox事件冒泡的不同。
  5. 什么是怪异模式,标准模式,近标准模式。
  6. DTD的定义
  7. IE/firefox常用hack.
  8. firefox,IE下的前端js/css调试工具。

原文来自http://www.162cm.com/archives/972.html
前两天在面试的时候面试官就提出,数据库什么时候关闭比较好?是让他自已关闭还是主动在代码中关闭?

Tags: php, 面试

又拍网架构-又一个用到python的网站

原文在这里:http://www.bopor.com/?p=652,我只是做个简单的转述。主要是因为这种架构在单台服务器上也可以做个参考,比如队列,当我一台服务器承受不了太大的访问时,我可以先把很多东西扔到队列里去,交由后台执行(当然是指一些比较重要而又不需要即时显示的。比如图片处理等 )

OK,不多说了,直接上原文的重点为:

分库设计,数据库拆分

XML/HTML代码
  1. 最初是由一台主库和一台从库组成,当时从库只用作备份和容灾,当主库出现故障时,从库就手动变成主库,一般情况下,从库不作读写操作(同步除外)。随着压力的增加,我们加上了memcached,当时只用其缓存单行数据。但是,单行数据的缓存并不能很好地解决压力问题,因为单行数据的查询通常很快。所以我们把一些实时性要求不高的Query放到从库去执行。后面又通过添加多个从库来分流查询压力,不过随着数据量的增加,主库的写压力也越来越大。  
怎么样对应用户和数据库呢?
· 按算法对应
· 按索引/映射表对应

分库会给你在应用的开发和部署上都带来很多麻烦。
· 不能执行跨库的关联查询
· 不能保证数据的一致/完整性
· 所有查询必须提供数据库线索
· 自增ID

XML/HTML代码
  1. 如果要在节点数据库上使用自增字段,那么我们就不能保证全局唯一。这倒不是很严重的问题,但是当节点之间的数据发生关系时,就会使得问题变得比较麻烦。我们可以再来看看上面提到的评论的例子。如果photo_comments表中的comment_id的自增字段,当我们在DB- 2.photo_comments表插入新的评论时,得到一个新的comment_id,假如值为101,而User-A的ID为1,那么我们还需要在DB-1.user_comments表中插入(1, 101 …)。 User-A是个很活跃的用户,他又评论了User-C的照片,而User-C的数据库是DB-3。很巧的是这条新评论的ID也是101,这种情况很用可能发生。那么我们又在DB-1.user_comments表中插入一行像这样(1, 101 …)的数据。那么我们要怎么设置user_comments表的主键呢(标识一行数据)?可以不设啊,不幸的是有的时候(框架、缓存等原因)必需设置。那么可以以 user_id、 comment_id和photo_id为组合主键,但是photo_id也有可能一样(的确很巧)。看来只能再加上photo_owner_id了,但是这个结果又让我们实在有点无法接受,太复杂的组合键在写入时会带来一定的性能影响,这样的自然键看起来也很不自然。所以,我们放弃了在节点上使用自增字段,想办法让这些ID变成全局唯一。为此增加了一个专门用来生成ID的数据库,这个库中的表结构都很简单,只有一个自增字段id。当我们要插入新的评论时,我们先在ID库的photo_comments表里插入一条空的记录,以获得一个唯一的评论ID。当然这些逻辑都已经封装在我们的框架里了,对于开发人员是透明的。为什么不用其它方案呢,比如一些支持incr操作的Key-Value数据库。我们还是比较放心把数据放在MySQL里。另外,我们会定期清理ID库的数据,以保证获取新ID的效率。  

我这里只有一个小纲要,更多还是看原文吧。

最后介绍一下Yupoo的资料:

作为国内最大的图片服务提供商之一,Yupoo! 的 Alexa 排名大约在 5300 左右。同时收集到的一些数据如下:
带宽:4000M/S (参考)
服务器数量:60 台左右
Web服务器:Lighttpd, Apache, nginx
应用服务器:Tomcat
其他:Python, Java, MogileFS 、ImageMagick 等

关于 Squid 与 Tomcat
Squid 与 Tomcat 似乎在 Web 2.0 站点的架构中较少看到。我首先是对 Squid 有点疑问,对此阿华的解释是”目前暂时还没找到效率比 Squid 高的缓存系统,原来命中率的确很差,后来在 Squid 前又装了层 Lighttpd, 基于 url 做 hash, 同一个图片始终会到同一台 squid 去,所以命中率彻底提高了”
对于应用服务器层的 Tomcat,现在 Yupoo! 技术人员也在逐渐用其他轻量级的东西替代,而 YPWS/YPFS 现在已经用 Python 进行开发了。

名词解释:
YPWS–Yupoo Web Server YPWS 是用 Python开发的一个小型 Web 服务器,提供基本的 Web 服务外,可以增加针对用户、图片、外链网站显示的逻辑判断,可以安装于任何有空闲资源的服务器中,遇到性能瓶颈时方便横向扩展。
YPFS–Yupoo File System 与 YPWS 类似,YPFS 也是基于这个 Web 服务器上开发的图片上传服务器。

【Updated: 有网友留言质疑 Python 的效率,Yupoo 老大刘平阳在 del.icio.us 上写到 “YPWS用Python自己写的,每台机器每秒可以处理294个请求, 现在压力几乎都在10%以下”】

图片处理层
接下来的 Image Process Server 负责处理用户上传的图片。使用的软件包也是 ImageMagick,在上次存储升级的同时,对于锐化的比率也调整过了(我个人感觉,效果的确好了很多)。”Magickd“ 是图像处理的一个远程接口服务,可以安装在任何有空闲 CPU资源的机器上,类似 Memcached的服务方式。
我们知道 Flickr 的缩略图功能原来是用 ImageMagick 软件包的,后来被雅虎收购后出于版权原因而不用了(?);EXIF 与 IPTC Flicke 是用 Perl 抽取的,我是非常建议 Yupoo! 针对 EXIF 做些文章,这也是潜在产生受益的一个重点。
图片存储层
原来 Yupoo! 的存储采用了磁盘阵列柜,基于 NFS 方式的,随着数据量的增大,”Yupoo! 开发部从07年6月份就开始着手研究一套大容量的、能满足 Yupoo! 今后发展需要的、安全可靠的存储系统“,看来 Yupoo! 系统比较有信心,也是满怀期待的,毕竟这要支撑以 TB 计算的海量图片的存储和管理。我们知道,一张图片除了原图外,还有不同尺寸的,这些图片统一存储在 MogileFS 中。
对于其他部分,常见的 Web 2.0 网站必须软件都能看到,如 MySQL、Memcached 、Lighttpd 等。Yupoo! 一方面采用不少相对比较成熟的开源软件,一方面也在自行开发定制适合自己的架构组件。这也是一个 Web 2.0 公司所必需要走的一个途径。

Tags: 架构, python, php, mq

一个被忽略的正则功能

在setting sun的博客上发现一篇 文章,他认为:

PHP代码
  1. $p = "/^(?<ip>.*) (?<time>.*)$/";    
  2. $s = "10.4.0.111 2009-09-09";    
  3. preg_match($p$s$m);    
  4. print_r($m);    

输出:

XML/HTML代码
  1. Array ( [0] => 10.4.0.111 2009-09-09 [ip] => 10.4.0.111 [1] => 10.4.0.111 [time] => 2009-09-09 [2] => 2009-09-09 )   
这个数组中有ip,time的key,他认为这是PHP5.3的功能。回复中echo说没什么特别。

事实上,这个还真不是php5.3的功能,它是PHP4.3开始就有的功能。详情可以看手册:

Pattern Syntax -- Describes PCRE regex syntax这一章。其中有一段就是:
XML/HTML代码
  1. It is possible to name the subpattern with (?P<name>pattern) since PHP 4.3.3. Array with matches will contain the match indexed by the string alongside the match indexed by a number, then.   
所以,这还真不是啥新功能,只是我们很少用到而已。顺便说一句,今天的lamp分享中,祁宏还真的提到了这一点(关于分享内容我写了博客,但祁宏讲的内容,我没有详细记录参加lamp聚会有感 ),所以我才特别有印象。
本想回复到setting sun的博客上的,但。。。后来打不开了,原文网址为:http://www.setting.cc/blog/archives/2.html

 

 

Tags: perl, preg_match, php, pattern

利用SAE监控网站

SAE是Sina App Engine(新浪应用引擎)的缩写,SAE是一个分布式web应用开发运行的服务平台,其不仅仅包含创建、部署web应用的简单交互,更涉及一整套大规 模分布式服务的解决方案。用户通过SAE可以方便的创建web应用、定制web应用、开发web应用、部署web应用、切换线上版本、删除应用,大大节省 了开发者的开发成本和运维成本。

作为大规模的分布式服务,云服务是未来的趋势,我们立志于走在云计算领域的研究开发前列,为广大web开发者提供基于云计算的更方便、快捷、可靠、节省的 应用开发运行平台,同时SAE也着眼解决新浪公司内部的资源冗余问题,为公司内部大量的web应用提供可靠的运行平台。

上面这段内容来自于SAE官方网站。云服务云服务,当然是用云来服务。GAE其实也是一个类似的玩意,其实SAE是在GAE出来了几年后才发展起来的东西,相比于GAE来说,功能是要差了一点,不过他是目前为止支持PHP最好的云。要知道google的GAE只支持java和python,虽然通过各种各样的扩展可以使得他支持jRuby,jphp之类的,但毕竟不是原生支持,而SAE才是

开通后做了一个小东西。就是PING自己的博客,当发现取不到meta数据时,就发封邮件给我。因为监控宝是半小时,我在SAE上可以跑5分钟一次。呵呵(既能刷PV,又能监控,多好啊。)

代码很简单。

PHP代码
  1. $url = 'http://www.neatstudio.com';  
  2. $tags = @get_meta_tags( $url );  
  3. if(isSet( $tags['generator'] ) && trim($tags['generator']) == 'gouki,editplus'){  
  4.     //..do nothing  
  5. }else{  
  6.     require_once'saemail.class.php' );  
  7.     $smail = new saemail();  
  8.     $title = sprintf("[%s]无法访问",date'Y-m-d H:i:s' ));  
  9.     $smail->quickSend( '13800138000@139.com' , $title , '无内容' , '******@sina.com' , '******' );  
  10. }  
然后修改config.yaml,増加cron(其实原来的config.yaml已经有cron了,只是注释掉了)

修改后,为了防止被WEB访问,再加一个

XML/HTML代码
  1. handle:  
  2.  - hostaccess: if(path ~ "/cron目录/") allow "10.0.0.0/8"  
表明只允许内网访问,不允许WEB访问,现在直接访问的时候就是403了。HOHO

过了半小时,收到了一封MAIL(因为在测试的时候,我是成功就发)

一切就是这样简单

Tags: sae, php, cron