Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对未登录的用户隐藏我的大部分JavaScript?_Javascript_Security_Frontend - Fatal编程技术网

如何对未登录的用户隐藏我的大部分JavaScript?

如何对未登录的用户隐藏我的大部分JavaScript?,javascript,security,frontend,Javascript,Security,Frontend,我正在开发一个web应用程序。主要部分将是一个HTTP API和一个使用大量JavaScript的前端 将需要身份验证,因此将有一个用户登录的页面。在这个页面上,前端代码将从用户那里获取凭据,将它们提交到HTTP API,并接收令牌,然后可以使用令牌访问HTTP API的私有部分 实现这一点的简单方法是让登录页面引用所有JavaScript代码,这意味着登录页面将有a)登录所需的JavaScript和b)登录后所需的JavaScript。但是拥有(b)是一个问题。尽管JavaScript将被缩小

我正在开发一个web应用程序。主要部分将是一个HTTP API和一个使用大量JavaScript的前端

将需要身份验证,因此将有一个用户登录的页面。在这个页面上,前端代码将从用户那里获取凭据,将它们提交到HTTP API,并接收令牌,然后可以使用令牌访问HTTP API的私有部分

实现这一点的简单方法是让登录页面引用所有JavaScript代码,这意味着登录页面将有a)登录所需的JavaScript和b)登录后所需的JavaScript。但是拥有(b)是一个问题。尽管JavaScript将被缩小,但破解程序将能够读取并找到:

  • HTTP端点
  • 如何验证API的受保护部分
  • API的受保护部分需要什么样的数据
  • 以HTML模板和其他静态字符串形式发送给用户的消息
前3项可用于探测HTTP API,也可能用于攻击HTTP API。最后一项可能有助于应对社会工程攻击,或者只是大致了解应用程序的功能

所以我的问题是:我如何确保当用户未登录时,他看不到登录后才需要的JavaScript

我在想下面的事情:

  • 用户导航到登录页面,该页面包含最少的JavaScript代码
  • 用户输入其凭据
  • JavaScript将这些凭证发送到后端并接收cookie
  • JavaScript重定向到另一个页面,称之为第2页
  • 第2页引用了登录后使用的JavaScript,它存储在一个URL中,该URL包含一个长的加密随机字符串
最后一点可以通过让后端在客户端请求JavaScript时要求客户端发送有效的cookie来改进

这是一个合理的计划吗?还有更好的吗

因为它可能很有用,所以我将提供有关此web应用程序的更多信息

web应用程序的域名和登录页面的URL不会公开,因此,除非您在系统上有帐户,否则您将不知道登录页面的URL-至少,这是您的意图

前端将使用

我在这个网站上发现了类似的问题,但没有给出详细的回答:

  • (2013年,流星框架)

  • (2014年)


首先,验证和安全措施应显示在服务器上。即使用户知道端点,在未经授权的情况下,他也不能进行API调用和获取数据

基于Cookie的方法看起来不错,一旦用户登录,您发送一个存储的Cookie,它将与每个请求一起发送到服务器,服务器将首先验证Cookie,然后为请求/资源提供服务器

这也将解决您的JS问题,因为在用作JS文件之前,服务器将检查用户是否经过身份验证,然后只提供JS文件

创建HTTP cookie并向其添加访问令牌,并验证您从服务器提供的请求的访问令牌。还添加了CSP和CSRF作为附加的安全措施

了解 1) 基于JWT的身份验证 2) CSRF 3) 顾客服务提供商


希望这能有所帮助。

您描述的计划,包括cookie要求,对我来说似乎相当不错。如果您不想重定向到另一个页面,您可以在登录后动态加载脚本,但仍然需要cookie。例如jQuery
$.getScript()
。我同意所有这些听起来都很合理。此外,登录页面上很少有脚本是很常见的,登录后你会被带到包含所有内容的“真实”网站。这是假设您需要身份验证才能浏览任何其他页面,而不是,比如说,该网站的功能是允许未经授权的用户在不登录的情况下仍能查看真实页面。作为一个单独的好处,拥有一个真正简单的登录页面也意味着在更改代码库的其余部分时维护更少。