JavaScript 源加密对于混淆有用吗?

2024-01-03

我正在考虑用 JavaScript 创建一个公共社交网站 (yourworldoftext.com) 的迷你游戏,我有一个想法,我是该网站的用户,并将我的 JavaScript 嵌入到其他人可以点击开始的链接的 href 中游戏。

我想到的一种方法是这样的

  1. 尽可能压缩/混淆 JavaScript
  2. 将 JavaScript 加密到字符串中,并用一个小的解密 JavaScript 包装所有内容,该 JavaScript 将评估解密的字符串(解密的密钥将使用 AJAX 从同一站点上的其他页面检索)

这是我的动机:

  1. 人们应该都使用相同版本的游戏,作弊并非易事
  2. 源代码包含一些黑客行为,对于像我这样的 JavaScript 开发人员来说可能很容易编写,但代码可能会被复制粘贴并滥用以向网站发送垃圾邮件
  3. 知情的垃圾邮件发送者可以找到任意数量的在线免费脚本,我只是不希望它从我的脚本中免费获得
  4. 我希望任何人都能够运行该应用程序,而无需知道任何隐藏的秘密(这将使脚本公开变得毫无意义,因为那样我只会分享我信任的游戏,使脚本本身成为秘密)

不要误解我,我知道绝对没有办法确保 JavaScript 背后的源代码不会被知情/聪明的用户使用,我只是进行轮询,看看这是否是徒劳的练习,我不应该'甚至不需要额外的加密步骤,或者如果有人相信这种技术有一些优点。

我倾向于相信它可能会阻碍休闲用户,我只是不确定需要多少知识才能打破它,如果休闲社交网络用户可能会打破它。

另外,我怀疑 firebug、开发人员工具、网络检查器无论如何都会显示评估的代码,但我不确定。如果是这样,那么它就根本不会做任何保护它的事情。该网站上的大多数用户都使用 Chrome(据我所知,因为它在该浏览器上运行得最好)。那么 chrome 会在网络检查器中轻松显示它吗?


正如您所描述的那样,缩小、混淆和加密都是人们破坏您的代码的小障碍。每一个小障碍都会让一小部分潜在的黑客望而却步。但是,这三者中的任何一个都不会阻止坚定的黑客。

要绕过加密,只需在调试器中设置一个断点,并在解密后立即捕获代码,然后将其发送到 eval,然后从调试器中复制/粘贴。因此,它几乎没有减慢坚定的黑客的速度。事实上,缩小(用无意义的短名称替换所有有意义的变量名称实际上为黑客理解代码创造了更多工作)。

就我个人而言,我会避免加密,因为它并没有真正增加太多,而且对于坚定的黑客来说,它很容易绕过。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 源加密对于混淆有用吗? 的相关文章

  • 将 OoXml 插入单词抛出错误:未知

    我一直在尝试通过office js将OOXML插入到word文档的正文内容中insertOoXML 方法 我什至尝试过最简单的实现 认为我在尝试替换 XML 本身中的 fieldCodes 时做了一些不正确的事情 所有结果都是这样Error
  • JavaScript onTouch 不工作

    谁能告诉我为什么这个 onTouch 处理程序没有触发 var myDiv document getElementById existingContent var myButton a href log out a myDiv append
  • 使用 vscode 调试器调试 next.js

    我已经使用安装了一个项目创建下一个应用程序 https github com segmentio create next app 我需要使用我的编辑器 vscode 调试服务器端渲染 所以我访问过vscode recipes 如何调试 ne
  • 如何测试 javascript 闭包内的函数

    这似乎是不可能的 也可能是 但我正在尝试更多的 TDD 但我总是在闭包方面碰壁 假设我有以下内容 function createSomething init function privateMethod param return init
  • React js Stripe 结账不起作用

    我正在尝试在 React js 应用程序中呈现条带结账默认表单
  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • 我想检查 $('#td1').text() === "x" 是否?

    我想检查innerHtml是否有X或O 所以我不能再次添加任何其他东西 但它不起作用 添加检查代码后它就停止了 我在这里尝试做一个简单的XO游戏来更熟悉javascript和jquery 我也不确定是否可以用 jQuery 做到这一点
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 如何使用tampermonkey模拟react应用程序中的点击?

    我正在尝试使用 Tampermonkey 脚本模拟对 React 元素的点击 不幸的是 由于 React 有自己的影子 DOM 所以天真的方法使用document querySelector 不工作 我遇到了一些需要修改 React 组件本
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构

随机推荐