因此,当我从create-react-app运行我的应用程序的生产版本的登录屏幕时,我注意到该应用程序的所有源代码都在static / js文件夹中可用。基本上,代码在生产环境中看起来与我的想法没有什么不同。
我想知道是否可以将其隐藏在登录屏幕后?因此,除非登录成功,否则用户无法直接访问这些文件。我环顾四周,找不到任何可用的东西。
答案 0 :(得分:-1)
应该最小化生产版本中的js文件,这与IDE中的很多有所不同。我假设使用开发人员工具看似“相同”的东西。解决方案是不部署源映射文件(* .js.map)。这些文件使开发人员工具可以将最小化的代码转换回其原始外观。
删除源地图使某人很难轻松地从代码中学习 ,但是如果有足够的动力这样做,那么它肯定仍可以进行反向工程。还有一些部分根本不会被混淆,例如API调用的URL,这些URL随后将为某人提供更多信息,以用作黑客尝试的基础。
如果您需要防止未登录人员看到任何版本的源代码,我建议您将应用程序构建为两个应用程序-一个仅包含登录部分,另一个包含其余部分。在一个应用程序内进行代码拆分不会成功(至少在没有使用比两个应用程序选项管理起来要复杂得多的解决方案的情况下),因为这只会使下载过程变得很懒,而且仍然很漂亮便于他人确定其他文件并下载。但是,即使将其拆分为两个应用程序,也仅在您不同地托管第二个应用程序时才有帮助。这将需要服务器端保护,该保护仅为已登录的用户提供第二个应用程序的JavaScript文件。这意味着要么为第二个应用程序使用其他子域,要么在服务器上至少使用具有这些子域的目录产生保护。如何实施保护取决于验证方法的详细信息以及服务器上使用的技术堆栈。最有可能的是,这意味着使用登录过程中设置的cookie,然后在允许将JS文件提供给浏览器之前,通过验证cookie的方式为第二个应用提供JS文件。
答案 1 :(得分:-1)
要克服在生产版本中显示源代码的情况,请尝试使用
GENERATE_SOURCEMAP=false npm run build