【发布时间】:2011-08-23 10:02:30
【问题描述】:
我有一个面向服务的应用程序,其中有很多从 javascript 调用的 wcf 服务,有没有一种方法可以加密或对 js 文件中的服务 url 做任何事情?我的意思是有人可以获取该 url 并对该服务发出数百万次请求并关闭服务器。
【问题讨论】:
我有一个面向服务的应用程序,其中有很多从 javascript 调用的 wcf 服务,有没有一种方法可以加密或对 js 文件中的服务 url 做任何事情?我的意思是有人可以获取该 url 并对该服务发出数百万次请求并关闭服务器。
【问题讨论】:
在某些时候,应该对 url 进行解码,原因很简单,它必须在某个时间或另一个时间使用。
如果您启用了调试器(chrome 或 firebug),您可以轻松地跟踪进行了 ajax 调用,只需单击 url 即可再次执行!
您可以通过缩小 js 来“加密”它,并通过调整/编写自己的 minifer/packer 来推送。
保护它的最佳方法是在后端(您的服务器)上验证调用。
如果你想非常努力地推送它,你可以在你的服务器之后加密 url 部分,并将种子用作每次调用的子目录 (www.your.server/sha1EncodedSubUrl?prm=1&etc=more)。
然后您必须确保您的服务器能够解码 url,并将编码部分链接/解码到将响应的服务器文件。
然后,您可以为编码的 url 设置时间,或将其链接到会话。可能有一些用于服务器的模块/插件可以做到这一点,例如“方便/漂亮的网址”模块,但我不知道它们。
或者,您可以将种子作为 passthou 发送(ajax 将其作为参数发送回)。例如 www.yourserver.com/yourAjaxResponseFile.phpjswcf?prm=1&etc=moar&seed=H48KKSJ17JU
【讨论】:
浏览器必须能够读取 URL 才能进行调用;这意味着在某些时候它将以明文形式提供,从而以明文形式提供给恶意用户。
这里需要注意两点:
首先,javascript 代码中不应包含任何敏感信息。这意味着密码、加密密钥或任何可以远程用于执行用户无权执行的操作的信息。缩小/打包只会使代码更难阅读,但不会阻止坚定的攻击者。所有的身份验证和安全都必须在服务器端完成,这是你可以控制的。
其次,如果您的服务安全性依赖于未知的 URL,you don't have security at all。您可以使用WCF throttling 来尝试防止 DOS 攻击。防火墙还应该通过在数据包到达服务之前丢弃数据包来帮助阻止这种攻击。
【讨论】: