当前位置: 首页 > 面试题库 >

如何混淆(保护)JavaScript?

巫马泓
2023-03-14
问题内容

我想制作一个不是开源的JavaScript应用程序,因此我想学习如何混淆我的JS代码?这可能吗?


问题答案:

可以使用:

  • Google Closure编译器
  • UglifyJS

更新:这个问题最初是在10多年前提出的,并且不再维护YUI。 Google
Closure编译器仍在使用,并且UglifyJS可以通过节点包管理器在本地运行:npm install -g uglify-js

私有字符串数据:

将字符串值设为私有是另一个问题,而混淆并不会带来太大好处。当然,通过将源打包成乱码,最小的混乱,您可以通过 模糊* 获得轻便的
安全性 。大多数情况下,查看源的是您的用户,客户端上的字符串值是供他们使用的,因此通常不需要那种私有字符串值。
*

如果您确实拥有一个您不希望用户看到的价值,那么您将有两个选择。首先,您可以进行某种加密,该加密在页面加载时解密。那可能是最安全的选择之一,但也可能是很多不必要的工作。您可能可以对一些字符串值进行base64编码,这会更容易..但是真正想要这些字符串值的人可以
轻松地对其进行解码 。加密是真正阻止任何人访问您的数据的唯一方法,大多数人发现加密比他们需要的安全性更高。

边注:

众所周知,JavaScript中的混淆会导致一些错误。混淆器对此有所改善,但是许多公司认为他们可以从 压缩压缩中获得
足够的好处,而增加混淆所带来的节省 并不总是值得的 。如果您想保护自己的源代码,也许您会认为值得这样做,只是使您的代码更难阅读。JSMin是一个很好的选择。



 类似资料:
  • 我正在测试一个web应用程序。CSRF在cookies和标头中应用和发送,但不是以隐藏输入的形式。csrf令牌不会针对每个请求更改,但会在会话期间更改。csrf令牌应多久更改一次?它应该根据会话或请求进行更改吗?客户端或服务器应该设置csrf令牌吗?应用csrf保护的最佳策略是什么?双重提交cookie?三重提交Cookie?还是其他新策略?

  • 我一直在摆弄Proguard配置,我想测试只是为了优化 但我仍然会遇到这样的错误: java.lang.IllegalArgumentExc0019:找不到[org/apache/log/log4j/core/jackson/Log4jXmlMoules](有1个已知的超级类)和[org/apache/log/log4j/core/jackson/Log4jJsonMoules](有4个已知的超级

  • Powershell的混淆目前已经使用的越来越多,国内外也有了较多的研究,在今年的BH大会上也有对应的议题,关注点是反混淆,那么里面的一些姿势很值得我们学习,我们提供一些混淆实例,来让大家对于PS的混淆做到一个初步了解,也为防御混淆提供一些思路。 实例 在混淆之前,先看看powershell编码执行的方式。 -EC,-EncodedCommand,-EncodedComman,-EncodedCo

  • 问题内容: 如何快速混淆代码。我有一个非常小的 Java App ,我想将混淆的代码交付给客户端。我听说过很多有关 ProGuard 混淆代码并下载的信息,但不知道如何混淆我的“ abc.jar”文件。 我检查了它的网站,但其中包含许多要阅读的材料。我不需要沉迷。我只需要简单地将变量,方法和类的名称更改为一些不可读的名称即可。我知道ProGuard还提供所有其他功能。 Q1。 因此,谁能告诉我一些

  • 问题内容: 我注意到我的网站上有奇怪的请求,试图找到phpmyadmin,例如 等等 现在,我已经通过apt在Ubuntu上安装了PMA,并希望通过不同于/ phpmyadmin /的网址访问它。我该怎么做才能改变它? 谢谢 更新资料 对于Ubuntu 9.10和Apache2,相应的设置位于该文件的链接中。该文件包含 如果要避免不必要的活动,则应将第一个更改为其他内容,例如: 问题答案: 最大的

  • 问题内容: 我已经使用Socket.IO了几天,这既令人兴奋又令人沮丧。缺少当前的文档/教程使学习变得非常困难。我终于设法创建了一个基本的聊天系统,但是有一个明显的问题。如何保护它? 是什么阻止了恶意用户复制(或编辑)我的代码并连接到我的服务器?我可以从我的PHP脚本中获取用户名并将其提交给Socket.IO,这样我就可以将他们识别为该用户(当然,PHP具有安全性),但是又是什么阻止了某人仅提交未