当前位置: 首页 > 图文教程 > 服务器 > 安全防护 > 给论坛开发者和使用者的几点建议

安全防护
确保Linux安全的十招
打造安全IIS服务器之IIS FAQ
让虚拟主机免受FSO威胁
微软发布10月补丁包 7个补丁修补9个软件漏洞
杀软克星4天入侵10万电脑 被指最牛木马下载器
IIS vs.Apache: 哪个才是安全首选?
Windows环境下服务器监控软件的选择
确保你的分布式Windows应用的安全
Windows虚拟主机防范WEB SHELL
谨防视频宝宝病毒
信息服务器安全大比拼
ASP木马Webshell安全防范解决办法
如何追踪系统入侵者
配置安全的SCO UNIX网络系统
UNIX防止非法用户注册的技术
堵住域名和邮件的漏洞
教你几点对付DDoS攻击
网络服务器通用和专用保护方法
10个步骤有效的保护IIS Web服务器
巧用百度在线杀毒 查杀远程服务器病毒

安全防护 中的 给论坛开发者和使用者的几点建议


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-29   浏览: 38 ::
收藏到网摘: n/a

       论坛,英文翻译是Forum,作为网络上必不可少的交流平台。在网站中有着举足轻重的地位,大家知道论坛的种类相当多。ASP、CGI、PHP、JSP甚至C++开发的,而品牌更是数以百计,正是这样,每个论坛都存在着这样那样的问题,其中安全问题又尤为突出。有不少网站就是因为论坛出了问题而导致服务器被渗透,在安全上怎么重视都不过份!由于我使用ASP论坛比较多,所以谈谈ASP论坛。

给开发者的建议

数据库问题
  数据库似乎是每个使用者都比较头疼的问题,被下载、被泄密。其实开发者多下些工夫。数据库采用MD5加密(兼容行下降,自己平衡吧)。这样泄密问题就得到了很好的解决,不管是谁。通过什么途径看到数据,都是加密过的字符串,最大限度的解决了数据库泄密的问题,这点动网做得很好,值得其他论坛借鉴。然后就是防下载了。在数据库中加一个表,因为我不擅长描述,所以大家可以直接下载动网论坛V5.0 0519 sp3(URL:http://www.aspsky.net/download/list.asp?id=2178),里面有这样一个数据库,导入里面的那个notdownload表(大家可以自己研究构造,其实我自己也说不清楚,呵呵),然后就把数据库的扩展名改为.asp就可以防下载了,即使知道数据库路径,下载也是500错误。这个应该由开发者做的。

密码验证问题
  密码是系统的首席看门官,大部分的攻击都是截获或猜解密码开始的,所以对于登陆的规定还有需要验证的地方的防范一定要做好。开发者应该限制密码的最小长度为8,最好加入随机验证码,限制登陆失败的次数,如果输入用户名、密码、随机验证码错误导致登陆失败3次后,就会自动关闭,另外,提示密码错误的消息不宜显示在HTML页面里,而应该由谈出消息框来显示出错信息,这几个措施都能有效的防止溯雪这一类工具暴力破解,这类工具的原理是判断页面源代码中的某一标签进行破解的,一般是先获取错误页面的的某个标签,然后提交数据,拿返回的数据和刚才获取的错误标签进行对比,如果遇到了和错误标签不同的标签。则视为正确的,只要了解原理了,就知道上面的三种措施是多么有效。还有尽量不要在页面显示密码。比如在快速回复的地方查看原代码。找到类似的 “密码 <input maxlength=20 type=password name=Pass value="***********" size="20">”地方。其中“***********”就是密码了。这样用户登陆后。离开一下,别人马上查看原代码就可以看到密码了,非常不安全啊!其实通过Cookies和Session判断也是有一定缺陷的。Session完全保存在服务器端,是绝对安全的。所以只有开发者平衡一下了。选个折中的方法,还有也尽量少用type=hidden来隐藏信息。会HTML的人一看就知道了。不过如果像刚才所说的采用MD5加密,就不会看到真实的密码了。查看原代码的时候就只是value="f3b4sd5f47fh49ah3"。(此字符串已经改过)

UBB解析问题
  相当多的留言本和论坛都存在这样的问题,比如[img]pic_url[/img]可以显示一张图片,但如果代码转换不好,就可能被执行跨站脚本,最简单的测试方法就是提交[img]javascript:alert();[/img]这样的信息,(标签视程序而定),如果弹出一个对话框就说明存在此漏洞,有的虽然已经过滤了。但可能把提交的信息转换为ASCII代码,还是有可能执行跨站脚本的,跨站脚本的危害不定,可以弹出一些信息来,如果HTML代码不过滤好。可以修改主页的格局;更有攻击者,写个窃取用户的COOKIES资料的脚本引导用户访问,最惨的还可能格式化浏览者的硬盘。下面又是一个简单的例子。
[img]javascript:document.write();[/img]
document.write('');里面的单引号'' 和句点.要用ASCII转换,否则对稍有过滤的程序就不会生效。里面可以写任何代码。修改注册表、格式化硬盘……如果UBB过滤得好,就没事。
看懂的朋友觉得严重吗?下面付上一段处理脚本字符的代码。仅供参考。也许有错误和遗漏。

Function JScode(JSstr)
dim jsstr:jsstr=jsstrs
if jsstr="" or isnull(jsstr) then JScode"":exit function
if not isnull(JSstr) then
dim ts
dim re
dim reContent
Set re=new RegExp
re.IgnoreCase =true
re.Global=True
re.Pattern="(javascript)"
ts=re.Replace(JSstr,"&#106avascript")
re.Pattern="(jscript:)"
ts=re.Replace(ts,"&#106script:")
re.Pattern="(js:)"
ts=re.Replace(ts,"&#106s:")
re.Pattern="(value)"
ts=re.Replace(ts,"&#118alue")
re.Pattern="(about:)"
ts=re.Replace(ts,"about&#58")
re.Pattern="(file:)"
ts=re.Replace(ts,"file&#58")
re.Pattern="(document.cookie)"
ts=re.Replace(ts,"documents&#46cookie")
re.Pattern="(vbscript:)"
ts=re.Replace(ts,"&#118bscript:")
re.Pattern="(vbs:)"
ts=re.Replace(ts,"&#118bs:")
re.Pattern="(on(mouse|exit|error|click|key))"
ts=re.Replace(ts,"&a