附录A:配置选项-php安全基础

尽管本书的焦点是在于应用的安全性,但有一些配置选项是任何关心安全的开发者必需熟悉的。PHP的配置会影响你所写代码的行为以及你使用的技巧,必要时你需要稍稍负责一下应用程序以外的东西。
  PHP的配置主要由一个名为php.ini的文件所指定。该文件包含很多配置选项,每一项都会对PHP产生非常特定的影响。如果该文件不存在,或者该文件中的某选项不存在,则会使用默认值。
  如果你不知道php.ini文件所在的位置,你可以使用phpinfo( )来确定PHP中对该文件路径的定义:

  图A-1 所示的第六行(配置文件(php.ini)路径)显示了php.ini的完整路径。如果只显示了路径(没有文件名),这就意味着PHP无法在所示路径找到php.ini文件。
  该文件包含的自身说明非常好,因此你可以阅读该文件并选择适合你的配置选项。而手册更是详细,所以在你需要某一选项的更多信息时,我推荐访问http://php.net/manual/ini.php

A.1. allow_url_fopen
  正如第六章所示,allow_ur[……]

Read more

第八章 共享主机-php安全基础

在共享主机环境中达到高级别的安全是不可能的。可是,通过小心的规划,你能避免一些常见的错误并防止一些最常用的攻击手段。虽然有些方法需要你的主机提供商提供协助,但也有一些其他的你自己就能做到的方法。
本章涉及伴随共享主机而产生的风险。尽管同样的安全措施可以用于防止很多攻击手段,但为了认识到问题的范围,多看一些范例是很有用的。
由于本书的焦点是应用的安全性而不是架构的安全性,我不会讨论加强服务器环境安全的技巧。如果你是一位主机提供商并需要更多关于架构安全方面的信息,我推荐下面一些资源:

Apache服务器安全, Ivan Ristic著 (O’Reilly出版社)

http://suphp.org/

http://wikipedia.org/wiki/chroot

本章中的很多示例都是演示攻击手段而不是安全措施。同样地,它们都有故意制造的漏洞。
为加强你对本章中主题的理解,我高度推荐用其中的示例进行实验。

8.1. 源码暴露
你的WEB服务器必须要能够读取你的源确并执行它,这就意味着任意人所写的代码被服务器运行时,它同样可以读取你的源码。在一个共享主机上[……]

Read more

第七章 验证与授权-php安全基础

很多Web应用被其糟糕的身份验证与授权机制所困扰。本章主要讨论相关这些机制的漏洞,传授一些帮助你不犯通病的方法。我将通过一些例子进一步说明这些方法,但请注意不要把这些示例与其上下文割裂开来看,理解其中包含的原则和方法是很重要的。只有到那个时候你才能对它们进行正确运用。
  通过验证我们可以确定一个用户的身份。典型的做法是简单地使用用户名和密码进行检查。这样我们就能确定登录用户是一个授权用户。
  身份验证,常被称为访问控制,是一种你能用来保护对受限资源的访问及确认一个用户是否有权访问特定资源的方法。例如,很多WEB应用会有只对授权用户开放的资源、只对系统管理员开放的资源以及对所有用户开放的资源。
  产生访问控制漏洞的一个主要原因是粗心大意——在Web应用中这一部分程序是最少被关心和注意的。在开发中管理功能和访问控制常常是最后考虑的,而且一般是从授权用户的出发点去考虑和编写,并没有考虑攻击者可能会使用的手段。对授权用户的信任远远高过匿名用户,但是如果你的管理功能是能通过URL直接公开访问的话,就会成为攻击者钟爱的目标。疏忽是你首要的大敌。
  为达到安全的目的,需要在设计时就综合考虑访问控制。[……]

Read more

第六章 文件与命令-php安全基础

本章主要讨论伴随着文件与shell命令的使用所产生的风险。PHP有大量的文件系统函数,与直接执行shell命令只有少量的区别。在本章中,我会着重强调开发者在使用这些功能时常犯的错误。
  总的来说,伴随这些功能所产生的风险类似于很多本书已提及的风险——使用被污染数据具有灾难性的副作用。尽管漏洞是不同的,但是用来对付它们的方法都是你已学过的方法。
6.1. 文件系统跨越
  无论你用什么方法使用文件,你都要在某个地方指定文件名。在很多情况下,文件名会作为fopen()函数的一个参数,同时其它函数会调用它返回的句柄:

  当你把被污染数据作为文件名的一部分时,漏洞就产生了:

  由于在本例中路径和文件名的前后两部分无法由攻击者所操纵,攻击的可能性受到了限制。可是,需要紧记的是有些攻击会使用NULL(在URL中表示为%00)来使字符串终止,这样就能绕过任何文件扩展名的限制。在这种情况下,最危险的攻击手段是通过使用多个../来方问上级目录,以达到文件系统跨越的目[……]

