在html / javascript文件中隐藏网址

时间:2011-03-21 23:01:32

标签: javascript html url obfuscation client-side

我在我的网站上使用ajax并且为了使用ajax,我可以编写文件的名称,例如:

id = "123";
$.getJSON(jquerygetevent.php?id=" + id, function(json)
{
    //do something
});

我该如何保护网址?我不希望别人看到它并使用它......

6 个答案:

答案 0 :(得分:5)

这是使用客户端脚本的限制。
没有真正的方法来对用户进行模糊处理有很多方法可以降低其可读性(缩小等),但最终用户仍然可以查看代码

答案 1 :(得分:2)

嗨罗恩,欢迎来到互联网。互联网(引用Wikipedia关于这个主题)

  

互联网的起源可以追溯到20世纪60年代的研究,该研究由美国政府委托与私人商业利益相结合,以建立强大的,容错的和分布式的计算机网络。 20世纪80年代国家科学基金会为新的美国骨干提供资金,以及为其他商业骨干提供私人资金,导致全球参与新网络技术的开发以及许多网络的合并。 20世纪90年代国际网络的商业化使其普及并融入现代人类生活的各个方面。

由于这些起源,并且由于围绕HTTP资源识别的协议(如URLs)的方式,实际上没有任何方法可以阻止这种情况。如果互联网最初是作为商业企业开发的(想想AOL),那么他们可能已经能够避免浏览器向用户显示新的URL。

只要人们可以“查看来源”,他们就可以看到您引荐他们访问的网页中的网址。您可以做的最好的事情是使用javascript对链接进行模糊处理,但充其量只是一个烦恼。可以为机器人解码为用户解码的内容。

欢迎来到互联网,也许你的逗留时间很长!

答案 2 :(得分:0)

为什么不在php脚本上添加某种形式的安全性,检查会话变量或类似的东西?

EDIT回复评论:

我想你可能会以某种方式在马前买车。 URL本质上是资源的公共地址。如果资源不应该是公共可用的,除非在特定情况下(即从您的页面内),那么这是一个定义和实现资源安全性的问题。在您的情况下,如果您只想要一次调用该资源,那么为什么不将一个使用访问密钥放入调用页面?然后,只有在刷新页面时才会传递资源。我不确定你为什么要这样做,资源是否暴露敏感信息?服务器上运行脚本可能非常繁重吗?如果资源只应用于渲染页面一次,而不是在渲染后更新它,那么在服务器端实现它可能会更好吗?

答案 3 :(得分:0)

我认为潜在的问题是你想隐藏网址的原因。众所周知,没有办法解决实际解析的URL。一旦触发,FireBug就会为您提供您需要知道的一切。

但是,阻止用户重新使用URL的目的是什么?也许您可以生成只能在给定HTTP会话中使用的一次性会话相对URL。如果您将此URL剪切/粘贴给其他人,他们将无法使用它。如果他们尝试刷新,您也可以将其设置为过期。这是一直这样做的。

目的是阻止用户通过提供不同的查询参数来破解您的网址吗?那么,你应该在服务器端处理它,检查用户是否被授权。即使在激活链接之前,用户也可以使用FireBug等工具根据需要编辑客户端代码。当他们没有按照我想要的方式运行时,我已经多次这样做了。)

更新:一个可怕的黑客就是在页面上删除一个不可见的Java Applet。他们还可以触发请求并与Javascript交互。任何逻辑都可以包含在Applet代码中,对用户来说是不可见的。但是,这会引入其他浏览器兼容性问题等,但可以完成。我不确定这是否会出现在Firebug中。用户仍然可以监控传出流量,但可能不那么明显。最好让您的服务器端更强大。

答案 4 :(得分:0)

你可以保护(隐藏)客户端上的任何东西,只需将其加密/编码为复杂的格式即可实现人类

答案 5 :(得分:-3)

-edit-误解了问题,此代码不提供您要求的内容。遗憾!

使用类似:

$.post("jquerygetevent.php",    {'id': id},function(sScript) {
    try {
        eval(sScript);  
    } catch(error) {
        alert(error.message+"\n"+sScript);
    }
        return false;
});