<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/xsl/rss.xsl" type="text/xsl" media="screen"?>
<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:ppp="http://blog.sohu.com/rss/module/ppp/"
	>

	<channel>
		<title>冰憶浪子</title>
		<link>http://samuelme.blog.sohu.com/</link>
		<description><![CDATA[]]></description>
		<pubDate>Fri, 25 Apr 2008 22:16:24 +0800</pubDate>
		<generator>搜狐博客</generator>
		<ppp:ebi>51c7c47792</ppp:ebi>
		<image>
			<title>http://blog.sohu.com</title>
			<url>http://js.pp.sohu.com/ppp/blog/images/common/logo_150_60.gif</url>
			<link>http://blog.sohu.com/</link>
			<width>100</width>
			<height>43</height>
			<description>搜狐博客</description>
		</image>
		<item>
			<title>搬家了！~</title>
			<link>http://samuelme.blog.sohu.com/85670414.html</link>
			<comments>http://samuelme.blog.sohu.com/85670414.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Fri, 25 Apr 2008 22:16:24 +0800</pubDate>
			<guid>http://samuelme.blog.sohu.com/85670414.html</guid>
			<description><![CDATA[<p>我的新家：</p>
<p><a href="http://www.wuyabbs.net/">http://www.wuyabbs.net/</a></p>
<p>无涯情感社区</p>
<p>有兴趣和我一起管理的朋友加我QQ 我们详细聊下！ QQ：35295825</p>
<p>期待你的加入！</p>]]></description>
		</item>
		    
		
		<item>
			<title>韩国人真有钱.....</title>
			<link>http://samuelme.blog.sohu.com/62012510.html</link>
			<comments>http://samuelme.blog.sohu.com/62012510.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Thu, 30 Aug 2007 17:25:37 +0800</pubDate>
			<guid>http://samuelme.blog.sohu.com/62012510.html</guid>
			<description><![CDATA[<p>无聊入侵了个韩国的站，挂了马（我的马不免杀，破坏力不大....），还真挂到了几台没打补丁的机子，开了3389 连上去，吓我一条，一台PC机配置这么高，哎..... 看看我玩的这电脑CPU还是1.6GHz 内存才512MB... 韩国的机子的配置比我强好几倍... 自己看我截的图吧...</p>
<p><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://117.photo.pp.sohu.com/images/blog/2007/8/30/17/19/1154ffa56d5.jpg" border="0" /></p>
<p>&nbsp;</p>
<p><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://120.img.pp.sohu.com/images/blog/2007/8/30/17/22/11550419b4d.jpg" border="0" /></p><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://119.img.pp.sohu.com/images/blog/2007/8/30/17/23/11550426089.jpg" border="0" /><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://119.img.pp.sohu.com/images/blog/2007/8/30/17/23/11550428349.jpg" border="0" /><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://118.img.pp.sohu.com/images/blog/2007/8/30/17/20/115503a8c4d.jpg" border="0" />]]></description>
		</item>
		    
		
		<item>
			<title>确保 PHP 应用程序的安全：防止 SQL 注入攻击</title>
			<link>http://samuelme.blog.sohu.com/61525271.html</link>
			<comments>http://samuelme.blog.sohu.com/61525271.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Mon, 27 Aug 2007 14:22:04 +0800</pubDate>
			<guid>http://samuelme.blog.sohu.com/61525271.html</guid>
			<description><![CDATA[在 SQL 注入攻击 中，用户通过操纵表单或 GET 查询字符串，将信息添加到数据库查询中。例如，假设有一个简单的登录数据库。这个数据库中的每个记录都有一个用户名字段和一个密码字段。构建一个登录表单，让用户能够登录。<br /><br /><br />清单 5. 简单的登录表单<br />
<blockquote><font face="Times New Roman" size="1">code:</font> 
<hr />
<font color="#009900"><br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;Login&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form action=&quot;verify.php&quot; method=&quot;post&quot;&gt;<br />&lt;p&gt;&lt;label for='user'&gt;Username&lt;/label&gt;<br />&lt;input type='text' name='user' id='user'/&gt;<br />&lt;/p&gt;<br />&lt;p&gt;&lt;label for='pw'&gt;Password&lt;/label&gt;<br />&lt;input type='password' name='pw' id='pw'/&gt;<br />&lt;/p&gt;<br />&lt;p&gt;&lt;input type='submit' value='login'/&gt;&lt;/p&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></font>
<hr />
</blockquote><br /><br />这个表单接受用户输入的用户名和密码，并将用户输入提交给名为 verify.php 的文件。在这个文件中，PHP 处理来自登录表单的数据，如下所示：<br /><br /><br />清单 6. 不安全的 PHP 表单处理代码<br /><br /><code><font color="#000000"><font color="#0000bb">&lt;?php&nbsp;<br /><br />$okay&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">0</font><font color="#007700">;<br /><br /></font><font color="#0000bb">$username&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'user'</font><font color="#007700">];<br /><br /></font><font color="#0000bb">$pw&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'pw'</font><font color="#007700">];<br /><br /><br /><br /></font><font color="#0000bb">$sql&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">&quot;select&nbsp;count(*)&nbsp;as&nbsp;ctr&nbsp;from&nbsp;users&nbsp;where&nbsp;<br /><br />&nbsp;username='&quot;</font><font color="#007700">.</font><font color="#0000bb">$username</font><font color="#007700">.</font><font color="#dd0000">&quot;'&nbsp;and&nbsp;password='&quot;</font><font color="#007700">.&nbsp;</font><font color="#0000bb">$pw</font><font color="#007700">.</font><font color="#dd0000">&quot;'&nbsp;limit&nbsp;1&quot;</font><font color="#007700">;<br /><br />&nbsp;<br /><br /></font><font color="#0000bb">$result&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">mysql_query</font><font color="#007700">(</font><font color="#0000bb">$sql</font><font color="#007700">);<br /><br /><br /><br />while&nbsp;(</font><font color="#0000bb">$data&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">mysql_fetch_object</font><font color="#007700">(</font><font color="#0000bb">$result</font><font color="#007700">)){<br /><br />&nbsp;if&nbsp;(</font><font color="#0000bb">$data</font><font color="#007700">-&gt;</font><font color="#0000bb">ctr&nbsp;</font><font color="#007700">==&nbsp;</font><font color="#0000bb">1</font><font color="#007700">){<br /><br />&nbsp;&nbsp;</font><font color="#ff8000">//they're&nbsp;okay&nbsp;to&nbsp;enter&nbsp;the&nbsp;application!<br /><br />&nbsp;&nbsp;</font><font color="#0000bb">$okay&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">1</font><font color="#007700">;<br /><br />&nbsp;}<br /><br />}<br /><br /><br /><br />if&nbsp;(</font><font color="#0000bb">$okay</font><font color="#007700">){<br /><br />&nbsp;</font><font color="#0000bb">$_SESSION</font><font color="#007700">[</font><font color="#dd0000">'loginokay'</font><font color="#007700">]&nbsp;=&nbsp;</font><font color="#0000bb">true</font><font color="#007700">;<br /><br />&nbsp;</font><font color="#0000bb">header</font><font color="#007700">(</font><font color="#dd0000">&quot;index.php&quot;</font><font color="#007700">);<br /><br />}else{<br /><br />&nbsp;</font><font color="#0000bb">header</font><font color="#007700">(</font><font color="#dd0000">&quot;login.php&quot;</font><font color="#007700">);<br /><br />}<br /><br />&nbsp;</font><font color="#0000bb">?&gt;</font> </font></code><br /><br />这段代码看起来没问题，对吗？世界各地成百（甚至成千）的 PHP/MySQL 站点都在使用这样的代码。它错在哪里？好，记住 &ldquo;不能信任用户输入&rdquo;。这里没有对来自用户的任何信息进行转义，因此使应用程序容易受到攻击。具体来说，可能会出现任何类型的 SQL 注入攻击。<br /><br />例如，如果用户输入 foo 作为用户名，输入 ' or '1'='1 作为密码，那么实际上会将以下字符串传递给 PHP，然后将查询传递给 MySQL：<br /><code><font color="#000000"><font color="#0000bb">&lt;?php&nbsp;<br /><br />$sql&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">&quot;select&nbsp;count(*)&nbsp;as&nbsp;ctr&nbsp;&nbsp;from&nbsp;users&nbsp;where&nbsp;<br /><br />&nbsp;&nbsp;username='foo'&nbsp;and&nbsp;password=''&nbsp;or&nbsp;'1'='1'&nbsp;limit&nbsp;1&quot;</font><font color="#007700">;<br /><br />&nbsp;</font><font color="#0000bb">?&gt;</font> </font></code><br /><br />这个查询总是返回计数值 1，因此 PHP 会允许进行访问。通过在密码字符串的末尾注入某些恶意 SQL，黑客就能装扮成合法的用户。<br /><br />解决这个问题的办法是，将 PHP 的内置 mysql_real_escape_string() 函数用作任何用户输入的包装器。这个函数对字符串中的字符进行转义，使字符串不可能传递撇号等特殊字符并让 MySQL 根据特殊字符进行操作。清单 7 展示了带转义处理的代码。<br /><br /><br />清单 7. 安全的 PHP 表单处理代码<br /><code><font color="#000000"><font color="#0000bb">&lt;?php&nbsp;<br /><br />$okay&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">0</font><font color="#007700">;<br /><br /></font><font color="#0000bb">$username&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'user'</font><font color="#007700">];<br /><br /></font><font color="#0000bb">$pw&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'pw'</font><font color="#007700">];<br /><br /><br /><br /></font><font color="#0000bb">$sql&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">&quot;select&nbsp;count(*)&nbsp;as&nbsp;ctr&nbsp;from&nbsp;users&nbsp;where&nbsp;<br /><br />&nbsp;&nbsp;username='&quot;</font><font color="#007700">.</font><font color="#0000bb">mysql_real_escape_string</font><font color="#007700">(</font><font color="#0000bb">$username</font><font color="#007700">).</font><font color="#dd0000">&quot;'&nbsp;<br /><br />&nbsp;&nbsp;and&nbsp;password='&quot;</font><font color="#007700">.&nbsp;</font><font color="#0000bb">mysql_real_escape_string</font><font color="#007700">(</font><font color="#0000bb">$pw</font><font color="#007700">).</font><font color="#dd0000">&quot;'&nbsp;limit&nbsp;1&quot;</font><font color="#007700">;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;<br /><br /></font><font color="#0000bb">$result&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">mysql_query</font><font color="#007700">(</font><font color="#0000bb">$sql</font><font color="#007700">);<br /><br /><br /><br />while&nbsp;(</font><font color="#0000bb">$data&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">mysql_fetch_object</font><font color="#007700">(</font><font color="#0000bb">$result</font><font color="#007700">)){<br /><br />&nbsp;if&nbsp;(</font><font color="#0000bb">$data</font><font color="#007700">-&gt;</font><font color="#0000bb">ctr&nbsp;</font><font color="#007700">==&nbsp;</font><font color="#0000bb">1</font><font color="#007700">){<br /><br />&nbsp;&nbsp;</font><font color="#ff8000">//they're&nbsp;okay&nbsp;to&nbsp;enter&nbsp;the&nbsp;application!<br /><br />&nbsp;&nbsp;</font><font color="#0000bb">$okay&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">1</font><font color="#007700">;<br /><br />&nbsp;}<br /><br />}<br /><br /><br /><br />if&nbsp;(</font><font color="#0000bb">$okay</font><font color="#007700">){<br /><br />&nbsp;</font><font color="#0000bb">$_SESSION</font><font color="#007700">[</font><font color="#dd0000">'loginokay'</font><font color="#007700">]&nbsp;=&nbsp;</font><font color="#0000bb">true</font><font color="#007700">;<br /><br />&nbsp;</font><font color="#0000bb">header</font><font color="#007700">(</font><font color="#dd0000">&quot;index.php&quot;</font><font color="#007700">);<br /><br />}else{<br /><br />&nbsp;</font><font color="#0000bb">header</font><font color="#007700">(</font><font color="#dd0000">&quot;login.php&quot;</font><font color="#007700">);<br /><br />}<br /><br />&nbsp;</font><font color="#0000bb">?&gt;</font> </font></code><br /><br />使用 mysql_real_escape_string() 作为用户输入的包装器，就可以避免用户输入中的任何恶意 SQL 注入。如果用户尝试通过 SQL 注入传递畸形的密码，那么会将以下查询传递给数据库：<br /><code><font color="#000000"><font color="#0000bb">&lt;?php&nbsp;<br /><br />select&nbsp;count</font><font color="#007700">(*)&nbsp;as&nbsp;</font><font color="#0000bb">ctr&nbsp;from&nbsp;users&nbsp;where&nbsp;username</font><font color="#007700">=</font><font color="#dd0000">'foo'&nbsp;</font><font color="#007700">and&nbsp;</font><font color="#0000bb">password</font><font color="#007700">=</font><font color="#dd0000">''&nbsp;or&nbsp;'1'='1'&nbsp;</font><font color="#0000bb">limit&nbsp;1</font><font color="#dd0000">&quot;<br /><br />&nbsp;?&gt;</font> </font></code><br /><br />数据库中没有任何东西与这样的密码匹配。仅仅采用一个简单的步骤，就堵住了 Web 应用程序中的一个大漏洞。这里得出的经验是，总是应该对 SQL 查询的用户输入进行转义。<br /><br />但是，还有几个安全漏洞需要堵住。下一项是操纵 GET 变量。]]></description>
		</item>
		    
		
		<item>
			<title>确保 PHP 应用程序的安全：Web 安全性</title>
			<link>http://samuelme.blog.sohu.com/61263468.html</link>
			<comments>http://samuelme.blog.sohu.com/61263468.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Sat, 25 Aug 2007 17:25:12 +0800</pubDate>
			<guid>http://samuelme.blog.sohu.com/61263468.html</guid>
			<description><![CDATA[在讨论实现安全性的细节之前，最好从比较高的角度讨论 Web 应用程序安全性。本节介绍安全哲学的一些基本信条，无论正在创建何种 Web 应用程序，都应该牢记这些信条。这些思想的一部分来自 Chris Shiflett（他关于 PHP 安全性的书是无价的宝库），一些来自 Simson Garfinkel（参见 参考资料），还有一些来自多年积累的知识。<br /><br /><b>规则 1：绝不要信任外部数据或输入</b><br /><br />关于 Web 应用程序安全性，必须认识到的第一件事是不应该信任外部数据。外部数据（outside data） 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前，来自任何其他来源（比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie）的任何数据都是不可信任的。<br /><br />例如，下面的数据元素可以被认为是安全的，因为它们是在 PHP 中设置的。<br /><br />清单 1. 安全无暇的代码<br /><code><font color="#000000"><font color="#0000bb">&lt;?php&nbsp;<br /><br />$myUsername&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">'tmyer'</font><font color="#007700">;<br /><br /></font><font color="#0000bb">$arrayUsers&nbsp;</font><font color="#007700">=&nbsp;array(</font><font color="#dd0000">'tmyer'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'tom'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'tommy'</font><font color="#007700">);<br /><br /></font><font color="#0000bb">define</font><font color="#007700">(</font><font color="#dd0000">&quot;GREETING&quot;</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'hello&nbsp;there'&nbsp;</font><font color="#007700">.&nbsp;</font><font color="#0000bb">$myUsername</font><font color="#007700">);<br /><br />&nbsp;</font><font color="#0000bb">?&gt;</font> </font></code><br /><br />但是，下面的数据元素都是有瑕疵的。<br /><br />清单 2. 不安全、有瑕疵的代码<br /><code><font color="#000000"><font color="#0000bb">&lt;?php&nbsp;<br /><br />$myUsername&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'username'</font><font color="#007700">];&nbsp;</font><font color="#ff8000">//tainted!<br /><br /></font><font color="#0000bb">$arrayUsers&nbsp;</font><font color="#007700">=&nbsp;array(</font><font color="#0000bb">$myUsername</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'tom'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'tommy'</font><font color="#007700">);&nbsp;</font><font color="#ff8000">//tainted!<br /><br /></font><font color="#0000bb">define</font><font color="#007700">(</font><font color="#dd0000">&quot;GREETING&quot;</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'hello&nbsp;there'&nbsp;</font><font color="#007700">.&nbsp;</font><font color="#0000bb">$myUsername</font><font color="#007700">);&nbsp;</font><font color="#ff8000">//tainted!<br /><br />&nbsp;</font><font color="#0000bb">?&gt;</font> </font></code><br /><br />为什么第一个变量 $myUsername 是有瑕疵的？因为它直接来自表单 POST。用户可以在这个输入域中输入任何字符串，包括用来清除文件或运行以前上传的文件的恶意命令。您可能会问，&ldquo;难道不能使用只接受字母 A-Z 的客户端（JavaScript）表单检验脚本来避免这种危险吗？&rdquo;是的，这总是一个有好处的步骤，但是正如在后面会看到的，任何人都可以将任何表单下载到自己的机器上，修改它，然后重新提交他们需要的任何内容。<br /><br />解决方案很简单：必须对 $_POST['username'] 运行清理代码。如果不这么做，那么在使用 $myUsername 的任何其他时候（比如在数组或常量中），就可能污染这些对象。<br /><br />对用户输入进行清理的一个简单方法是，使用正则表达式来处理它。在这个示例中，只希望接受字母。将字符串限制为特定数量的字符，或者要求所有字母都是小写的，这可能也是个好主意。<br /><br /><br />清单 3. 使用户输入变得安全<br /><code><font color="#000000"><font color="#0000bb">&lt;?php&nbsp;<br /><br />$myUsername&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">cleanInput</font><font color="#007700">(</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'username'</font><font color="#007700">]);&nbsp;</font><font color="#ff8000">//clean!<br /><br /></font><font color="#0000bb">$arrayUsers&nbsp;</font><font color="#007700">=&nbsp;array(</font><font color="#0000bb">$myUsername</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'tom'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'tommy'</font><font color="#007700">);&nbsp;</font><font color="#ff8000">//clean!<br /><br /></font><font color="#0000bb">define</font><font color="#007700">(</font><font color="#dd0000">&quot;GREETING&quot;</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'hello&nbsp;there'&nbsp;</font><font color="#007700">.&nbsp;</font><font color="#0000bb">$myUsername</font><font color="#007700">);&nbsp;</font><font color="#ff8000">//clean!<br /><br /><br /><br /></font><font color="#007700">function&nbsp;</font><font color="#0000bb">cleanInput</font><font color="#007700">(</font><font color="#0000bb">$input</font><font color="#007700">){<br /><br />&nbsp;</font><font color="#0000bb">$clean&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">strtolower</font><font color="#007700">(</font><font color="#0000bb">$input</font><font color="#007700">);<br /><br />&nbsp;</font><font color="#0000bb">$clean&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">preg_replace</font><font color="#007700">(</font><font color="#dd0000">&quot;/[^a-z]/&quot;</font><font color="#007700">,&nbsp;</font><font color="#dd0000">&quot;&quot;</font><font color="#007700">,&nbsp;</font><font color="#0000bb">$clean</font><font color="#007700">);<br /><br />&nbsp;</font><font color="#0000bb">$clean&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$clean</font><font color="#007700">,</font><font color="#0000bb">0</font><font color="#007700">,</font><font color="#0000bb">12</font><font color="#007700">);<br /><br />&nbsp;return&nbsp;</font><font color="#0000bb">$clean</font><font color="#007700">;<br /><br />}<br /><br />&nbsp;</font><font color="#0000bb">?&gt;</font> </font></code><br /><br /><br /><b>规则 2：禁用那些使安全性难以实施的 PHP 设置</b><br /><br />已经知道了不能信任用户输入，还应该知道不应该信任机器上配置 PHP 的方式。例如，要确保禁用 register_globals。如果启用了 register_globals，就可能做一些粗心的事情，比如使用 $variable 替换同名的 GET 或 POST 字符串。通过禁用这个设置，PHP 强迫您在正确的名称空间中引用正确的变量。要使用来自表单 POST 的变量，应该引用 $_POST['variable']。这样就不会将这个特定变量误会成 cookie、会话或 GET 变量。<br /><br />要检查的第二个设置是错误报告级别。在开发期间，希望获得尽可能多的错误报告，但是在交付项目时，希望将错误记录到日志文件中，而不是显示在屏幕上。为什么呢？因为恶意的黑客会使用错误报告信息（比如 SQL 错误）来猜测应用程序正在做什么。这种侦察可以帮助黑客突破应用程序。为了堵住这个漏洞，需要编辑 php.ini 文件，为 error_log 条目提供合适的目的地，并将 display_errors 设置为 Off。<br /><br /><b>规则 3：如果不能理解它，就不能保护它</b><br /><br />一些开发人员使用奇怪的语法，或者将语句组织得很紧凑，形成简短但是含义模糊的代码。这种方式可能效率高，但是如果您不理解代码正在做什么，那么就无法决定如何保护它。<br /><br />例如，您喜欢下面两段代码中的哪一段？<br /><br /><br />清单 4. 使代码容易得到保护<br /><code><font color="#000000"><font color="#0000bb">&lt;?php&nbsp;<br /><br /></font><font color="#ff8000">//obfuscated&nbsp;code<br /><br /></font><font color="#0000bb">$input&nbsp;</font><font color="#007700">=&nbsp;(isset(</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'username'</font><font color="#007700">])&nbsp;?&nbsp;</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'username'</font><font color="#007700">]:</font><font color="#dd0000">''</font><font color="#007700">);<br /><br /><br /><br /></font><font color="#ff8000">//unobfuscated&nbsp;code<br /><br /></font><font color="#0000bb">$input&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">''</font><font color="#007700">;<br /><br /><br /><br />if&nbsp;(isset(</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'username'</font><font color="#007700">])){<br /><br />&nbsp;</font><font color="#0000bb">$input&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'username'</font><font color="#007700">];<br /><br />}else{<br /><br />&nbsp;</font><font color="#0000bb">$input&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">''</font><font color="#007700">;<br /><br />}<br /><br />&nbsp;</font><font color="#0000bb">?&gt;</font> </font></code><br /><br />在第二个比较清晰的代码段中，很容易看出 $input 是有瑕疵的，需要进行清理，然后才能安全地处理。<br /><br /><br /><b>规则 4：&ldquo;纵深防御&rdquo; 是新的法宝</b><br /><br />本教程将用示例来说明如何保护在线表单，同时在处理表单的 PHP 代码中采用必要的措施。同样，即使使用 PHP regex 来确保 GET 变量完全是数字的，仍然可以采取措施确保 SQL 查询使用转义的用户输入。<br /><br />纵深防御不只是一种好思想，它可以确保您不会陷入严重的麻烦。<br /><br />既然已经讨论了基本规则，现在就来研究第一种威胁：SQL 注入攻击。]]></description>
		</item>
		    
		
		<item>
			<title>确保 PHP 应用程序的安全：远程表单提交</title>
			<link>http://samuelme.blog.sohu.com/61160647.html</link>
			<comments>http://samuelme.blog.sohu.com/61160647.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Fri, 24 Aug 2007 21:50:20 +0800</pubDate>
			<category>技术文章</category>
			<guid>http://samuelme.blog.sohu.com/61160647.html</guid>
			<description><![CDATA[Web 的好处是可以分享信息和服务。坏处也是可以分享信息和服务，因为有些人做事毫无顾忌。<br /><br />以表单为例。任何人都能够访问一个 Web 站点，并使用浏览器上的 File &gt; Save As 建立表单的本地副本。然后，他可以修改 action 参数来指向一个完全限定的 URL（不指向 formHandler.php，而是指向 http://www.yoursite.com/formHandler.php，因为表单在这个站点上），做他希望的任何修改，点击 Submit，服务器会把这个表单数据作为合法通信流接收。<br /><br />首先可能考虑检查 $_SERVER['HTTP_REFERER']，从而判断请求是否来自自己的服务器，这种方法可以挡住大多数恶意用户，但是挡不住最高明的黑客。这些人足够聪明，能够篡改头部中的引用者信息，使表单的远程副本看起来像是从您的服务器提交的。<br /><br />处理远程表单提交更好的方式是，根据一个惟一的字符串或时间戳生成一个令牌，并将这个令牌放在会话变量和表单中。提交表单之后，检查两个令牌是否匹配。如果不匹配，就知道有人试图从表单的远程副本发送数据。<br /><br />要创建随机的令牌，可以使用 PHP 内置的 md5()、uniqid() 和 rand() 函数，如下所示：<br /><br /><br />清单 18. 防御远程表单提交<br /><br /><code><font color="#000000"><font color="#0000bb">&lt;?php&nbsp;<br /><br />session_start</font><font color="#007700">();<br /><br />if&nbsp;(</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'submit'</font><font color="#007700">]&nbsp;==&nbsp;</font><font color="#dd0000">&quot;go&quot;</font><font color="#007700">){<br /><br />&nbsp;</font><font color="#ff8000">//check&nbsp;token<br /><br />&nbsp;</font><font color="#007700">if&nbsp;(</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'token'</font><font color="#007700">]&nbsp;==&nbsp;</font><font color="#0000bb">$_SESSION</font><font color="#007700">[</font><font color="#dd0000">'token'</font><font color="#007700">]){<br /><br />&nbsp;&nbsp;</font><font color="#ff8000">//strip_tags<br /><br />&nbsp;&nbsp;</font><font color="#0000bb">$name&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">strip_tags</font><font color="#007700">(</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">'name'</font><font color="#007700">]);<br /><br />&nbsp;&nbsp;</font><font color="#0000bb">$name&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$name</font><font color="#007700">,</font><font color="#0000bb">0</font><font color="#007700">,</font><font color="#0000bb">40</font><font color="#007700">);<br /><br />&nbsp;&nbsp;</font><font color="#ff8000">//clean&nbsp;out&nbsp;any&nbsp;potential&nbsp;hexadecimal&nbsp;characters<br /><br />&nbsp;&nbsp;</font><font color="#0000bb">$name&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">cleanHex</font><font color="#007700">(</font><font color="#0000bb">$name</font><font color="#007700">);<br /><br />&nbsp;&nbsp;</font><font color="#ff8000">//continue&nbsp;processing....<br /><br />&nbsp;</font><font color="#007700">}else{<br /><br />&nbsp;&nbsp;</font><font color="#ff8000">//stop&nbsp;all&nbsp;processing!&nbsp;remote&nbsp;form&nbsp;posting&nbsp;attempt!<br /><br />&nbsp;</font><font color="#007700">}<br /><br />}<br /><br /><br /><br /></font><font color="#0000bb">$token&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">md5</font><font color="#007700">(</font><font color="#0000bb">uniqid</font><font color="#007700">(</font><font color="#0000bb">rand</font><font color="#007700">(),&nbsp;</font><font color="#0000bb">true</font><font color="#007700">));<br /><br /></font><font color="#0000bb">$_SESSION</font><font color="#007700">[</font><font color="#dd0000">'token'</font><font color="#007700">]=&nbsp;</font><font color="#0000bb">$token</font><font color="#007700">;<br /><br /><br /><br /><br /><br />function&nbsp;</font><font color="#0000bb">cleanHex</font><font color="#007700">(</font><font color="#0000bb">$input</font><font color="#007700">){<br /><br />&nbsp;</font><font color="#0000bb">$clean&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">preg_replace</font><font color="#007700">(</font><font color="#dd0000">&quot;![][xX]([A-Fa-f0-9]{1,3})!&quot;</font><font color="#007700">,&nbsp;</font><font color="#dd0000">&quot;&quot;</font><font color="#007700">,</font><font color="#0000bb">$input</font><font color="#007700">);<br /><br />&nbsp;return&nbsp;</font><font color="#0000bb">$clean</font><font color="#007700">;<br /><br />}<br /><br />&nbsp;</font><font color="#0000bb">?&gt;</font> </font></code><br /><br />&lt;form action=&quot;&lt;?php echo $_SERVER['PHP_SELF'];?&gt;&quot; method=&quot;post&quot;&gt;<br />&lt;p&gt;&lt;label for=&quot;name&quot;&gt;Name&lt;/label&gt;<br />&lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;name&quot; size=&quot;20&quot; maxlength=&quot;40&quot;/&gt;&lt;/p&gt;<br />&lt;input type=&quot;hidden&quot; name=&quot;token&quot; value=&quot;&lt;?php echo $token;?&gt;&quot;/&gt;<br />&lt;p&gt;&lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;go&quot;/&gt;&lt;/p&gt;<br />&lt;/form&gt; <br /><br /><br /><br />这种技术是有效的，这是因为在 PHP 中会话数据无法在服务器之间迁移。即使有人获得了您的 PHP 源代码，将它转移到自己的服务器上，并向您的服务器提交信息，您的服务器接收的也只是空的或畸形的会话令牌和原来提供的表单令牌。它们不匹配，远程表单提交就失败了。]]></description>
		</item>
		    
		
		<item>
			<title>美国军官评论中国98年特大洪水，鲜为人知的秘密</title>
			<link>http://samuelme.blog.sohu.com/55563237.html</link>
			<comments>http://samuelme.blog.sohu.com/55563237.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Tue, 17 Jul 2007 13:53:49 +0800</pubDate>
			<guid>http://samuelme.blog.sohu.com/55563237.html</guid>
			<description><![CDATA[<div>一位美国军事情报部的军官的肺腑之言&nbsp; &nbsp;&nbsp; &nbsp; ：<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不知道，还有多少人能够记得，两伊战争。我是一名前美国陆军军官，我当时是军事情报部的人，他们从伊朗那里送回来一些，炮弹碎片给我，我交给当时的军事研究室。经过大卫博士和他的小组鉴定，那是出自中国130mm1970榴弹炮，此时，美国国防部随同来的长官，满脸惊讶。后来得知，该炮弹是伊拉克射击伊朗的，射程超过美105榴弹炮1公里，也比苏制DM30要远，并且从碎片，以及爆裂程度来看，所采用的钢材质地极好，那时候，我就知道中国常规武器很出色。 <br />　　　　 <br />　　　　 1998年中国遭受很大的洪水，淹没很多城市，当时北京宣布调动中国军队，开始救援工作。在长沙。一个决口的地方，我们通过军事卫星可以清楚的看到，中国军队，整营，整团队的跑到江岸，扛着麻袋估计是土。他们分不来那一位是团长，那一位是士兵，都赤膊上阵。后来这个地方发现塌方，我看到本世纪最精彩，也让我最为震撼的一幕：一排排士兵，军官，跳入水中，手挽手，可以从卫星发回来的图片上看得很清楚。 <br />　　　　 <br />　　　　 我们那时不停地报道中国相关情况，通过我们的卫星图象。后来军部说要删除一段，我奉命执行。但是我亲眼看到。那是一位中将长官，站在齐腰水里，指挥着他的士兵。用一排排人墙挡住洪水。这就是中国军队！ <br />　　　　 <br />　　　　 我这才明白，中国军队并不象那些从台湾，日本，甚至他们国内传来的消息说的那样，什么中国士兵，缺乏组织，几乎不听调遣。并且个个爱财如命等等诽谤。在具有高速流速的洪水里，用身体阻挡水流是几乎会送命的。这跟打仗没什么区别。而中国军队2个小时没有一个人上来，连一位少将，都在那里。删除的目的按中国的说法就是&ldquo;不能长别人的志气&rdquo;。我真不明白那些愚蠢的家伙，干吗要撒谎，国防部花了几百万美元买来的情报，好多都是假的。 <br />　　　　 <br />　　　　 看来，这是中国用无硝烟的手段，在证明给我们看。在警告我们，他们仍然是50年前击败过美国军队的中国军队。再来看看，我们美国的士兵们。开坦克要有空调。航母上要有酒吧。我们在伊拉克作战，当我们躺在开着空调的坦克里看书的时候，士兵们知道吗，一只军队，正在干旱的沙漠里演习着作战。我们以为打伊战，简直就像在吃汉堡，所有条件都具备，只要我们张开嘴去吃。 <br />　　　　 <br />　　　　 伊拉克军队面对死亡胆小怯懦，大面积溃败。但是这些中国军队，竟敢用身体去阻击洪水。看来谢菲尔德说得对，打败伊拉克不值得我们志高气昂。要是当时面对中国军队，那么也许50年前的一幕又会重演。 <br />　　　　 <br />　　　　 中国比我们落后这是肯定的，但是只要他们士兵在，我们的国防部长大肆叫嚣的时代就永远结束了。不过，我退伍以后移据加拿大，却听到这里有些华人却说那是做秀，我心里明白，被删除掉的那部分内容是什么。和这样的军队打仗真他妈的是疯子。 <br />　　　　 <br />　　　　 中国参加抗击洪水的部队，多数是精锐之师。27，63，49。均参加。这一次才真的显示中国军队在调动，配合，战斗转换上的经典.</div>]]></description>
		</item>
		    
		
		<item>
			<title>无语,大家自己看.....</title>
			<link>http://samuelme.blog.sohu.com/51646115.html</link>
			<comments>http://samuelme.blog.sohu.com/51646115.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Thu, 21 Jun 2007 09:11:55 +0800</pubDate>
			<category>心情随笔</category>
			<guid>http://samuelme.blog.sohu.com/51646115.html</guid>
			<description><![CDATA[<p>这段视频骂的真精彩,抵制日货,是需要大家一起来努力的....<embed style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" src="http://flashgames.163games.com/specialgames/163games-xrbntz.swf" width="550" height="440" type="application/x-shockwave-flash" autostart="true" loop="true"></embed></p>]]></description>
		</item>
		    
		
		<item>
			<title>CCTV10 推出 黑客江湖 节目!</title>
			<link>http://samuelme.blog.sohu.com/47853244.html</link>
			<comments>http://samuelme.blog.sohu.com/47853244.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Wed, 6 Jun 2007 21:38:04 +0800</pubDate>
			<category>激励人生</category>
			<guid>http://samuelme.blog.sohu.com/47853244.html</guid>
			<description><![CDATA[<p>无意中发现了这个视频,CCTV10频道 推出的黑客江湖的栏目,看完后感触颇深,里面采访了 老鹰 大鹰 goodwell(三位都是绿色兵团第一界核心技术成员,也是中国黑客的代表人物) 看完视频让我知道了 什么才是真正的黑客和什么才是黑客所应该做的事情,也让我在迷茫中看到了希望,知道自己以后应该去做什么! 我希望想踏入这个领域的朋友,和已经踏入这个领域的,但还不知道自己应该做什么的朋友 能够静下心来 好好学习一下! 也希望对黑客这个概念模糊的朋友也能看下,它告诉你了真正黑客的含义和黑客精神,让您重新认识黑客!</p>
<p><embed style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" src="http://www.idf.cn/vido/cctv.asf" width="400" height="300" loop="false" autostart="false"></embed></p>]]></description>
		</item>
		    
		
		<item>
			<title>[转贴]国产软件作者除了捆绑还能做什么?</title>
			<link>http://samuelme.blog.sohu.com/47696974.html</link>
			<comments>http://samuelme.blog.sohu.com/47696974.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Sat, 26 May 2007 22:43:10 +0800</pubDate>
			<category>心情随笔</category>
			<guid>http://samuelme.blog.sohu.com/47696974.html</guid>
			<description><![CDATA[<p>文章出处: <a href="http://www.94xyz.com/read.php?tid=2025">http://www.94xyz.com/read.php?tid=2025</a></p>
<p>无意中看到了这片文章,感触颇深,同时让我想起来了前几天看的一个帖子:在韩国的大商场里面出现了这样的一个小牌子,上面写到:&quot;中国人勿进,这里没有便宜货!&quot;,也许正是中国人爱贪小便宜的习惯,另外加上新软件在短时间内被破解,导致了程序员的处境如此尴尬,才会有人写了软件后,不在中国发,而是到外国的站去发,而且还是纯英文版的......联想下我自己,哎!!前途一片迷茫......&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by:Samuelme</p>
<p>&nbsp; </p>
<p>首先声明：我支持反流氓软件联盟！在看了下面的这篇文章后我很有启发，国产的优秀软件作者靠什么吃饭？正因为他们所作的软件的不到任何收益，甚至有的人的软件有百万用户却要借钱为父亲治病，所以才会出现流氓软件。大家谁的电脑上没有安装破解版的软件？这些软件作者生活问题都解决不了，后果有什么？一、放弃这个行业；二、捆绑插件。正人先正己，我觉得我们也应该从自己的身上找找问题。再次声明：我支持反流氓软件联盟！</p>
<p>下面这篇文章转自cnBeta.COM专稿</p>
<p>国产软件作者除了捆绑还能做什么？</p>
<p>特邀供稿人:JunJun </p>
<p>最近流氓软件开始被大家所认识，打击流氓软件的行动也在如火如荼的进行，网友开始纷纷抵制进行了捆绑的软件。 作为我，一名经常和不同软件作者打交道的网友，在思考，国产软件作者除了捆绑还能做什么？</p>
<p>别的先不说，先说说做软件的收益方式及其可行度：</p>
<p>&nbsp;1、捐赠：引用某人语：靠捐赠这种方式，基本没戏。一有新软件就到处找破解，这种心态在中国扎根了，10年内还真改变不了。</p>
<p>&nbsp;2、广告：广告也没戏，都是靠点击的，但在中国有哪几个人会去点的？ 除非是很牛的软件，每月谈定固定价格，否则不太现实。</p>
<p>&nbsp;3、共享：需要购买才能使用全部的功能或长期使用等等，中国买正版的人还是有的，我就认识几个，如果我经济允许我也会买，但毕竟这也是少数 再引用某人语：</p>
<p>&nbsp;①中国人的工资养家糊口刚刚好，再加上上网费，学杂费，生活费，还他妈剩下啥？</p>
<p>&nbsp;②老百姓的工资都在3000元左右的时候，大概能接受2、300元的软件。但如果再高，还是要找破解的。</p>
<p>&nbsp;4、捆绑：这个已经被大家所抵制基本没戏，除非强制安装。</p>
<p>引用某人语总结：如果是共享软件，就会有破解，如果是广告软件，基本没有人会去点击，还会有破解。 所以就有些中国的程序员写的软件不在中国发布，都在国外发布，甚至一些还不出中文版，这些软件有很多，曾经在&ldquo;汉化新世纪&rdquo;中列举过，这个原因主要是在国内做作者可能会很难生存，还要付出更多，更辛苦。</p>
<p>有个很好的例子，大家还记得一篇文章么？</p>
<p>标题是软件高手空有百万用户 为父亲治病靠借钱</p>
<p>现在在方式上，就算不做捆绑了，也不见得大家就都支持作者了。当然指的不是所有人，还是看到过不少好用户的。 近期暴风影音被迫上了CCTV，相信不少人都知道，我直播没看到，看了网上录的视频，CCTV的倾向性明显在网友这里，根本不管软件作者的死活，老周（暴风影音成员）采访时说的很多内容据说也被剪掉，只留了CCTV自己想要的，看来国内最权威的电视台的公平性也不过如此，失望中。 老周还说：央视的倾向性太强了，例如在播放安装过程中，唯独组件列表中镜头只对准右下角，看不到全部内容，还用的去年的版本，而且连采访我的话，也是掐头去尾，只选择适合他们口味的，这里面应该有经济利益在操纵。 而昨日我们在某QQ群上交流此类问题，之前引用的话都是出自于这个群的。&nbsp;</p>
<p>群内某人发表感慨（有些内容删减）：目前用户和作者都挺为难。我也不喜欢插件，我干了七八年也从未想收过费，但现在总不能十几年了还倒贴。健康状态也不好，总想能有所收益，现在除了插件，我的确是没有第二种方法赚钱。 一些用户都不体谅这些作者，国人又不太会想到去付报酬，认为既然免费软件就完全绿色、免费，而且用的心安理得，说难听点都不考虑作者死活，而且一些还拼命催促作者改进、升级。我想问一句，这些作者有义务吗？ 他们拼命改进貌似也只得到了些成就感。是啊！自己写的软件这么多人在用，是挺有成就的。但光有成就感有什么用？ 国产软件的发展，还是需要广大用户的支持，这些不光是精神还有物质上的，如果不愿意付出物质的支持，装一个插件做为支持作者又何妨呢？ 某人对现在这样现象的结论：结论是中国的软件状态是非常恶劣的。中国目前流氓软件插件流行，原因也是用户造成的。作者仅仅是为了生存，其实只是中介。 而可笑的是现在这样的现象导致中国又一种软件的发展，清理流氓软件的软件。</p>
<p>此文不光针对国产软件作者也针对目前流行的汉化软件作者，现在一些软件站对这些作者作品重新打包，制作成绿色版，打上自己网站的标志，这是对这些作者的极度不支持，是一种可恶的行为。 当然一些作者也有做法不妥之处，强制安装，这样谁都会不喜欢，如果统一做出提示，来让用户选择安装，我想天下会太平很多。 PS：对于CCTV来说他们认为做出提示可选安装也是流氓行为，看来他们真的没考虑到作者的死活啊 </p>
<p>某人说：说真的现在写软件的连民工都不如。</p>
<p>著名软件作者SOFF曾经在他博客里写过这么一段话：写软件的都是小姐，用软件的都是大爷。（大概这么个意思，具体忘记了，文章好像被删了） </p>
<p>这篇文章算是写完了，到这里吧，就到这里。 </p>
<p>JunJun于杭州 2006.9.25 </p>]]></description>
		</item>
		    
		
		<item>
			<title>同学被我忽悠晕了... 哈哈...</title>
			<link>http://samuelme.blog.sohu.com/46491179.html</link>
			<comments>http://samuelme.blog.sohu.com/46491179.html#comment</comments>
			<dc:creator>冰憶浪子</dc:creator>
			<pubDate>Fri, 18 May 2007 00:06:05 +0800</pubDate>
			<category>心情随笔</category>
			<guid>http://samuelme.blog.sohu.com/46491179.html</guid>
			<description><![CDATA[<p>我的同学(女生)就这样被我给忽悠晕了... 不废话了,看我和她的聊天记录就知道了...</p>
<p><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://117.img.pp.sohu.com/images/blog/2007/5/17/23/25/11332d5880c.jpg" border="0" /></p>
<p><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://115.img.pp.sohu.com/images/blog/2007/5/18/0/3/11332dd22dd.png" border="0" /></p>
<p><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://116.img.pp.sohu.com/images/blog/2007/5/18/0/3/11332dd3429.png" border="0" /><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://118.img.pp.sohu.com/images/blog/2007/5/18/0/1/11332d9f627.jpg" border="0" /><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" alt="" src="http://118.img.pp.sohu.com/images/blog/2007/5/18/0/1/11332da1bac.jpg" border="0" /></p>]]></description>
		</item>
		    
		
	</channel>
</rss>