Read more

第五章 包含-php安全基础

随着PHP项目的增大,软件设计与组织在代码的可维护性上起着越来越重要的作用。尽管对于什么是最好的编程方式众说纷纭(关于面向对象优点的争论常常发生),但基本上每个开发者会理解和欣赏模块化设计的价值。
  本章说明了使用包含时会面临的安全问题。脚本中include或require的文件把你的应用分成了逻辑上分离的两部分。我还会着重强调和纠正一些常见的误解,特别是有关于如何编程的问题。
小提示
  当使用include和require时,应该使用include_once与require_once来包含。
5.1. 源码暴露
  关于包含的一个重要问题是源代码的暴露。产生这个问题主要原因是下面的常见情况:
l        对包含文件使用.inc的扩展名
l        包含文件保存在网站主目录下
l        Apache未设定.inc文件的类型
l        Apache的默认文件类型是text/plain
  上面情况造成了可以通过URL直接访问包含文件。更糟的是,它们会被作为普通文本处理而不会被PHP所解析,这样你的源代码就会显示在用户的浏览器上(见图5-1)。
  图 5-1. 源代码在服务器中[……]

Read more

第四章 会话与 Cookies-php安全基础

本章主要讨论会话和有状态的Web应用的内在风险。你会首先学习状态、cookies、与会话;然后我会讨论关于cookie盗窃、会话数据暴露、会话固定、及会话劫持的问题及防范它们的方法。
正如大家知道的,HTTP是一种无状态的协议。这说明了两个HTTP请求之间缺乏联系。由于协议中未提供任何让客户端标识自己的方法,因此服务器也就无法区分客户端。
虽然HTTP无状态的特性还是有一些好处,毕竟维护状态是比较麻烦的,但是它向需要开发有状态的Web应用的开发人员提出了前所未有的挑战。由于无法标识客户端,就不可能确认用户是否已登录,在购物车中加入商品,或者是需要注册。
一个最初由网景公司构思的超强解决方案诞生了,它就是被命名为cookies的一种状态管理机制。Cookies是对HTTP协议的扩充。更确切地说,它们由两个HTTP头部组成:Set-Cookie响应头部和Cookie请求头部。
当客户端发出对一个特定URL的请求时,服务器会在响应时选择包含一个Set-Cookie头部。它要求客户端在下面的请求中包含一个相就的Cookie头部。图4-1说明了这个基本的交互过程。

图4-1. 两个[……]

Read more

第三章 数据库及SQL-php安全基础

PHP的作用常常是沟通各种数据源及用户的桥梁。事实上,有些人认为PHP更像是一个平台而不是一个编程语言。基于这些原因,PHP频繁用于与数据库的交流。
  PHP可以很好的胜任这个任务,其原因特别是由于它能与很多种数据库连接。下面列举了PHP支持的小部分数据库:

DB2
ODBC
SQLite
InterBase
Oracle
Sybase
MySQL
PostgreSQL
DBM

  与任何的远程数据存储方式相同,数据库本身也存在着一些风险。尽管数据库安全不是本书讨论的问题,但数据库安全是需要时刻注意的,特别是关于如何对待从数据库读取作为输入的数据的问题。
  正如第一章所讨论的,所有输入必需要进行过滤,同时所有的输出必须要转义。当处理数据库时,意味着所有来自数据库的数据要过滤,所有写入数据库的数据要进行转义。

小提示
  常犯的错误是忘记了SELECT语句本身是向数据库传送的数据。尽管该语句的目的是取得数据,但语句本身则是输出。
  很多PHP开发人员不会去过滤来自数据库的数据,他们认为数据库内保存的是已过滤的数据。虽然这种做法的安全风险是很小的,但是这不是最好的做法,同时我也不推荐这样做。这种做法是基于对数据库[……]

Read more

第二章 表单及URL-php安全基础

本章主要讨论表单处理,同时还有在处理来自表单和URL数据时需要加以注意的最常见的攻击类型。你可以学到例如跨站脚本攻击(XSS)及跨站请求伪造(CSRF)等攻击方式,同时还能学到如何手工制作欺骗表单及HTTP请求。
  通过本章的学习,你不仅可以看到这些攻击方法的实例,而且可以学到防范它们的方法。

小提示
  跨站脚本攻击漏洞的产生主要是由于你误用了被污染的数据。虽说大多数应用的主要输入源是用户,但任何一个远程实体都可以向你的软件输入恶意数据。本章中所描述的多数方法直接适于用于处理任何一个远程实体的输入,而不仅仅是用户。关于输入的过滤详见第一章。
2.1. 表单与数据
       在典型的PHP应用开发中,大多数的逻辑涉及数据处理任务,例如确认用户是否成功登录,在购物车中加入商品及处理信用卡交易。
       数据可能有无数的来源,做为一个有安全意识的开发者,你需要简单可靠地区分两类数据:
