今天偶然进了一个挺大的网站、
当时注册了一个帐号、随即登录进去、
随便进了几个页面、做的还不错、
接着、系统提示我上传一张头像、
我就照办、然后弹出了一个模式窗口、
点击右键、查看源代码、javascript验证写的不错、
文件类型已经限制了、只允许.jpg和.gif
但是javascript是运行在客户端的、用户可以屏蔽、
而且技术高点的可以远程提交表单啊、
随即、我将部分代码拷贝出来、新建了一个html页面、
去掉js验证、将多余的代码也干掉了、
以前的提交地址是:form action="admin_pic_upfile_3.asp"
以前的是相对路径、现在改成绝对路径、
form action="http://www.XXX.net/upload/admin_pic_upfile_3.asp"
在本机打开页面、选择一个文件、点击上传、
果真提示上传成功、我上传的是一个txt文本、
想必、asp木马也可以上传吧、虽然上传成功了、
但没办法知道上传成功的文件的URL、无法访问到资源、
郁闷、随即一个不小心、又查看了一下源代码、
是一段JS代码、也是这一段JS代码、成为了致命的漏洞、
<script language="javascript">alert("上传成功");window.opener.del();window.opener.jf.innerH TML="10";window.opener.document.face_pic.src="/face/200911/28/small/20091128390168 81.jpg";window.close();</script>
将文件的存放路径暴了出来、接下来也不用多说了、
其实不止这一个网站有这个问题、国内大多数网站都存在这个问题、
一些大网站还是做的很好的、在提交表单的时候、特别加了随机数、
避免远程提交表单、或者加了验证码、
所以提醒大家一点、在写登录和注册以及一些安全系数比较大的功能时候、
一定要防止用户远程提交表单、否则一旦被攻击、损失是很大的、
还有一点就是、处理上传的问题的时候、尽量在服务端验证用户选择、
不要用JS验证、因为这样是很不安全的、
呵呵、以上我本人总结的、写的不好、不要见谅、by:xluo