JavaScript中编写的代码是否可以隐藏?

3

在JavaScript(jQuery)中,隐藏代码是否可能?

我写了一个程序,使用了太多的load()函数。每个人都可以看到我的页面地址,这是一种风险吗?

   load('account/module/message/index.php');
load('account/module/ads/index.php');
load('account/module/stat/index.html');

5
JavaScript在客户端运行,因此用户的浏览器必须能够看到它......这意味着用户也能够看到它。只要您的PHP安全,它就不应该构成风险。 - Smern
黑客无法攻击这些代码和其中的变量吗? - Saeid
3
黑客不需要你的 JavaScript,他们直接攻击服务器。服务器必须保护自己。 - Esailija
8个回答

8

不.

JavaScript是客户端语言,因此所有编写的代码在某种程度上都可以被客户端(最终用户)直接看到。您可以将其混淆并使其更难以理解,但最终仍可访问。

如果安全性是问题,您可以将“业务逻辑”保留在php中,并使用JavaScript(例如Ajax调用)访问它,但终端点仍然可见。


5
在使用JavaScript的每个网站上,JavaScript代码都可以被最终用户看到。不仅如此,最终用户还可以对其进行调试,并在任何时刻更改变量内容甚至是代码本身。
尽管如此,数百万网站使用JavaScript,其中许多被认为是安全的。关键在于,虽然JS代码可能可见于最终用户,但这并不一定意味着您的系统是不安全的。只需编写具有了解其工作原理的系统即可。
以下是一些指针:
- 如果您将机密信息(例如必须保持私密的密码或业务逻辑)放入JS代码中,则这些机密信息将不安全。不要这样做,将这些详细信息保留在服务器上。 - 如果您的JS代码执行任何类型的验证,则该验证可能会被绕过,因此您的服务器端代码也必须执行相同的验证。 - 如果您的JS代码进行调用来运行服务器上的代码(例如您的load(...) 调用),则服务器必须验证用户是否有权限这样做;不要依赖JS代码进行检查。

3
你无法“隐藏”客户端代码,最多只能混淆它,但在Web上下文中,这对我来说在很大程度上是没有意义的——传递给客户端的代码应该可以暴露,而不会有危险性。而且你几乎无法混淆URL。
对于不应该暴露的部分,请勿暴露它们。进行服务器端生成并仅输出所需内容,即“安全”的内容;混合两种方法可能会带来一些问题(比如想要通过在服务器上执行来隐藏逻辑,但仍然使用AJAX动态发送它),因为你的逻辑被间接地暴露出来了(也就是说,虽然逻辑不能被看到,但结果可以被获取,可能来自于另一个域来使用你的内容等)。

2
您可以尝试使用混淆工具,例如YUI Compressor http://yui.github.io/yuicompressor/,这样您的代码对于终端用户来说就不可读了,但隐藏它是不可能的。 隐藏值和其他信息 如果您想保持值的私密性,使用户无法阅读它们,则混淆可能并不是您的最佳选择,但当然您的源代码将被缩小,如果要阅读它将会很混乱,但它仍在那里...
因此,在这里您的选择是使用某种加密方式,在页面加载时进行解密,但这是一项艰苦的工作,您可以使用base64、sha1或您想要的任何内容,只加密您想要的字符串或值。但是,如果有人真的想要,他们仍然可以解密它。

2

绝对不行,因为JavaScript在客户端执行,所以要么尽可能地在服务器端脚本(JSP/PHP/ASP)上完成所有操作,要么将其移动到单独的文件中后进行缩小/压缩。


1
很抱歉,无法做到。 JavaScript在Web浏览器的客户端上运行,无法对查看源代码的人隐藏。但是,只要您在浏览器中访问这些页面时不显示任何内部信息,这并不会对您的应用程序构成安全风险。

1
在服务器上处理所有“秘密”代码,用户无法访问该代码。仅向客户端发送“非秘密”内容,例如UI。如果无法避免将秘密代码发送到客户端,请混淆它以使其更难读取。

1
将你的JavaScript代码放在外部文件中。 然后,将您的JavaScript代码最小化,这可能会有所帮助。
将普通JavaScript转换为最小化JavaScript,请参考此链接:http://jscompress.com/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接