保护js文件中的服务URL

时间:2011-08-23 10:02:30

标签: jquery wcf service

我正在使用面向服务的应用程序,其中有很多wcf服务是从javascript调用的,有没有办法可以对js文件中的服务URL加密或做任何事情?我的意思是有人可以拿走网址并提出数百万的服务请求并让服务器关闭。

2 个答案:

答案 0 :(得分:2)

在某些时候,网址应该被解码,原因很简单,它必须在一次或另一次使用。

如果您启用了调试器(chrome或firebug),您可以轻松地按照ajax调用进行操作,只需单击该URL即可再次执行此操作!

您可以通过微调来加密js,并通过调整/编写您自己的minifer / packer来推动。

保护它的最佳方法是验证后端(您的服务器)上的呼叫。

如果你想非常努力地推动它,你可以在你的服务器之后加密url部分,并为每次调用使用种子作为subdir(www.your.server / sha1EncodedSubUrl?prm = 1& etc = more)。

然后你必须确保你的服务器能够解码网址,并将编码部分链接/解码到将响应的服务器文件。

然后,您可以将时间用于编码的网址,或将其链接到会话。服务器可能有一些模块/插件,就像“handy / pretty urls”mods一样,但我不知道。

或者,您可以将种子发送为passthrou(ajax将其作为参数发回)。例如www.yourserver.com/yourAjaxResponseFile.phpjswcf?prm=1&etc=moar&seed=H48KKSJ17JU

答案 1 :(得分:1)

浏览器必须能够读取URL才能进行通话;这意味着在某些时候它将以明文形式提供,因此可以通过纯文本提供给恶意用户。

这里有两点需要注意:

首先,javascript代码中绝不应该有任何敏感信息。这意味着密码,加密密钥或任何可以远程用于执行用户无权执行的操作的信息。缩小/打包只会使代码更难阅读,但不会阻止确定的攻击者。所有的身份验证和安全性都必须在服务器端完成,这是您可以控制的一面。

其次,如果您的服务安全性依赖于未知的URL,you don't have security at all。您可以使用WCF throttling来尝试阻止DOS攻击。防火墙还应该通过在数据包到达服务之前丢弃数据包来帮助阻止此类攻击。