在Asp.net web中如何才可以防止客户端用flashget之类的工具多线程下载呢?我现在的下载全部都是
通过一个叫download.aspx?id=*的页面来下载的,而且在download里面又重定向到一台apache服务器上,下载那个服务器上的文件。已经做了UrlReferrer这种方式的限制,但是这个很容易伪造。我的想法就是:客户端在发送了一个download.aspx页面的请求后,如何限制他在未下载完之前不响应他发送的第二个download.aspx请求或者给他提示?或者用了工具之后就让他下载一个aspx文本文件,而不是mp3文件?

解决方案 »

  1.   

    把session记录一下,请求页面的时候判断一下
    或者记录IP,但IP可能不太好。
      

  2.   

    用FTP服务器喽,设置一下用户,限制速度,流量很方便的
      

  3.   

    建议改用FTP服务器
    FTP服务器可以限制同一个ip同时可以打开的连接数
    不过~~~~如果是局域网的话好办
    如果是在公网~~~估计一些局域网的用户就得郁闷了~~~~
    因为他们的出口IP都是一样的~~~不是很确定~~~~望高手指点
      

  4.   

    用session可以考虑一下,用ftp限ip确实有碍于出口一样的局域网;在服务器上限制多线程可以作为最后考虑的一种方式,因为对apache不是很熟。有没有更好的办法啊?期望在.net下做到限制,望高手指点啊~
      

  5.   

    还有~~~替我看看我的问题~~~~急~~~
    在做计划,明天就要交了~~~~~http://community.csdn.net/Expert/topic/4162/4162476.xml?temp=.8233911
      

  6.   

    不知道 Cookies可以不~~~~汗~~~!不确定!
      

  7.   

    如果需要用ASP.NET控制下载那么我想应该使用IHttpModule。
    至于怎么使用你可以参考IHttpModule的实现方法。实现IHttpModule之后在IIS映射程序中指定你要控制的文件的后缀名为aspnet_wp控制即可。实现IHttpModule的时可以控制同一个客户端的多个请求将其拒绝,可能需要使用cookie来标识客户端。
      

  8.   

    你只能够在下载的地方做限制,download.aspx起不到任何作用。一般下载软件会先开一个线程去打开download.aspx,如果有一次或多次Redirect就都接受,直到它完成了所有无聊的Http头迷宫之后开始下载的内容Body(也就是文件)了它才开始启动其它线程。其它线程会忽略掉前面的Http头迷宫(即使你设置得再复杂),直奔可以Get到文件内容的那个目标地址,然后开始下载。所以如果你的下载目标URL是静态的(例如就是myserver/download/myfile.rar),那么你在download.aspx做什么都没有用,你只有在下载服务器上做限制,无论是ftp还是http。如果你的下载目标URL是动态的(例如myserver/foiqefind8u984grngqhgdfhpeiqgregndw/myfile.rar),每次都是动态影射且一次作废,那么你才可以考虑不让用户同一时间两个线程进入download.aspx。