l        已过滤数据
l        被污染数据
       所有你自己设定的数据可信数据,可以认为是已过滤数据。一个你自己设定的数据是任何的硬编码数据,例如下面的email地址数据:
  $email[……]

Read more

第一章 简介-php安全基础

Essential PHP Security -PHP安全基础(中文版)
本书的原版为:
Essential PHP Security 
By Chris Shiflett 
Publisher: O’Reilly 
Pub Date: October 2005 
ISBN: 0-596-00656-X 
Pages: 124 

翻译:
PHP China :alex (烂柯居士)
译者序:本书短小精捍,雅俗共赏,为了方便大家阅读中文,本人做了翻译,在www.phpchina.cn的原创和翻译专栏连载,第一稿翻译上有不通及谬误之处,请提出修改意见,谢了。
烂柯居士 上
如有问题,请Email: xuhuanchun@gmail.com
概述
由于PHP语言在建立基于数据库驱动的动态网站所表现的高度灵活性,它已成为最流行的网站开发工具之一。它同时还可以与其它开源软件如MySql数据库和Apache服务器完美结合。但是,随着越来越多的网站使用PHP开发,它们也成为了恶意攻击者的目标,因此,开发者必须要做到应对攻击的准备。
  随着攻击频度的增加,安全成为了一个需要关注的问题。《PHP安全基础》讲解了最常见的一些攻击方式[……]

Read more

解决 PHPExcel 长数字串显示为科学计数

解决 PHPExcel 长数字串显示为科学计数

在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号。

使用PHPExcel来生成excel,也会遇到同样的问题,解决方法有三种:
1、设置单元格为文本

更多的格式可以在PHPExcel/Style/NumberFormat.php中找到。注意:上述的设置对长数字字符串还是以文本方式来显示科学计数法的结果,原因可能php在处理大数字时采用的科学计数法。

2、在设置值的时候显示的指定数据类型

3、在数字字符串前加一个空格使之成为字符串

推荐使用第二、三种,第一种没有根本解决问题。

DBShop使用Gzip方式压缩页面

在模块中的module.php文件中加如下代码

然后在该文件中加入compressOutput方法

这是DBShop程序的处理方式,没有写的多么的复杂,简单易懂就可以了。

PHP开发者应了解的24个库(转发)

作为一个PHP开发者,现在是一个令人激动的时刻。每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库。下面是我曾经遇到过最酷的24个库。你最喜欢的库没有在这个列表里面?那就在评论中分享吧!

1. Dispatch – 微框架

Dispatch是一个PHP小框架。它并没有给你完整的MVC设置,但你可以定义URL规则和方法,以便更好组织应用程序。这对API、简单的站点或原型来说是完美的。

你可以匹配特定类型的HTTP请求和路径,渲染视图或做更多事情。如果你合并Dispatch和其他框架,那你就可以拥有一个相当强大并且轻量级的程序!

2. Klein – PHP快如闪电的路由

Klein是另一款针对PHP5.3+版本的轻量级路由库。虽然它有一些比Dispatch冗长的语法,但它相当快。这有一个例子:

你也可以定制来指定HTTP方法和使用正则表达式作为路径。

Read more

zend studio 整合 svn

http://jingyan.baidu.com/article/29697b9132b52eab20de3ca8.html

DBShop电子商务系统 V0.9.1 Beta 版本发布

http://bbs.dbshop.net/forum.php?mod=viewthread&tid=157

本次发布的版本更新内容如下

修正 前台编辑会员信息时,会员中心首页头像显示为空
修正 后台在模板切换设置时,出现延时问题,导致页面为切换显示的处理
修正 后台订单根据订单编号检索时产生错误的问题
修正 在ZF2框架最新版本中,有些查询可能因为条件导致出错问题
修正 删除后台数据库备份点时,当同一备份点有多个备份文件时,不能完全删除的问题
修正 后台备份数据库,然后倒入该备份后,可能导致商品id重复问题
修正 后台在编辑保存管理员信息时,添加时间变为当前编辑时间
修正 后台部分html标记错误

改进 对于某些空间商在环境中开启了魔术转义而导致内容被转义的修正
改进 前台模板js调用,js文件挪入对应模板目录,方便第三方定制处理
改进 去掉后台首页捐款链接按钮
改进 优化缩微图生成,如果宽和高都是0,则不进行缩微处理
改进 将百度编辑器升级到1.3.6
改进 前台商品搜索加入过滤机制
改进 优化前台首页,最新、推荐、特价、热门商品的显示方式,当没有数据时,不[……]

Read more

PhpStorm快捷键

http://www.cnblogs.com/jikey/p/3491798.html

 

http://blog.db89.org/phpstorm-default-shortcut/

 

http://hudeyong926.iteye.com/blog/1734768

return top