日期:2014-05-18  浏览次数:20658 次

sina等邮件系统是如何防止附件直接下载?
比如,登陆进入自己的邮箱后,点击附件http://xxxx.xxxx.xxx.x/xxxx可以下载该附件,但是,如何防止未登陆的用户直接用http://xxxx.xxxx.xxx.x/xxxx该地址来下载附件呢?

------解决方案--------------------
你也可以下载一下下载程序, 通过指定参数如url[download.jsp?fileid=100],定位到相应的附件, 读取附件的内容,以文件流的形式输出到客户端就可以了.
------解决方案--------------------
这个问题的实质就是防止盗链
楼上的这个方法可行,但是有的网站明明都知道了
http://xxx.xxx.xxx/.../abc.txt,这样的地址,但是一下载,就返回一个错误页面,我想这个更加符合实际使用!关注有更好的方法
------解决方案--------------------
看看这个 http://www.haolla.com/girls/index.asp
http://haolla.com/wy
------解决方案--------------------
lindeqiang():
"http://xxx.xxx.xxx/.../abc.txt,这样的地址,但是一下载,就返回一个错误页面,我想这个更加符合实际使用!关注有更好的方法 "

哪个网站?? 举例看看.

------解决方案--------------------
我只说一下我的理解或者猜想:
当有效用户登录后,并提取附件时,有N种方法实现:
1.把真正的附件用临时文件名复制一份临时文件,将临时文件地址反馈给用户.用户在登录期间始终可以使用该份文件,退出登录时删除临时文件.
2.提取附件时,直接把真正的附件改名,退出登录时再改一次.(比如,用当前时间和用户名进行混合运算产生文件名)
3.附加码.这种方式复杂一些,我也没怎么了解.有兴趣自己去查查看.
------解决方案--------------------
做个过滤器,在过滤器里做个是否登陆的判断
------解决方案--------------------
再点击附件下载处理页面做一个判断,如果有登陆了,就继续执行以下的附件下载代码,如果没有登陆,则跳转到登陆的页面
------解决方案--------------------
我说一下我的想法:
你们说的情况: "明明都知道了http://xxx.xxx.xxx/.../abc.txt,这样的地址,但是一下载,就返回一个错误页面 "
我觉得这是不可能的.这明明就是一个绝对的文件地址,是不可能出现错误信息的.
但是如果是这种情况:
http://www.abc.com/down.jsp?file=abc.txt&uid=12等等这样的情况,如果是session里说明这个用户用有权限下这个文件时,把这个文件输出到客户端,否则出现错误信息.这个对于大家来说应该很简单吧....
------解决方案--------------------
是不是这个问题: 判断用户是否登陆,防止盗链?
------解决方案--------------------
关注
------解决方案--------------------
谢谢lindeqiang() ,他说得真好啊..