如何防止js文件被下载、我自己写了代码可以防止到下载、但是其它页面调用js文件又不能正常运行、现在就是想能让js文件正常运行而且可以防止到被下载下来。

解决方案 »

  1.   

    http://www.cn-doc.com/_soft_web_tech_doc/2005_08_18_01/20050818011353285.htm
      

  2.   

    LS说的对^^
    脚本是要在客户端浏览器解释的,不让下载是不可能的,但听说可以模糊代码,让人很难看得明白,但同时也可能引入BUG
      

  3.   

    就像大型WEB门户网站的JS也可以被下载的,这些脚本都要下到本地才能才浏览器上运行的。你们老师没教你么?
      

  4.   

    to:7
    所言极是。to:0
    都弄到沙特去了,又谈了女人,此贴结了吧,俺怕别人看见俺的必杀技啊。
      

  5.   

    不可能的事情,JS要下回来进行缓存,然后IE再进行解释的
      

  6.   

    对JS进行加密:
    ASP原码加密工具介绍
     
    文章类别:asp    发表日期:2004-07-23
      
     总是会有很多方法暴露ASP的原程序,造成数据库的密码 路径都可以轻易被其他人搞到,所以对ASP程序实行加密处理是个不错的解决方法。下面来介绍一个工具如果大家感兴趣可以来我主页下载。
    minisql.yeah.net 熏衣草乐园 
    脚本编码器是一种简单的命令行工具,它使脚本设计者可以对最终的脚本进行编码,从而使 Web 主机和 Web 客户不能查看或修改它们的源代码。注意,这种编码只能防止别人在无意中查看到您的代码,并不能防止蓄意黑客查看您的编码内容及其方法。 
    Web 设计者在 Web 页和服务器的 Active Sever Pages (.ASP)上编写脚本,足以在网页上添加您能想象到的所有功能。此外,Windows? Scripting Host(WSH) 和许多其他的应用程序也进行脚本编写,并取得了同样好的效果。 到目前为止,使用脚本的一个缺点是它既不能保护脚本内的知识产权,又不能保证用户所看到的就是您所创造的成果。聪明的运算法则和精心设计的脚本总是能完全被看见,因为它们是作为普通文字储存的 。因此,每一级的脚本用户都能看到脚本设计者的原始编码,并能取出、修改它们,从而据为己有。显然,如果您正想在某一竞争激烈的领域占上风,这对您是非常不利的。 随着脚本小程序的引进,保护源代码变得更加重要。脚本设计者都希望使用这一简单的部件层次结构,但却并不一定想与他人共享自己的源代码。只要脚本经编码后,改变结果文件的任一部分都会使得脚本 无法执行,这样,就保证了您编码脚本的绝对完整。 脚本编码器只对脚本代码进行编码,文件的其他内容不动且以普通文本形式显示。要使用脚本编码器,以通常方法对文本进行开发和调试,然后使用该实用程序对最终的脚本进行编码。 脚本编码器在源代码中使用标记来标识编码开始的位置。
    对于 Visual Basic? Scripting Edition (VBScript),如下示例显示了如何使用编码标记来显示普通文本的版权信息: 
    <SCRIPT LANGUAGE="VBScript">
    Copyright? 1998. XYZ Productions. All rights reserved.
    **开始编码**
    这里放您的代码.
    </SCRIPT> 在 JScript? 中,编码标记如下: <SCRIPT LANGUAGE="JScript">
    //Copyright? 1998. ZYX Productions. All rights reserved.
    //**开始编码**
    // 这里放您的代码.
    </SCRIPT> 当脚本编码器被调用时,在开始标记前,脚本块内的内容保持不变,而其他内容被编码。因此,如果开始标记被省略,则脚本编码块内的所有内容均被编码,但如果开始标记在脚本编码块的最后,则不对任 何内容进行编码。
    在编码发生后。您应该知道 <SCRIPT> 标记中的语言指示符已改变。对于 VBScript,新的指示符如下: <SCRIPT LANGUAGE="VBScript.Encode"> 对于 JScript (或 JavaScript),新的指示符如下: 
    <SCRIPT LANGUAGE="JScript.Encode"> 脚本编码器在如下所示的 MS-DOS 命令行或“运行”对话框中被调用: 
    SRCENC [switches] inputfile outputfile 描述
    对脚本编写源代码进行编码,使其不会轻易地被用户查看或修改。 语法
    SCRENC [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile 脚本编码器语法的组成部分如下: 部分 描述 
    /s 可选的。 开关,它指定脚本编码器的工作状态是静态的,即产生无屏幕输出。如省略,缺省为提供冗余输出。 
    /f 可选的。指定输入文件将被输出文件覆盖。 注意,该选项会破坏您原来的输入源代码。如省略,输出文件不会被覆盖。 /xl 可选的。指定不把 @language 伪指令添加到 .ASP 文件顶部。如省略,@language 指令添加到所有的 .ASP 文件中。 
    /l defLanguage 可选的。指定在编码过程中使用的缺省脚本编写语言 (JScript? 或 VBScript)。被编码文件中的脚本块如不包含语言属性,即被认为是由指定语言写成。 如省略,JScript 是 HTML 页和脚本小程序的缺省语言,VBScript 是动态网页的缺省语言。对于普通文本文件,由文件扩展名 ( .js 或 .vbs)决定缺省脚本编写语言。 
    /e defExtension 可选的。把输入文件与一个特定的文件类型相关联。当输入文件的扩展名不能明显显示出文件的类型时,即,当输入文件扩展名不是可识别的扩展名,但文件内容又可以归为可识别的类型时,使用该开关。 该选项无缺省值。如果遇到一个带不可识别的扩展名的文件,且该选项未被指定,则脚本编码器不能处理该不可识别的文件。可识别的文件扩展名有 asa、asp、cdx、htm、html、js、sct和 vbs。 
    inputfile 必需的。要被编码的文件名称,包括相对于当前目录的任何需要的路径信息。 
    outputfile 必需的。要生成的输出文件的名称,包括相对于当前目录的任何需要的路径信息。 
    说明
    如下是脚本编写器能处理的四种文件: 
    ASP。该格式由一个文本动态网页组成,此网页在 <SCRIPT> ... </SCRIPT> 标记或 <% ... %> 标记内包含有效的 HTML 和内嵌脚本块。使用该格式的应用程序包括 Microsoft? Internet Information Services (IIS)。识别文件扩展名有 .asp、.asa 和 .cdx。 
    HTML。该格式由一个包含有效的 HTML 和内嵌脚本块的文本文件组成。使用该脚本格式编写的应用程序包括 Microsoft FrontPage?, Microsoft? Visual InterDev? 和所有虚拟的 Web 设计器及浏览器。识别文件扩展名有 .htm 和 .html。 
    普通文本。该格式由只包含脚本而无两端标记的文本文件组成。使用该脚本格式编写的应用程序包括 Windows? Scripting Host (WSH) 和 Microsoft? Outlook?。 识别文件扩展名有 .js 和 .vbs,经编码后,分别变为 .jse 和 .vbe。 
    脚本小程序。该格式由一个在 <SCRIPT> ... </SCRIPT> 标记中包含有效脚本小程序的文本文件组成。识别文件扩展名有 .sct 和 .wsh。 
    示例
    如下是使用脚本编码器的一个例子以及对其结果的简单解释:
    对输入文件 test.html 进行编码,生成输出文件 encode.html,使用: screnc test.html encode.html 对输入文件 test.htm 进行编码,并用编码后的输出文件覆盖输入文件,使用: 
    screnc /f test.htm 对当前目录中的所有 .ASP 文件进行编码,并把编码后的输出文件放在c:temp中,使用: 
    screnc *.asp c:temp 对当前目录中的所有 .ASP 文件进行编码,并把编码后的输出文件放在c:temp中,使用: 
    screnc /e asp *.* c:temp 对输入文件 test.htm 进行编码,并生成输出文件 encode.htm,确保没有指定语言属性的脚本块使用 VBScript,使用: 
    screnc /l vbscript test.htm encode.htm 对当前目录中的所有脚本小程序文件进行编码,并不经信息显示就用编码后的文件覆盖这些文件,使用: 
    screnc /s /f *.sct 
    ----------------------------------------------------------------------如下是一个包含需要保护的 JScript 代码的简短示例: 
    <HTML>
    <HEAD>
    <TITLE>脚本编码器示例页</TITLE>
    <SCRIPT LANGUAGE="JScript">
    <!--//
    //Copyright? 1998 Microsoft Corporation. All Rights Reserved.
    //**开始编码**
    function verifyCorrectBrowser(){
    if(navigator.appName == "Microsoft Internet Explorer")
    if (navigator.appVersion.indexOf ("5.") >= 0)
    return(true);
    else
    return(false);
    }
    function getAppropriatePage(){
    var str1 = "Had this been an actual Web site, a page compatible with ";
    var str2 = "browsers other than ";
    var str3 = "Microsoft Internet Explorer 5.0 ";
    var str4 = "would have been loaded.";
    if (verifyCorrectBrowser())
    document.write(str1 + str3 + str4);
    else
    document.write(str1 + str2 + str3 + str4);
    }
    //-->
    </SCRIPT>
    </HEAD>
    <BODY onload="getAppropriatePage()">
    </BODY>
    </HTML> 该页在经脚本编码器运行后如下所示: 
    <HTML>
    <HEAD>
    <TITLE>脚本编码器示例页</TITLE>
    <SCRIPT LANGUAGE="JScript.Encode">
    <!--//
    //Copyright? 1998 Microsoft Corporation. All Rights Reserved.
    //**开始编码**#@~^QwIAAA==@#@&0; mDkW P7nDb0zZKD.n1YAMGhk+Dvb`@#@&P,kW`UC7kLlDGDcl22gl:n~{~Jtr1DGkW6YP&xDnD +OPA62sKD+ME#@#@&P,~~k6PvxCrLmYGDcCwa.n.kkWU bx[+X66Pcr*cJ#,@*{~!*P~P,P~.YEMU`DDEbIP,P,+s/n@#@&P~P,~PM+O;Mx`WC^/n#pN6EU1YbWx,oObaw.WaDrCD+nmL+v# @#@&~P7lMPdY.q,~J_CN,Y4rkP4nn PCx,C1Y;mV,+(PkrY~~l,wCLPmKhwmYk(snPSkDt~JI@#@&P~m.PkY.+,PE8MWA/.kPGDtDPDtmUPri@#@&,P-CMP/D.&,PrrmMWkWWY~( YnD nY,2a2^WDn.,* !,Ep@#@&,P7lD,/D.c,~JSW;s9Ptm-+,4+U~VKl9+[REI,Pr0,cDrWHZW..mOAMGS/nM`*#@#@&P,~P9W^Es+UOchDbO+v/YMq~_,/DDfPQ~kY.c*IP,+sd@#@&~~,P[W1;s+UDRSDkD+vdYMF~_,/O.yP_,dYM&P3~dYMc*iNz&R @*^#~@
    //-->
    </SCRIPT>
    </HEAD>
    <BODY onload="getAppropriatePage()">
    </BODY>
    </HTML> 
     
     
      

  7.   

    把js文件放到一个单独的文件夹
    然后该文件夹下放一个web.config
    配置
    <authorization>
            <deny users="*" />
          </authorization>不知道这样可以不?
      

  8.   

    如果仅仅是不想让别人直接用你的js
    可以考虑在js里面判断一下location
      

  9.   

    哈哈,就写一段ajxs代码,然后去什么地方取得js代码。然后执行。哈哈。这样会不会一群人都用ajax代码去连接那个服务器呀,赫赫。可以加上访问限制。赫赫。LZ写了什么绝世好JS呀,不想让别人看呀。赫赫。
    还有一个办法,把你的js文件换成aspx文件,就是输出一个文件流而已。
    这样,你可以在aspx里面加一些条件,来防止下载,赫赫。比如session情报,等等。赫赫。
      

  10.   

    楼上所言模糊代码,就象沙特的老婆脸上带个黑巾。
    ----------haha
      

  11.   

    欢迎讨论我的方法:
    http://topic.csdn.net/u/20080205/10/3e1511c3-efbd-421d-839e-58949f8319bd.html
      

  12.   

    各位为什么还在这里讨论这类问题,问题答案明摆着,看看新浪,网易,他们首页根本不用JS
    全部纯代码,谁爱看谁看去,怕什么呢??网络无限大,网络上的东西,就是共享的,你不想
    共享那就去单纯做操作系统级的软件,那可以封装的很好哦,是吧!
    至于从技术上去讨论这个问题,就再明白不过了。
    客户端用户提出申请页面-->SERVER-->下载提出的页面到客户端-->用户打开页面正常浏览。
    用户自己的客户端都是去下载服务器上的页面,不让人下载??那你让客户端去干什么事呢??
    凭空出来个页面让人家看???
      

  13.   

    只要是B/S结构都,JS都要暴露出来的,除非混淆代码
      

  14.   

    BS方式下,只要能看得见的就有办法给弄下来。
    再说了,JS只有被下载到客户端才能被执行。唯一比较好的方法也就是给JS加密
      

  15.   

    不让下载写JS来做啥?写JS就是要在客户端执行滴
      

  16.   

    用location不让下载还有点思路.
      

  17.   

    你把所有的JS都写在一起(一个JS中)
    然后在所需要的页面中 调用这个JS 别人就不会看见你的这个JS了啊
      

  18.   

    <script src="http://aaa.com/js.aspx"></script>
    js.aspx里判断是本网站的就response.write(js代码)
    else就返回个空文件。
    同时在js.aspx文件开头加不缓存本文件,就不会在本地的IE临时文件夹里有了。我试过可以哦。
      

  19.   

    可以把主要的代码封装成active控件下载到客户端.脚本只保留简单的调用功能.