<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>抚琴居 &#187; Book</title>
	<atom:link href="http://www.yanbin.org/blog/category/book/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yanbin.org</link>
	<description>人虽不能要他想要的，但能做他想做的</description>
	<lastBuildDate>Wed, 03 Feb 2010 03:13:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>《PHPer》杂志第二期发布！</title>
		<link>http://www.yanbin.org/blog/phper-vol2-release.html</link>
		<comments>http://www.yanbin.org/blog/phper-vol2-release.html#comments</comments>
		<pubDate>Fri, 02 Feb 2007 03:17:20 +0000</pubDate>
		<dc:creator>yAnbiN</dc:creator>
				<category><![CDATA[Book]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[phper]]></category>

		<guid isPermaLink="false">http://www.yAnbiN.org/2007/02/02/phper_vol2_release/</guid>
		<description><![CDATA[临近年关，可能大家都忙了些，因此虽然我们已经提前做了准备，并且遵守每双月 1 号发布一期杂志的承诺，按时发布了新一期的杂志，但在编辑部内部还是感觉匆忙了些，希望下一期能有所改观。 这一期的杂志并没有我的文章，我也不再负责每期《PHP 新闻》和《编者按》，而纯粹是作为一个《安全与优化》栏目的编辑出现，现在看来自我感觉做得还不够好。坦白说，这个栏目还没有做到我心目中所要达到的高度，今后还要多多努力。 相对于第一期，这一期杂志厚度略显薄了一些。不过单就页码数（本期为 69 页）而言，我认为比较合适的。太少自然说不过去，太多则编辑压力太大，而且限于目前国内 PHP 的应用现状也会有巧妇难做无米之炊的感觉。 关于本期的文章，限于个人兴趣，我主要说说这方面的几篇文章。 先来说说我负责栏目的几篇文章。得益于近水楼台，我最先翻阅的是 heiyeluren（黑夜路人）的《分表处理设计思想和实现》这篇文章。看得出，heiyeluren 应该是一名实际经验非常丰富的 PHP 程序员了。不过我并不想再次赘述文章的内容，而是想说一个看他的几篇文章所得出来的一个非常有趣的看法：他在文末所提出问题的价值通常都高于文章本身的平均价值。:D 我甚至觉得那几个问题才是文章的点睛之笔。 除这篇文章外，还有两篇关于安全方面的文章，分别是残恤的《编写安全的 PHP 代码》和剑心的《变量没有初始化引起安全漏洞》。这两篇文章作为我个人来讲，是有点言犹未尽的感觉的。在和作者交流时，作者似乎也有类似的感觉。这可能是我催稿也有点晚，使两位作者未有充分的时间去酝酿，来不及把自己的想法完全舒展开来的缘故，下次一定要记得改进。 存储过程、触发器和视图是构建大中型应用中不可避免地所使用的技术手段，这方面特性的缺乏也是 MySQL 被经常诟病的地方之一。所幸 MySQL 已经意识到了这个问题，在 5.x 版本中已经加入了对这方面的支持。但令人遗憾的是介绍 MySQL 存储过程等新特性的文章并不多，尤其是中文文章。本期 welefen 的《MySQL 中的存储过程、触发器和视图》一篇文章相信会对很多朋友有所帮助。 h058 的《JavaScript 效率测试》一文我也仔细的看了一遍。由于我对 JavaScript 的内部结构不太熟悉，所以也是感觉收获颇丰。 另外还有李辉的《Smarty 结合 ajax 无刷新留言本实例解析》、周路明的《PHPChina 留言本实例》系列连载教程都是很不错的技术文章，是刚进 PHP 大门朋友的一份很好的参考资料。 其他都是些非技术性文章，就不多说了，感兴趣的可以去看看，放松一下。：）]]></description>
			<content:encoded><![CDATA[<p>临近年关，可能大家都忙了些，因此虽然我们已经提前做了准备，并且遵守每双月 1 号发布一期杂志的承诺，按时发布了新一期的杂志，但在编辑部内部还是感觉匆忙了些，希望下一期能有所改观。</p>
<p>这一期的杂志并没有我的文章，我也不再负责每期《PHP 新闻》和《编者按》，而纯粹是作为一个《安全与优化》栏目的编辑出现，现在看来自我感觉做得还不够好。坦白说，这个栏目还没有做到我心目中所要达到的高度，今后还要多多努力。</p>
<p>相对于第一期，这一期杂志厚度略显薄了一些。不过单就页码数（本期为 69 页）而言，我认为比较合适的。太少自然说不过去，太多则编辑压力太大，而且限于目前国内 PHP 的应用现状也会有巧妇难做无米之炊的感觉。</p>
<p>关于本期的文章，限于个人兴趣，我主要说说这方面的几篇文章。</p>
<p>先来说说我负责栏目的几篇文章。得益于近水楼台，我最先翻阅的是 heiyeluren（黑夜路人）的《分表处理设计思想和实现》这篇文章。看得出，heiyeluren 应该是一名实际经验非常丰富的 PHP 程序员了。不过我并不想再次赘述文章的内容，而是想说一个看他的几篇文章所得出来的一个非常有趣的看法：他在文末所提出问题的价值通常都高于文章本身的平均价值。:D 我甚至觉得那几个问题才是文章的点睛之笔。</p>
<p>除这篇文章外，还有两篇关于安全方面的文章，分别是残恤的《编写安全的 PHP 代码》和剑心的《变量没有初始化引起安全漏洞》。这两篇文章作为我个人来讲，是有点言犹未尽的感觉的。在和作者交流时，作者似乎也有类似的感觉。这可能是我催稿也有点晚，使两位作者未有充分的时间去酝酿，来不及把自己的想法完全舒展开来的缘故，下次一定要记得改进。</p>
<p>存储过程、触发器和视图是构建大中型应用中不可避免地所使用的技术手段，这方面特性的缺乏也是 MySQL 被经常诟病的地方之一。所幸 MySQL 已经意识到了这个问题，在 5.x 版本中已经加入了对这方面的支持。但令人遗憾的是介绍 MySQL 存储过程等新特性的文章并不多，尤其是中文文章。本期 welefen 的《MySQL 中的存储过程、触发器和视图》一篇文章相信会对很多朋友有所帮助。</p>
<p>h058 的《JavaScript 效率测试》一文我也仔细的看了一遍。由于我对 JavaScript 的内部结构不太熟悉，所以也是感觉收获颇丰。</p>
<p>另外还有李辉的《Smarty 结合 ajax 无刷新留言本实例解析》、周路明的《PHPChina 留言本实例》系列连载教程都是很不错的技术文章，是刚进 PHP 大门朋友的一份很好的参考资料。</p>
<p>其他都是些非技术性文章，就不多说了，感兴趣的可以去看看，放松一下。：）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanbin.org/blog/phper-vol2-release.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新一期的 PHP 的中文杂志《PHPer》和《PHP&amp;MORE》相继发布！</title>
		<link>http://www.yanbin.org/blog/phper-vol1-and-phpmore-vol7-release.html</link>
		<comments>http://www.yanbin.org/blog/phper-vol1-and-phpmore-vol7-release.html#comments</comments>
		<pubDate>Wed, 06 Dec 2006 23:23:05 +0000</pubDate>
		<dc:creator>yAnbiN</dc:creator>
				<category><![CDATA[Book]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php more]]></category>
		<category><![CDATA[phper]]></category>

		<guid isPermaLink="false">http://www.yAnbiN.org/2006/12/07/phper_vol1_and_phpmore_vol7_release/</guid>
		<description><![CDATA[先祝贺《PHPer》发布创刊号！新生的事物总是孕育着无限希望，祝愿《PHPer》能够坚持办刊理念，成长为 PHP 中文杂志中的一朵奇葩～ 《PHP&#38;MORE》也是在“十月怀胎（这次可真的是十个月）”后终于发布了第七期。这一期她的专题是 LAMP 的优化。 这两本杂志各有不同的风格。《PHPer》主要面向初中级的 PHP 程序员，内容较为浅显。如果你对 PHP 准备入门或刚入门却不知怎么提高的话，那么这本杂志将会很适合您阅读。但这并非就是说整本杂志都是些入门级的文章，有些还是很有深度，值得进一步研究和探讨的。《PHP&#38;MORE》基本上都是以专题的形式出现，阅读的对象相对专业一些。虽说有时出版周期过长，但所幸很多文章都值得长时间咀嚼。 光说没什么用，还是先下载下来看看吧～ 查看《PHPer》创刊号 查看《PHP&#38;MORE》第七期 btw：这两期杂志各有本人拙作一篇，欢迎砸砖，或者略去不看～:D]]></description>
			<content:encoded><![CDATA[<p>先祝贺《PHPer》发布创刊号！新生的事物总是孕育着无限希望，祝愿《PHPer》能够坚持办刊理念，成长为 PHP 中文杂志中的一朵奇葩～</p>
<p>《PHP&amp;MORE》也是在“十月怀胎（这次可真的是十个月）”后终于发布了第七期。这一期她的专题是 LAMP 的优化。</p>
<p>这两本杂志各有不同的风格。《PHPer》主要面向初中级的 PHP 程序员，内容较为浅显。如果你对 PHP 准备入门或刚入门却不知怎么提高的话，那么这本杂志将会很适合您阅读。但这并非就是说整本杂志都是些入门级的文章，有些还是很有深度，值得进一步研究和探讨的。《PHP&amp;MORE》基本上都是以专题的形式出现，阅读的对象相对专业一些。虽说有时出版周期过长，但所幸很多文章都值得长时间咀嚼。</p>
<p>光说没什么用，还是先下载下来看看吧～</p>
<h2><a href="http://www.phpchina.com/phper/1/phper.pdf" title="《PHPer》创刊号">查看《PHPer》创刊号</a></h2>
<h2><a href="http://www.phpmore.com/download/mag/07/phpmore.vol7.zip" title="《PHP&amp;MORE》第七期">查看《PHP&amp;MORE》第七期</a></h2>
<p>btw：这两期杂志各有本人拙作一篇，欢迎砸砖，或者略去不看～:D</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanbin.org/blog/phper-vol1-and-phpmore-vol7-release.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于 PHP 源代码的保护</title>
		<link>http://www.yanbin.org/blog/about-protecting-php-code.html</link>
		<comments>http://www.yanbin.org/blog/about-protecting-php-code.html#comments</comments>
		<pubDate>Thu, 26 Oct 2006 12:48:29 +0000</pubDate>
		<dc:creator>yAnbiN</dc:creator>
				<category><![CDATA[Book]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.yAnbiN.org/2006/10/26/about_protecting_php_code/</guid>
		<description><![CDATA[近日，关于如何加密 PHP 代码在 Exceed PHP 又被提起。但依我个人观点，作者可能对 PHP 的运行机制不太了解，因此所提出方案效果基本上可以说是聊胜于无。 获取 OPCode 有很多办法，也是很简单的事情，即使是加密过的 OPCode。稍微困难的是从 OPCode 还原成 PHP Code，这需要一种很好的逆向算法，但也并非不可实现。DeZend 就是一个公开的样例，更不要说还有很多半公开甚至不公开的了。 我觉得对版权的保护分为两个层次：二进制级和源代码级。所谓二进制级就是不让用户非法使用未授权的程序。但这一点很难做到。想想看 windows 下面的软件都是经过编译和加壳保护，依然不能阻挡 Cracker 的脚步，更何况是半编译的 PHP Code。所谓源代码级保护是指不让非法用户获得产品的源代码。获得源代码的非法途径通常是对代码进行反编译。目前看来很难有有效的工具来阻止这项工作，即使是 windows 下面的程序也不能阻止（windows 下一般都是“反汇编”，这个名词严格意义上不同于“反编译”）。既然不能阻止反编译，那就只好退而求次，就像把 windows 程序反汇编后得到的很少人能读懂的汇编代码一样，让非法用户即使获得了 PHP 源代码也很难读懂它。这项工作主要通过“混淆”来完成。 “混淆”有一个很常见的分支是“变量混淆”。“变量混淆”的主要原理就是机器（或者说虚拟机）对一个变量（包括函数名、类名等等）究竟是叫 $hello_world 还是叫 $#@!**&#038; 并不关心，那只是一个代号而已。目前大部分具有混淆功能的 Encoder 基本都集中在这个部分。 “混淆”的另外一个分支就是“指令混淆”。所谓“指令混淆”就是额外插入一些垃圾代码来干扰第三方正常阅读。比如我们可以把 $a = 0; 替换成 $d = 1; $e = $d ^ $d; $a = $e; 结果是一样的，但要是再复杂一些保证你不明白这是怎么回事。这可以说是一种“化简为繁”的工作，也会影响些效率。但随着机器硬件的不断发展，而且有些应用对运行效率要求并不高，所以这是可以接受的（更典型的例子就是 [...]]]></description>
			<content:encoded><![CDATA[<p>近日，关于如何加密 PHP 代码在 <a href="http://www.phpe.net/" target="_blank" title="Exceed PHP - 超越PHP">Exceed PHP</a> 又被<a href="http://club.phpe.net/index.php?act=ST&#038;f=15&#038;t=14451" target="_blank" title="关于PHP源码加密解密及PHP应用认证的一个扩展">提起</a>。但依我个人观点，作者可能对 PHP 的运行机制不太了解，因此所提出方案效果基本上可以说是聊胜于无。</p>
<p>获取 OPCode 有很多办法，也是很简单的事情，即使是加密过的 OPCode。稍微困难的是从 OPCode 还原成 PHP Code，这需要一种很好的逆向算法，但也并非不可实现。DeZend 就是一个公开的样例，更不要说还有很多半公开甚至不公开的了。 <img src='http://www.yanbin.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  </p>
<p>我觉得对版权的保护分为两个层次：二进制级和源代码级。所谓二进制级就是不让用户非法使用未授权的程序。但这一点很难做到。想想看 windows 下面的软件都是经过编译和加壳保护，依然不能阻挡 Cracker 的脚步，更何况是半编译的 PHP Code。所谓源代码级保护是指不让非法用户获得产品的源代码。获得源代码的非法途径通常是对代码进行反编译。目前看来很难有有效的工具来阻止这项工作，即使是 windows 下面的程序也不能阻止（windows 下一般都是“反汇编”，这个名词严格意义上不同于“反编译”）。既然不能阻止反编译，那就只好退而求次，就像把 windows 程序反汇编后得到的很少人能读懂的汇编代码一样，让非法用户即使获得了 PHP 源代码也很难读懂它。这项工作主要通过“混淆”来完成。</p>
<p>“混淆”有一个很常见的分支是“变量混淆”。“变量混淆”的主要原理就是机器（或者说虚拟机）对一个变量（包括函数名、类名等等）究竟是叫 $hello_world 还是叫 $#@!**&#038; 并不关心，那只是一个代号而已。目前大部分具有混淆功能的 Encoder 基本都集中在这个部分。</p>
<p>“混淆”的另外一个分支就是“指令混淆”。所谓“指令混淆”就是额外插入一些垃圾代码来干扰第三方正常阅读。比如我们可以把 <code>$a = 0; </code>替换成<code><br />
$d = 1;<br />
$e = $d ^ $d;<br />
$a = $e; </code><br />
结果是一样的，但要是再复杂一些保证你不明白这是怎么回事。这可以说是一种“化简为繁”的工作，也会影响些效率。但随着机器硬件的不断发展，而且有些应用对运行效率要求并不高，所以这是可以接受的（更典型的例子就是 dotNET 上桌面程序）。</p>
<p>“混淆”还有一个主要的分支就是“流程混淆”。流程混淆可以说是“混淆”工作的必杀技，类似汇编语言中“花指令”。它所依据的原理就是源代码和中间代码并无一一的对应关系。比如说有个 if ($a) {$b} 的语句，并非可以只能编译成“先判断 $a 是否为 true，是就跳转到 $b”这一种形式。我可以先跳转到 $c，再跳转到 $d，$d 经过 $e 等一系列垃圾运算之后再跳转到 $b。效果是一样的，貌似你很明白，但其实上你就是不明白。 8)&nbsp; PHP6 就要增加 goto 指令，这给各个 Encoder 的发挥空间也更大了。</p>
<p>目前在 Java 和 dotNET 上混淆工作大部分都集中在流程混淆上，但 PHP 方面目前大部分还停留在较初级的“变量混淆”上（ZendGuard 4 中的 Strong 级混淆也是属于“变量混淆”的范畴）。如果各位对 PHP 代码加密感兴趣，“混淆”尤其是“流程混淆”是一个很有意思的研究方向。当然反混淆是更有意思的一个方向。:) </p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanbin.org/blog/about-protecting-php-code.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc
Page Caching using apc (user agent is rejected)
Database Caching using apc
Object Caching 296/326 objects using apc

Served from: www.yanbin.org @ 2010-09-08 11:19:18 -->