【问题标题】:Are vue/angular/react exposed? [closed]vue/angular/react 暴露了吗? [关闭]
【发布时间】:2019-09-25 07:44:01
【问题描述】:

我正在和一个说像 Angular、Vue 或 React 这样的框架的人交谈 有一个很大的缺点:除了 API 部分(与服务器上的数据库的交互),所有其他代码都可以从前端看到,因此任何人都可以窃取您的应用程序。

【问题讨论】:

  • 这里有问题吗?这就是 JS 的定义,仅此而已……
  • 是的,所有代码都是可见的,但我们通常会缩小代码,使其难以理解。因此,我们不应该在前端代码中添加任何机密信息,例如秘密 api 或凭据。
  • @explorer 这个人提出的问题得到了很多分数,这就是为什么他在这些标签上有分数。这并不一定意味着他是JS专家……
  • 无论是否使用框架,JavaScript 代码都会首先暴露出来
  • 我不敢相信这些赞成票。 “客户端代码就是客户端,amirite?” 真的是个好问题吗?

标签: javascript angular reactjs vue.js


【解决方案1】:

这是编写富客户端行为的基本事实,与框架无关。这与拥有客户端逻辑有关。对于使用 jQuery 或直接操作 DOM 的网站也存在同样的问题。对您作品的主要保护不是晦涩难懂(隐藏您的代码),而是版权法。

代码是客户端的事实有几个后果:

  • 无论您在客户端上实现何种丰富的行为,您都必须验证服务器上的所有操作和输入
  • 如果存在属于商业机密或专有的业务流程或计算或类似内容,则不得在客户端实施它们,因为无论您是否混淆代码,它都是可见的,其他人可以看到。
  • 是的,这意味着任何人都可以窃取您应用程序的客户端部分。唯一阻止的是您的版权。

但同样,这与框架无关。它与实现您的应用程序客户端的一部分有关。


关于框架的附注:启用为 Vue.js、React、Svelte 等框架编写的代码的服务器端渲染 (SSR) 变得越来越流行。所以使用一个这些框架并不一定意味着您正在编写客户端代码:您可以仅将其用于服务器端渲染。


最近发生了一件有趣的事情,这可能会使逆向工程客户端代码变得更加困难:WebAssembly。使用 WebAssembly,交付给客户端的不是 JavaScript 代码,而是 WebAssembly 字节码。像Java字节码一样,你可以从字节码重新组装源代码,但这是一个非常混乱的过程,而且结果很难使用。所以,就像真正彻底的混淆一样,它提高了标准,让别人更难拿走你的工作并重用它。但它只是提高了标准,并不能阻止它。 (这是 WebAssembly 的一个附带好处,而不是它的重点。WebAssembly 的伟大之处在于它可以作为编译任何数量的其他语言的输出,包括 C、C++、Rust ......)

【讨论】:

  • "对您作品的主要保护不是晦涩难懂(隐藏您的代码),而是版权法。" 我不知道是否值得在关于那个的答案。因为,我发现很多 人不熟悉基本原理:版权 是你拥有你创造的任何东西。它是自动的,您不需要许可证或版权声明。您可以选择退出,但必须明确。版权保护您免受他人窃取和使用您的创作。您可以申请专利也是一种选择加入保护发明 - 算法或应用程序可以属于此
  • 最后,商标是一种选择加入(-ish)的基础,用于识别企业。
【解决方案2】:

JavaScript 代码紧凑而肮脏。 这使得访问源代码变得困难,有时甚至不可能

【讨论】:

  • 有时是不可能的从不不可能。这充其量是困难的,但任何至少有中等动机的人都不会被吓倒 - 有很多工具可以让阅读压缩代码更容易。
  • 是的,没错。您的网站应该不会将任何信息带到网页上。在私有变量中定义信息以防止它们被直接访问。但是,它们仍然可用
猜你喜欢
  • 2019-09-28
  • 2018-09-17
  • 1970-01-01
  • 2020-04-18
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
相关资源
最近更新 更多