<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
 <title><![CDATA[SXPCrazy's blog]]></title>
 <link><![CDATA[http://www.sxpcrazy.com/blog]]></link>
 <description><![CDATA[PHP，JAVA，Oracle，界面功能设计相关想法的聚集！]]></description>
 <copyright><![CDATA[Copyright &#169; 2004-2005 www.SXPCrazy.com 版权所有]]></copyright>
 <language>zh-cn</language>
 <docs>http://blogs.law.harvard.edu/tech/rss</docs><item>
<title><![CDATA[Oracle 关于本地化的一些设置]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=16]]></link>
<description><![CDATA[数据字典：<br />NLS_DATABASE_PARAMETERS<br />NLS_SESSION_PARAMETERS<br />NLS_INSTANCE_PARAMETERS<br /><br />中文必须使用 简体中文 来设置 Language，比如：<br /><br />PARAMETER                      VALUE<br />------------------------------ -------------------------------------------<br />NLS_LANGUAGE                   SIMPLIFIED CHINESE<br />NLS_TERRITORY                  CHINA<br />NLS_CURRENCY                   ￥<br />NLS_ISO_CURRENCY               CHINA<br />NLS_NUMERIC_CHARACTERS         .,<br />NLS_CALENDAR                   GREGORIAN<br />NLS_DATE_FORMAT                DD-MON-RR<br />NLS_DATE_LANGUAGE              SIMPLIFIED CHINESE<br />NLS_SORT                       BINARY<br />NLS_TIME_FORMAT                HH.MI.SSXFF AM<br />NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM<br />NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR<br />NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR<br />NLS_DUAL_CURRENCY              ￥<br />NLS_COMP                       BINARY<br />NLS_LENGTH_SEMANTICS           BYTE<br />NLS_NCHAR_CONV_EXCP            FALSE<br /><br />要想添加一个时间，中文的时间为 1月-12月 ，其他的日期基本一样，星期要使用 星期一 - 星期日 。<br />]]></description>
<pubDate><![CDATA[23 08 2007 23:24:26 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[解决 ORA-00824: cannot set sga_target due to existin]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=14]]></link>
<description><![CDATA[那天在 RHEL 4 上面装上 [Oracle] 10g 以后用企业管理器看了下她的 SGA，结果发现只有 100M，因为是 1G 的机器，所以想给她设置多一些，结果设置完以后发现无法重新启动数据库，因为接触 [Oracle] 管理方面的内容是很久以前，而且当时接触的就只有很简单的介绍，主要是学习 PL/SQL，最近一年多都在 Java 方面开发，[Oracle] 部分仅有的知识已经有些忘记了，所以弄了半天也没有弄好，怎么都无法启动。<br /><br />错误信息是 ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information ，去网上找 ORA-00824 错误，整个 google 里面只有 41 项结果，前面的几个结果都是介绍这个错误，也有的就是询问这个错误的，但没有人解答。不过还好在最后一条结果里面让我找到了解决办法，原文连接： http://www.cublog.cn/u/2996/showart.php?id=76935<br /><br />为了方便以后我再出现问题或者其他人出现问题查找答案，特别将此文里面的语句提出来记录一下。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />使用 SQL*Plus 连接到数据库<br />connect [ {user [/password] [@database] | / } [AS SYSOPER | SYSDBA] ];<br /><br />如果不给出密码，系统会提示输入密码，密码不会被显示。<br />database 是数据库地址，可以是你本地的也可以是远程的。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />SQL&gt; show sga<br />查看 SGA 的大小。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />SQL&gt; alter system set sga_max_size=512M scope=spfile;<br />修改 sga_max_size 大小，在 spfile 文件里面修改。<br /><br />SQL&gt; alter system set sga_target  =512M scope=spfile;<br />修改 sga_target 大小，在 spfile 文件里面修改。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />SQL&gt; exit<br />退出 SQL*Plus <br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />pfile 所在位置 $ORACLE_HOME 下面的 admin/$ORACLE_SID/pfile 目录下。<br />比如我的：<br /><br />/u01/app/oracle/product/10.2.0/db_1/admin/demo1/pfile/init.ora.1272006111935<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />SQL&gt; startup pfile='pfile 路径'<br />通过指定的 pfile 启动数据库实例<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />SQL&gt; create spfile from pfile='pfile 路径'<br />通过指定的 pfile 生成 spfile，我的理解 spfile 的意思是 static pfile，我看过 spfile 文件，是一个纯二进制的配置文件，当初竟然企图修改他来实现让数据库启动起来，后来我想 spfile 就是 pfile 的编译版本。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />[oracle@server ~]# dbshut<br />[oracle@server ~]# dbstart<br />关闭数据库服务进程<br />启动数据库服务进程<br /><br />]]></description>
<pubDate><![CDATA[12 04 2006 17:33:01 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[新年快乐 Happy New Year!]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=13]]></link>
<description><![CDATA[一直想写 Blog，但一直因为忙还有要写的东西太长所以没有足够的时间写 Blog，终于在 2005 年最后一天逼自己写了一个最简单的 Blog。<br /><br />新的一年，给 Blog 换了一个新 banner ，是由我们公司的 [yj] 做的，早就做完了，但是一直没有放上来，因为没有找到好的背景图片，如果在空白的背景下看这个效果并不好看，所以没有放上来。今天本来想写个比较长的 Blog 的，但是因为他的这个 banner 的 bug 修正 和 修改背景图片 用了将近 4 小时，所以我只剩下不到 30 分钟来完成我的 Blog 了，只好写一篇有史以来最短的 Blog 了。 <img src=./images/ex_pose/ex_2.gif><img src=./images/ex_pose/ex_2.gif><img src=./images/ex_pose/ex_6.gif><img src=./images/ex_pose/ex_6.gif><br /><br />简单说明一下我前一段时间一直有冲动想要写得几篇 Blog 吧，具体要不要写还要看我有没有这个坚持。<br /><br />1、<strong>关于 GNU 精神的理解和感动</strong><br /><br />前段时间看了 操作系统的革命 的采访和好好的去 [GNU] 网站看了 <a href="http://www.gnu.org/gnu/thegnuproject.cn.html" target="_blank">GNU 工程</a> 这篇文章，比较简单的了解了 GNU精神 真正要表达的意思。深受感动，其实以前就感动，那么多程序员为开源项目的付出让我很感动，但没有建立在对他们为何这么做的了解的基础上，这次看了这些资料，算是真的建立了这个雏形，了解了他们所追求的真正的目标所在，很是推崇，所以虽然精力有限，但是我以后都会尽量为开源项目贡献自己的力量，并且会将我能够开源的程序尽量开源发布。<br /><br />2、<strong>对于再次使用 Linux 系统的感想</strong><br /><br />几年以前就用过 Linux ，但当时的易用性和兼容性都没有现在的好，一个半月前又装了 Linux，FC4 的，使用后有很多感触，新的 Linux 已经让我觉得很多应用要比 Windows 下面人性化的多，很是喜欢，虽然还是有软件的支持问题，但我常用的和工作所必须的软件已经没有问题了，所以我已经完全换到 Linux 下面开始了工作，这个文章想要说一下为什么推荐使用 Linux，以及 Windows 软件的 Linux 替代的优点介绍，还有其他我认为 Linux 设计比 Windows 要合理的地方。<br /><br />3、<strong>公司服务器完全换成 Linux 了，介绍下几个软件的安装</strong><br /><br />那几天一直在弄 Linux 服务器方面的东西，所以得到一些心得，想要介绍，并且已经在 [linuxsir] 上面发了教程，这里将对那里的教程做个简单介绍和连接，还有我写的几个相关脚本和软件的发布和更新都在这里了，但具体什么时候写还要看我的日程安排。<br /><br /><br />新年到了，不能再写了，其实也就想要写这么多，剩下的明年再开始写吧，祝大家新年快乐！Welcome to 2006 ！<br /><br />]]></description>
<pubDate><![CDATA[31 12 2005 23:58:55 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[blog 升级，加入新功能]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=12]]></link>
<description><![CDATA[找了个 [eclipse] 下面的PHP开发插件 [phpeclipse] ，比较好用，而且又遇到 [mmommo] 被垃圾广告所困扰，所以就又对我们的 Blog 进行了些修改，增加了两个新功能。<br /><br />1、前台摘要部分完全实现了不会将 BB 代码截断的设计，而且字数按照实际显示内容来计算，更加准确的显示了所有的摘要。比如： <em>[url=http://www.mmommo.com</em><em>]</em><strong>mmommo</strong><em>[</em><em>/url]</em> 这样的代码中，只有 <strong>mmommo</strong> 会被计算长度来作为摘要截取的判断，而不会计算 BB 代码的不显示部分长度。<br /><br />2、关键字字典功能，可以在后台设置关键字和替换内容，找到相应的关键字以后会替换成相关内容，支持正则表达式，已经可以做到完全自定义 BB 代码的功能，很好用，暂时就先这么用着了，以后有什么想法再改进了！<br /><br />3、发表评论需要验证码 防止了垃圾广告的问题。如果因为验证码导致发表评论出问题，请和我联系。QQ: 15336768 谢谢啊。<br /><br />希望不会再对这个 Blog 进行什么改进了，不过这个编辑器确实让工作效率提高了很多，不错，好久没写 PHP 了，有点生疏了，：）]]></description>
<pubDate><![CDATA[27 05 2005 10:59:37 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[AS 干扰器类完成]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=11]]></link>
<description><![CDATA[从过春节就一直没有发过Blog，这段时间一直在做 ASObfuscator 类，今天终于完成了。<br /><br />目前网上的 AS 干扰器已经有几个了(<a href="http://www.genable.com/aso/" target="_blank">http://www.genable.com/aso/</a> <a href="http://www.flashincrypt.com/" target="_blank">http://www.flashincrypt.com/</a>)，但是很多我们需要的功能他们不支持，所以只好自己开发了一个。<br /><br />1、我们的干扰器会保存干扰列表，这样在一个 SWF 没有使用修改过的类的时候就完全不需要重新干扰了，这对于我们以后的网站存在数量很多的 SWF 比较有利，我们只需要干扰使用了我们修改的类的 SWF。<br /><br />2、我们从 AS 文件入手干扰，而不是从 SWF 干扰，这样类库的源文件就可以在被干扰以后分发给其他开发人员，来让他们导入使用，不过要做到能编译，还必须配合使用 干扰器 对他们的 AS 也同样进行干扰，否则无法使用。对于在公司内部保护代码比较有用。<br /><br />3、只干扰包名、类名、类的私有变量、方法参数，所以你的代码不需要加任何免干扰列表，就可以安全干扰，当然了，这些干扰涉及的这些类型的名称都不能使用字符串调用。<br /><br />因为以后可能会转到 Java 开发，所以没有对 function 和 public var 进行干扰，因为这要涉及免干扰列表和更复杂的层级结构，开发时间会比较长。<br /><br /><div align="center"><img src="./upload/20050523/aso.jpg" border="0" onload="if(this.width>440) this.height=(440/this.width)*this.height; if(this.width>440) this.width=440; this.title='看原大图';" onabort="this.onload" onerror="this.onload" onmouseover="if(this.title) this.style.cursor='hand';"; onclick="if(this.title) window.open('./upload/20050523/aso.jpg');"></div>]]></description>
<pubDate><![CDATA[23 05 2005 10:04:08 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[看到的 != 保存的]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=10]]></link>
<description><![CDATA[　　今天 [mmommo] 去一个<a href="http://www.deviantart.com/view/13068331/" target="_blank">网站</a>下载图片作一个组件的皮肤，可是这张图却无法保存，在 [maxthon] 里面拖出来以后是一个名为 blank.png 的图片，用右键保存也一样。他找我去帮他想办法弄下来，一开始想到用 Maxthon 的 ViewPage 直接可以弄到图片连接，可是发现连接列表中根本没有那副图片。最后才想到看源代码，唉，一旦有了更方便的方法以后往往就忘记了最原始的办法。一看源代码，图片连接地址直接就写在那里的，而且没有任何 JS 事件在周围。虽然到这里，目的已经达到了，但是激起了我的好奇心，我开始看他是为什么能骗过 IE 和 ViewPage 的。最后终于找到了秘密所在：<br /><br />下面的代码是我将无用部分去掉以后留下的不能去掉的部分：<br />[html]<br />&lt;style type=&quot;text/css&quot;&gt;<br />* html img {<br />	filter<img src=./images/ex_pose/expression(<br />		this.不能去掉 ? &quot;&quot; .gif><br />		(<br />			(!this.complete) ? &quot;&quot; :<br />			this.runtimeStyle.filter = (&quot;progid:DXImageTransform.Microsoft.AlphaImageLoader(src='&quot; + this.src + &quot;')&quot;) +<br />			String(this.不能去掉 = true).substr(0, 0) +<br />			(this.src = &quot;clear.gif&quot;).substr(0, 0)<br />		)<br />	);<br />}<br />&lt;/style&gt;<br />&lt;img src=&quot;http://www.sxpcrazy.com/blog/templates/dreammaker/image/title.jpg&quot;&gt;<br />[/html]<br /><br />运行上面的代码，如果是用 Maxthon 的，可以用鼠标拖出里面的图片看看，会发现连接到了 clear.gif ，根本不是 title.jpg ，再用 ViewPage 查看，也看不到 title.jpg 的连接地址。<br /><br /><span style="color:#FFA500">这里要说一下，ViewPage 的查看源代码的方式：<br /><br />前段时间因为制作这个 Blog 模板，我们发现原来 ViewPage 是使用的 微软 的 OLE 接口，直接将网页选中，复制然后粘贴得到的源代码，这个源代码是包括了所有已经运行的 JS 修改以后的效果，也就是说，如果用 JS 设置了某个标记的属性，那么这里将会在源代码里直接看到这个标记有这个属性，而不是真正意义上的<strong>原源代码</strong>。</span><br /><br />现在来看看刚才的代码，刚才的代码给所有的 HTML 下面的 IMG 标记设置了一个过滤器，当 不能去掉 等于 false 的时候，并且图片已经读取完成以后，设置了图片的 this.runtimeStyle.filter ，然后使用 DXImageTransform.Microsoft.AlphaImageLoader 读取当前图片，然后将那个怪属性（可以随便起名字的）设置为 true，最后将图片的地址设置为 clear.gif 图片。<br /><br />这样就可以得到一个看到的是 title.jpg 而实际 src 是 clear.gif 的图片地址，使用这个方法，可以将一个页面所有的图片设置为 clear.gif 而导致不能轻易保存图片，当然了源代码还是随便可以看到的，但是如果用 ViewPage 的图片查看器还是无法看到，只能在他的源代码查看器里面自己找到图片的 Style 属性去查看真的 src 。<br /><br />刚才在研究这个代码的全部含义的时候发现原来秘密是那个 DXImageTransform.Microsoft.AlphaImageLoader 用这个东西，可以根据参数读取一个图片到当前的元素，元素可以是 A, ACRONYM, ADDRESS, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, CUSTOM, DD, DEL, DFN, DIR, DIV, DL, DT, EM, FIELDSET, FONT, FORM, FRAME, hn, IFRAME, I, INS, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, KBD, LABEL, LEGEND, LI, MARQUEE, MENU, NOBR, OL, OBJECT, P, PLAINTEXT, PRE, Q, RT, RUBY, S, SAMP, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TEXTAREA, TH, TD, TT, U, UL, VAR, XMP，而不改变元素的任何属性，也就是实际 IE 得到的 IMG 的 src 还是原来的 src ，而不是显示的 src 。<br /><br /><a href="http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html" target="_blank">http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html</a><br /><a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/filter/reference/filters/AlphaImageLoader.asp" target="_blank">MSDN 关于 AlphaImageLoader 的参考</a><br /><br />至此，圆满的弄明白了怎么回事了，这里只<span style="color:#B22222">有一个地方我还没有明白，为什么上面那个 <strong>不能去掉</strong> 的属性有那么大用处，我曾经试图删除他，精简语句，上面的 CSS 语句就无法成功了，直接就成了读取 clear 图片，而不显示那个 title 图片了，就算只是把那句 <strong>this.不能去掉=true</strong> 去掉，都会无法显示 title 图片，好奇怪，谁知道的能不能解释一下，谢谢了</span> ：）<br /><br />以上代码只有 IE 5.5 以上的浏览器支持，经测试 FireFox 不支持！]]></description>
<pubDate><![CDATA[14 01 2005 04:06:12 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[正式完成了 Blog 的前台功能]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=9]]></link>
<description><![CDATA[　　为了解决邮件加密的问题，本来就决定 Blog 的评论部分的用户信息使用 Flash 来实现，但是 [mmommo] 一直没有时间做这个，今天终于将这个菜单的类做完了，所以我也将程序进行了升级，改动如下：<br /><br />1、加入了评论的用户信息部分，使用 Flash 实现，菜单在 FireFox 下面还有些问题，不能收回去，暂时原因不明。在 IE 下面也不能很快移动，否则会导致无法收回，实在是我们的 JS 都太差了，解决了半天才解决到这个程度，已经是极限了，唉<br /><br />2、对 Email 和 MSN 进行了简单加密，基本可以保证没有机器人会自动获取我们的地址。<br /><br />3、加入了 Cookie 信息保存功能，可以记住评论人的信息了。<br /><br />4、调整了 Blog 列表中的 评论 连接，点击连接以后直接进入相应 Blog 的评论按钮那里。<br /><br />5、修正了 IE 的 BUG ，不知道 FireFox 有没有，没有测试过，就是一旦访问带有 锚点 的连接， Title 就会显示 锚点 信息，而且不止一遍显示，比如：<br /><br />http://www.sxpcrazy.com/?id=5#C1<br /><br />这样的地址，就会在标题显示 原标题#C1#C1#C1#C1#C1 这样的标题，使用 JS 在页面 onLoad 的时候设置 Title 就能解决。<br /><br />6、全面设置了 Title ，每个页面都有自己的 Title 来说明自己的内容标题，以前没有设置 Title ，都是网站名字。<br /><br />7、页面左边的 最新评论 部分加入了 锚点 支持，点击连接会直接到相关评论。<br /><br />这次升级以后在新的完全重新开发的版本推出之前应该不会再升级了。<br /><br />最近还在做 ASBeautifier ，已经快做好了，到时候可能会加入到这里来显示 AS 脚本的美化和高亮，可能除了这个改动不会再改动什么了，这个程序实在是写得太差了，不想再在他上面修改了，还好前台已经被我改了个遍了，已经舒服很多了！]]></description>
<pubDate><![CDATA[12 01 2005 02:55:38 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[网络程序的密码部分的设计想法]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=8]]></link>
<description><![CDATA[这是 2005 年第一篇 Blog ，好久没有写了，最近在忙着做 ASBeautifier 呢，以前做的那个有问题，重新写一个新的，好了开始正文吧。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br /><br />今天想说说关于网络程序的密码部分的设计相关的问题：<br /><br /><strong>一、位数</strong><br /><br />　　以前很多网站都是明文存密码的，所以为了节省空间的原因，很多密码都规定了位数限制，最多不能超过多少位。但是在这样的网站制作中却有不少比较粗心或者说考虑不全的程序设计者设计出了非常难用的，而且会造成很大麻烦的程序。<br /><br />案例：<br /><br />　　在前台用户注册的时候他为了让用户不能输入超过多少字符的密码，使用了　&lt;input type=&quot;password&quot; <strong>maxlength=&quot;12&quot;</strong>&gt; 来限制密码位数，在密码框旁边有些有文字说明告诉你密码最多多少位，有些根本不告诉你。然而，他却没有在登录部分和程序部分进行考虑，想当然的认为前台已经作了限制，可能这样的情况发生在前台界面被修改了以后，将原本存在的 maxlength 属性去掉了，或者改为了一个不相同的 maxlength 长度，总之不管是什么原因导致的，最终都造成一种情况：一旦用户在注册时候输入的密码位数超过最大字符数限制，并且点了注册，用户将很难再登录这个网站，除非他是个有心的程序员。<br /><br />　　以上例来说明，假如用户想要输入的是 13 位的，这种情况下，注册的时候提交给后台的是 12 位密码，后台记录的是 12 位密码，然而用户在前台登录时因为前台登录部分没有设置 maxlength ，导致提交给后台的是 13 位密码，密码验证失败。另一种情况，注册时规定的是 12 位密码长度限制，而登录部分的限制变为了 15 ，这样也会发生上面的情况，所有这些都是因为网络程序员在设计程序时没有在后台再次对密码长度进行检查造成的，如果他对提交的密码进行长度截取，这样即使前台再怎么错误编写，只要 maxlength 超过或者等于规定最大长度就不会发生任何错误。<br /><br />　　像这样的网站我遇到过几个：<br />　　<a href="http://admin.bliao.com/admin/s_admin.php" target="_blank">http://admin.bliao.com/admin/s_admin.php</a> 是登录使用了  maxlength＝20 的限制，而里面的修改密码使用了  maxlength＝10 的限制，我在一次修改密码后出现了无法登录的问题，最后使用了在原来密码长度的基础上一位一位增加长度的方法才登录进去，碧聊 用的人很多，我想遇到这样情况的绝对不在少数。<br /><br />　　其他的一些网站都不记得了，应该还有一些是这样的。<br /><br /><strong>二、MD5到底安全吗？</strong><br /><br />　　自从 MD5 被中国人破解的新闻被知道以后就有不少站长开始担心网站不安全而采用了 SHA-1 加密密码，其实这样的担心是多余的，MD5 被破解也只是说能够在很短的时间内产生 MD5 HASH 过以后完全相同的文本而已，这在电子证书和数字签名方面确实是很大的威胁，但是作为我们网站程序开发人员，后台的密码使用 MD5 和使用 SHA-1 的效果是完全相同的，原因如下：<br /><br />　　要破解网站程序的密码，无非有如下几种办法：<br />　　1、攻击入服务器，得到 MD5 HASH 字符串，然后反向计算或者暴力破解出原文，但这里计算出的原文不一定就是用户的密码原文，当然了，这已经无所谓了，在长度允许的情况下只要 HASH 以后的字符串一样，就算破解成功，就能登录，但是不要忘记，这是在攻入服务器的前提下，这样的前提下还有什么安全可言呢？ SHA-1 也一样可以用暴力破解算出相同的 HASH 字符串，只是时间问题。（反向计算 MD5 的方法 王小云 教授等人并没有公开，所以仍然是未知的算法）<br /><br />　　2、截包，得到 POST 或者 GET 数据里面的密码字符串，如果网站设计得不好，没有前台加密密码，这样的情况可以直接得到原密码已经成功破解。如果前台使用 Javascript MD5 算法加密密码，那么攻击者能够得到 HASH 字符串，同样可以采用反向或者暴力破解得到原密码，但是这样的情况同样使用 SHA-1 也无法避免。有一个稍微安全点的方法，在前台 MD5 的时候就加入 干扰码，同时给后台提交干扰码和 HASH 过以后的密码，这样即使暴力破解或者反向算出也可以保护用户密码的安全性，不让攻击者得到用户的密码原文。可以这样 HASH 密码，经过这样处理的密码很难得到原密码，因为暴力破解 MD5 如果是 32 位原文，需要的时间将会是个天文数字，而第一步 MD5 处理过的密码就已经是 32 位了，再加上一个干扰码，将会是个 大于等于 32 位的原文，这个原文的破解需要更长的时间。<br /><p><table border="0" width="97%" cellspacing="0" cellpadding="0"><tr><td><table border="0" width="100%" cellspacing="1" cellpadding="10" bgcolor="#000000"><tr><td align="left" width="100%" bgcolor="#e6e6e6"><font face="Courier New">hash_password = md5(md5(用户输入密码) + 干扰码)</font></td></tr></table></td></tr></table></p><br /><br />　　3、很多网站使用 Cookie 或者 ShareObject 保存 MD5 以后的密码，同样也很容易让攻击者得到 HASH 字符串，同理，也无效。也可以使用上面的方法得到比较安全的 HASH 字符串。当然这样是比较麻烦的方法，攻击者完全可以不用进行任何计算，可以自己伪造 Cookie 和 ShareObject 就可以了，没必要得到原文。<br /><br />　　4、监听用户键盘输入，这样的方法的攻击和用什么加密方式加密密码已经没有关系了，需要在用户输入密码的设计方面下功夫，比如采用：随机软件盘，软件盘+键盘输入结合等方式可以大量的减少这样的攻击的危险度。<br /><br />　　综合以上的分析，我想 MD5 在网络程序的应用方面，还是非常安全的，不必要那么恐慌的更换加密算法将时间花在修改程序上面。<br /><br /><strong>三、Blog 和 留言板 中的 注册作者名 功能的弊端</strong><br /><br />　　不少 Blog 和 留言板 都提供了保护用户名的功能，然而这个设计存在几个弊端：<br /><br />　　1、用户在丢失密码以后大多程序都没有提供密码找回功能，导致根本无法找回密码，那这个作者名岂不是不能再用了？所以一旦做了注册，也希望至少能够同时做好找回密码功能。<br /><br />　　2、用户名会有被抢注的危险，这个我也没有想到好的办法解决，是比较头疼的问题。<br /><br />　　当然了为了保证名称不被别人使用暂时也没有其他更好的办法，不过我觉得，要不然就不要做这个，要是做了注册至少应该有找回密码功能，要不然就只做一个保存信息，而不要注册。关于抢注，我想只能靠道德约束了，暂时没有办法解决。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－<br />好了，这些想法都是以前的，没有 Blog 的时候的想法，这段时间实在没什么写的，就把这些想法从脑子里挖出来放这里充数，大家先凑合看看吧<br /><br />对于以上观点，如果有什么不同意见，欢迎发表评论！<br />]]></description>
<pubDate><![CDATA[10 01 2005 18:11:27 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[新年将至，总结过去一年，展望新的一年]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=7]]></link>
<description><![CDATA[很多人都在今天做了一个最后一天的标记，我也在这新年的最后一个小时做一个标记。总结一下过去的一年的工作和生活，展望一下新的一年的计划和目标，以督促自己能够在新的一年更进一步。<br /><br />2004年是灾难深重的一年，伊拉克战争，包头空难，矿井事故，年末的大海啸，国际社会都不安定，我的生活还好，过得还算顺利。今年换了个工作，到了 [dreammaker] 公司，公司是我喜欢的类型，非常喜欢的类型，虽然今年没有什么大的动作和作品，相信我们明年能完成不少的目标，有我们自己的一套系统和一批忠实用户，今年的所做所为是为了明年更快的发展，希望老天不要和我们开玩笑欺负我们。<br /><br />2005年希望世界能安定一些，愿所有活着的人能免去战争的威胁，过上平淡的生活。愿矿工们能够更安全，希望能没有事故的度过新的一年，希望希望不要总是希望。愿我们公司能招到一些不错的成员，大家在一起开发以后的程序，伴随着公司一起成长，一起进步。<br /><br />2005年我的目标，JAVA 水平更上一层楼，逐步向 GUI 界面程序转移，Oracle 也是一样，需要学会 Oracle 的管理技术和优化，远程连接和同步、备份，分布式数据库设置和管理，分布式数据库程序应用的开发。暂时就这些了，以后有了再补充。<br /><br />新的一年就快到了，不能再写了，不然完不成任务了，嘻嘻，先发了，明年见了！<br /><br />祝大家新年快乐，新的一年好运多多，顺顺利利，平平安安！]]></description>
<pubDate><![CDATA[31 12 2004 23:56:11 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[Google 推出了新功能计算器]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=6]]></link>
<description><![CDATA[以后关于：<br /><br /><a href="http://www.google.com/search?hl=zh-CN&amp;q=1%E4%BA%A9%E7%AD%89%E4%BA%8E%E5%A4%9A%E5%B0%91%E5%B9%B3%E6%96%B9%E7%B1%B3" target="_blank">1亩等于多少平方米？</a><br /><a href="http://www.google.com/search?hl=zh-CN&amp;q=1%E6%B5%B7%E9%87%8C%E7%AD%89%E4%BA%8E%E5%A4%9A%E5%B0%91%E5%85%AC%E9%87%8C%EF%BC%9F" target="_blank">1海里等于多少公里？</a><br /><br />这样的问题可以去问 Google 了，Google 新推出了计算器功能，可以进行单位换算、数学计算、平方根、三角函数计算等。<br /><br />测试了一下还是比较方便的，就是下面的说明文字还是不够符合中国的语言习惯，比如：<br /><br /><a href="http://www.google.com/search?hl=zh-CN&amp;q=%E4%B8%89%E5%88%86%E4%B9%8B%E4%B8%80%E5%85%AC%E9%87%8C%E7%AD%89%E4%BA%8E%E5%A4%9A%E5%B0%91%E7%B1%B3" target="_blank">三分之一公里等于多少米</a> 他会显示 三分之 (一公里) = 333.333333 米<br /><a href="http://www.google.com/search?hl=zh-CN&amp;q=%E5%8D%8A%E5%85%AC%E9%87%8C%E7%AD%89%E4%BA%8E%E5%A4%9A%E5%B0%91%E7%B1%B3" target="_blank">半公里等于多少米</a> 他会显示 1半公里 = 500 米<br /><br />比较怪，不过不影响结果，比他的公益广告要好太多了 ：）<br /><br />Google 计算器 的帮助： <a href="http://www.google.com/intl/zh-CN/help/calculator.html" target="_blank">http://www.google.com/intl/zh-CN/help/calculator.html</a>]]></description>
<pubDate><![CDATA[30 12 2004 20:08:44 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[对 exBlog 的修改总结]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=4]]></link>
<description><![CDATA[昨天晚上将 exBlog 的 RSS 生成部分过了一遍，对这个 Blog 的修改终于算是告一段落了，以后就只修改一下 BUG 好了，今天抽空把修改过程总结一下：<br /><br />我还能记得的对它的功能修改包括：<br /><br />1、模板结构完全重新设计，最终只使用了 18 个模板完成了所有的 Blog 生成，增加了 error 模板。将所有的 Blog 显示部分结合到了一个模板中。<br /><br />2、优化了 数据库 查询，原来的程序在数据库方面真的是一点都不考虑，使用了大量查询，一个页面差不多要有 30 个以上查询才能生成，我将很多查询去掉了，使用了连接表，索引进行了优化。<br /><br />3、很多地方的信息和功能有错误，比如：进入某个分类以后的翻页功能是完全没用的，在没有评论是也显示评论信息，没有 Blog 时也显示 Blog 列表等很多错误。<br /><br />4、RSS 里面的有些字段错误，比如：description 字段因为数据库使用了大写 D ，所以变量为空。<br /><br />5、去掉了公告等一些没有太大用处的功能。<br /><br />6、不允许注册用户，因为涉及到很多要考虑的问题要做到完美太麻烦了，暂时不提供用户名保护。<br /><br />7、完全修改了分类方式和日历部分，在某个分类下面只能在日历上看到这个分类里面有 Blog 的日期连接，而没有其他分类的 Blog 信息，这个部分同样在翻页等方面做了很好的支持。<br /><br />8、修改了搜索部分，考虑到做关键字标亮要考虑的问题很多，暂时没有时间实现，所以去掉了原版的关键字标亮，他们在这里的部分也有很多 BUG。同时搜索支持多关键字，原版没有支持。<br /><br />9、清晰的当前位置状态显示，只使用了 3 个模板实现任意组合，信息更准确。<br /><br />改的太多了，都忘记了，先总结这些吧，下面就是好好做新的 Blog 和 继续公司的工作了。等用一段时间如果没有问题，可能会提供程序下载，有 PHP 环境的可以装一个用，基本功能都比较完善了。<br /><br />]]></description>
<pubDate><![CDATA[28 12 2004 20:09:24 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[关于左右框架式程序快捷键操作的设计]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=2]]></link>
<description><![CDATA[　　今天用 [foxmail] 收信后，在左边用鼠标点击了一个子分类，结果看到右边的邮件列表的第一封信是垃圾邮件，立即想到用 Shift+Del 删除他，习惯性的回车确认了要求确认的对话框，然后才发现SB了，那个信还在那里，我当时就想起来了，FoxMail 的焦点这个时候还在左边的邮箱列表那里，晕死，我想完了，把邮箱删除了，因为 FoxMail 在邮件列表中的删除确认框，默认是在 删除 的按钮上聚焦的，我以为是计算机反应慢造成的（因为邮箱内的信很多），结果发现并不是，FoxMail 在邮箱列表上执行删除动作的时候，默认的确认对话框中是 不删除 按钮聚焦的，这个设计救了我的几千封信。（如果删除了还有办法恢复，一会再说）<br /><br />　　对于这种左右框架设计的应用程序，用户的关注点一般是在右边的，当然了，这是在 左边的宽度小于右边的一半的时候的情况，反之则反过来。这种情况，如果进行快捷键操作，是不是应该就设计为直接对右边进行操作，所有的操作都不作用在左边，如果想要对左边进行操作，可以使用其它辅助控制键，比如：Ctrl+Del 执行删除，Ctrl+Shift+Del 执行永久删除等。这样的设计应该在可用性方面得到更大的加强。如果设计者认为这样的操作过于复杂，也至少应该选择无法对左边框架进行操作或者使用高亮状态的标示表示当前的焦点窗口，经过讨论我们认为第一种方案是最好的解决办法，即可以保持快捷键可用，又可以避免绝大多数会是错误的操作。<br /><br />　　PS：说一下另一种恢复信件被FoxMail永久删除的办法，如果还没有对邮箱进行压缩操作，可以在邮箱上点 <strong>右键</strong> 选择 <strong>属性</strong> ，选择 <strong>工具</strong> 页面，点击 <strong>开始修复</strong> 按钮即可将所有的已经删除的邮件找回来，当然了，所有你以前删除的而没有进行压缩操作的邮件也会被找回来，所以代价自己可以把握，自己选择是否找回邮件！<br /> <br />]]></description>
<pubDate><![CDATA[21 12 2004 02:07:56 +0800]]></pubDate>
</item>
<item>
<title><![CDATA[我的 Blog 也换自己的程序了]]></title>
<link><![CDATA[http://www.sxpcrazy.com/blog/?id=1]]></link>
<description><![CDATA[去互联网上试验了很多 Blog 都觉得不太好用，最后还是决定找个 PHP 的自己可以改改。找了好几个，外国的都太复杂了，功能很多都不知道有什么用，在没有完全了解 Blog 之前我们不打算先用那些复杂的产品，所以找了这个程序的原型 <a href="http://www.exblog.net" target="_blank">exBlog</a> ，感觉功能很简单，就是个基本的文章系统一样的，加了个 RSS，挺好的，就用了。我们觉得不好的地方就修改了一下，不改不知道一改吓一跳，他不完善的地方太多了。最后和开发者交流才知道，他只有几个月的开发经验就做了这个，唉，不过就这个都比中国大多数提供服务的Blog功能要好一些，说明中国的Blog发展还在初期。经过修改，现在网站用的这个程序就是 前台全部修改 + 后台部分修改 的 exBlog<br /><br />圣诞节的时候其实这个 Blog 的前台就已经好了，只是后台还没有做完， [mmommo] 已经在 26 日把他的 Blog 发布到网络上了，我那天还在继续修改后台，结果发现，在 exBlog 的基础上面修改后台太烦了，全部的设计都很差，没办法，一气之下决定重新设计全部的数据库结构和前台结构了，唉，早知道一开始就重新开发就好了。<br /><br />昨天开始从头开发 Blog 程序，我会在这里公布那个从头开发的 Blog 的进度，暂时还没有名字给他。为了庆祝一下 新Blog 开张，特写此志！]]></description>
<pubDate><![CDATA[27 12 2004 18:44:57 +0800]]></pubDate>
</item>
</channel></rss>