酷热&加密方式的冲突
凌晨3点了,还是热得不得了,我坐在床上,只有手指在动,照样浑身冒汗。每隔几分钟就要停下来用纸巾擦试手腕以及键盘的腕托部分。本来接口的规范在写动易和动网的接口的时候已经确定下来了。在作Leadbbs接口的时候临时又发现了问题:Leadbbs采用的是32位加密方法。
按照原来的设想,动易完成注册后,会把用户的最基本资料传递给目标程序,其中包括了3项加密信息:用户密码、密码提示问题的答案和网站的私钥。在Leadbbs这里遇到了密码加密位数不够的问题。于是重新修改,把密码改为32位加密传递,在动易、动网的接口中,收到以后,自动将32位加密的数据改为16位加密数据。问题又来了:假如遇到了只支持16位加密的程序怎么办?像bbsxp的md5函数好像就没有位数选项(印象中是这样,还没有细看bbsxp),必须得有一个通用的办法。
动易和动网是整合的重头戏,幸好这两套程序都同时支持16位和32位加密,好吧,那就把所有加密传递的信息都采用32位加密吧,在动易和动网的接口程序中,又重新加上了语句,判断传递过来的数据加密长度,然后进行截取处理。
代码都处理完只用了半个小时不到的时间,腕托的位置已经全是汗水了……温度实在太高了,我要去水房凉快一下了!
北京的夏天实在是太让人讨厌了……让我开始对云南老家无比怀念起来……
第九届中国国际软件博览会
14日上午,我随webboy从朝阳区定福庄出发前往国展中心参观2005第九届中国国际软件博览会。计划用3天时间参观本次博览会,好好向其它软件学习学习人家的优点,借鉴借鉴人家的经验。
结果一上午时间,重点看了几个产品,拿回一堆资料,感受最深的就是两点:第一、软博会适合软件厂商互相参观,不适合厂商前来推广产品;第二、参观者往往自己也是开发者。
现场很多参观者都是我们这样的,来的目的不是为了选购某套产品,而是进行调查研究。当然也有例外的,那就是微软的VS展台前。满满的围坐着很多人,还有站着的,听微软的工作人员介绍VS2005新特点。
微软应该也意识到这种趋势了,在软博会的演示讲解上,不再像以前在其它场合听到的那种模糊,虚化的东西,而是很具体的,很有针对性的功能介绍。webboy似乎更关心的是VS2005正式版什么时候才出,他找到工作人员了解有关发布时间和购买事宜的时候,我估计微软自己的工作人员都觉得意外——这种十几万几十万的东西,居然有人在微软都还没有重点进行预定销售的时候,就开始关注付钱的问题了。不过2005版VS微软的确做得很好,其中不乏很多亮点。
而其它的很多产品,连功能还没做全,已经在那摆出展台了,连网站都还有区凑热闹的,把网站的页面印了百多页的精美宣传图书派送给参观者。网站的推广广告真是无处不在啊。
6月13日:机场任务
凌晨的时候,由于不能上网,自己的笔记本又在三星公司等着换硬盘,什么都干不了,真的很无聊。妖妖忙着复习考试,再给她发短信打电话,她都要烦得骂人了。
极度无聊了,就想随便做点什么东西,在老师的笔记本里翻来翻去,发现了acblog的源码,好,那就来修改它吧。于是就改起了代码,这一改就改了整整一夜加一天-_-!
又是做图片,又是改代码加功能,一直到下午四点才暂停下来,因为要去机场接webboy了。在机场巴士上拿小灵通给妖妖发短信,本来想发一条打个招呼,谁知一条短信发了好几遍还是“发送失败”,我牛劲上来了,非发出去不可,失败了又发,失败了又发,到后来小灵通更夸张,我刚点完发送,连发送过程都没有直接提示发送失败。一直发了二十多遍才发出去。我还以为是信号转好了,于是接着发,谁知道情况依旧。写短信的确是对付无聊的办法,不过跟网通的小灵通信号问题较劲那可就不是明智之举了。我一想也好,发不出去,那就不用担心打扰妖妖了,于是写完了就发,发送失败不管,再写下一条(因为发送过的短信无论成功与否自动保存),权当是在写作了。
下午将近六点到了机场,老大的航班是六点二十五的,正好合适,跑到国内到港大厅一看,飞机到港时间调整为六点五十五了。在机场里转悠了半天,被一个发携程会员卡的缠住了。正好没事干,跟他聊:
“先生,送你一张……”
“我已经是携程会员了,谢谢啦!”
“可以送你一个好点的号,你看……”
“我的号比你的好很多啊,后几位都是6和8。”
送卡那哥们儿大概也没遇到过我这样的,笑了。
“你笑什么?我说的是真的啊,你不信你看嘛,这是我的携程会员卡,号码后四位是6686啊,你看……”
我正好在咸阳机场拿到的会员卡就放在带的公事包里,很兴奋地掏出来给他看。
“没关系,你可以拿去送给朋友啊”
“我女朋友也是啦,卡号我都记得,跟我的一样,相差一位6685结尾,情侣号呢”
“……”
“哎,对了,你发永辉商旅的会员卡吗?我还有一对永辉商旅的情侣号,给你看看,号码很不错呢……”
没等我拿出卡来,那人已经跑了。
熬到六点五十了,再次来到国内到港大厅,半天没找到六点五十五的广州来的航班,仔细一看难怪找不到呢,六点五十五变成七点半了。现在的飞机还真牛,起飞前确定的航行时间可以在起飞时改写,飞在空中还能半路歇会儿再晚半小时。
七点五十,终于看到英俊潇洒的webboy出现了,我从栏杆的缝隙中钻过去,终于完成了接机任务的第一关。
关于网站的安全性
一个网站,安全问题可能从多方面而来。光靠任何一方面,都不可能保证绝对的安全。一个安全的网站,必须要靠各方面配合才能打造出来。
首当其冲的是服务器的安全,服务器本身如果被人入侵了,你的网站系统再安全,那也没有任何作用。
其次是FTP或者远程管理等的帐号安全,如果人家破解了你的FTP或者远程管理权限,那也就等于窗户开给人家怕,那家里的东西自然是随便拿了。
上述的涉及系统管理的问题,这里不多说了,重点说说第三方面:脚本安全。
脚本指在你的网站上的ASP,JSP,CGI等服务器端运行的脚本代码,比如动易系统、动网论坛都属此类。
脚本代码的安全问题最主要最集中的问题出在两个方面:SQL注入和FSO权限。
互动网站大多有数据库,ASP代码通过SQL语句对数据库进行管理,而SQL语句中的一些变量是通过用户提交的表单获取,如果对表单提交的数据没有做好过滤,攻击者就可以通过构造一些特殊的URL提交给你的系统,或者在表单中提交特别构造的字符串,造成SQL语句没有按预期的目的执行。
经常有网友在动易论坛提交一些扫描报告,说动易有SQL注入漏洞。像动易这么复杂的系统,我们不能说开发人员不会遗漏了一两个表单数据的检验和过滤,如果的确存在这种疏忽,而攻击者又通过源代码看到了,那么肯定网站是抵御不了这样的攻击的。在早期的动力系统中,曾经有过这样的漏洞。
到了动易的新版本,开发团队在防止SQL注入方面下了很大的工夫,几乎所有通过表单提交的数据,分字符性和数字性,分别用一个专门的函数进行处理。只要是提交的数据包含非法字符,或者被替换为安全字符,或者提交的数据被替换为默认值。为了程序具有较好的容错性,我们并没有对所有含有非法字符串的数据提交都以抱错回应。比如当用户访问ShowSource.asp这个网页,提交ChannelID=%3D这样的数据,系统就会将其修改为ChannelID=0,这是安全的数据,但是不会显示“您所提交的数据非法”这样的提示。因为对于访问者而言,这是没有必要的。
也就是因为这样的原因,一些比较弱智的漏洞扫描器就以为提交的ChannelID=%3D被执行了,于是告诉用户ShowSource.asp?ChannelID=%3D存在高危漏洞。
大家如果遇到扫描器报告有高危漏洞的,可以联系我们开发人员确认。经过开发人员确认不存在,那就肯定不存在。即使扫描器报告说有,你也不用担心。因为攻击者是没有办法利用这个漏洞的。
除了SQL注入,还有一个更严重的安全问题:上传木马。
由于上传组件(通常ASP开发者都使用一个或多个第三方开发的上传组件或者ASP类)、站长的错误设置(允许上传asp或者shtml等类型的文件),或者其它存在的上传漏洞,都可能存在被攻击者上传后门的可能性。一旦上传了漏洞,攻击者就获得了站长的权限,甚至超过站长的权限(对整个服务器构成安全威胁)。
这几年来,包括动网、动力、动易在内的ASP系统,都曾经出现过上传漏洞的问题(尤其是去年的upload.inc上传.cer等类型文件的漏洞)。但是为什么每次发现这种大规模存在的漏洞之后,都只有一部分网站被黑呢?当然不是攻击者手软或者良心发现,而是一些网站通过服务器设置,防止了这些漏洞导致的损失。
举个例子,如下图:
给各个不必要的目录,去掉“执行”权限,改为“无”,也就是这个目录下的文件,只能读取,不能运行。比如动网论坛除了根目录以外,其它所有目录都只给读取权限即可,关闭执行权限;动易系统给动易根目录、各个频道的根目录以及User、Reg这些含有ASP网页并且ASP要从浏览器访问的目录执行权限即可,其它都可以设置为“无”。尤其是上传目录,比如UploadFiles这样的目录,还有图片目录,一定要设置为只读。
这样设置以后,即使攻击者找到了上传漏洞,把asp木马上传到了你的UploadFiles目录,他也不能利用那个木马做什么。
另外,如果你的服务器采用NTFS文件系统,那么给网站文件所在的目录设置好权限也很重要,网站所在目录,只要给IUSR_你的机器名这个用户开放了读、写权限就能正常运行。不要给EveryOneGuest这样的用户赋予完全权限,非Web目录,应该禁止IUSR_机器名这样的用户赋予权限,这样可以避免上传的ASP木马给服务器造成严重的安全问题。
另外,在IIS的运用程序配置中,删除不需要的程序映射,也是避免因为过滤不够被攻击者上传了某些特殊类型的木马进行攻击的办法。如下图:


