处理前端登录的安全方式



我想到了一些关于如何保护登录页面(Web(的问题。

当我构建一个演示应用程序时,例如使用VueJS的web应用程序,或者使用HTML/JS的空白应用程序,我想登录页面是否安全?或者我错过了什么。

例如:当我创建用户可以点击登录按钮的登录页面时,我可能会向后端服务器发送一个请求,如果成功,将返回一个访问令牌,然后我将前端页面路由到下一个视图或创建一些对象,这是不必要的。

现在来回答问题:如果登录真的有效,有没有办法呈现一个新的视图?因为我只需要在Javascript文件中查看更改响应,或者填写我自己的响应,就会显示只有在登录成功时才应该显示的行为。

我是被迫用PHP这样做的,还是有同样的结果?我是不是错过了什么?谢谢你的回答!我希望你明白我的意思。

我假设我们在这里处于典型的单页应用程序/web应用程序上下文中,具有分离的前端和后端(api(项目,通过(异步(HTTP请求进行通信:

在这种情况下:是的,它是安全的,因为您的前端一开始就不包含任何受保护的数据。服务器的责任是只发送允许客户端拥有的数据。

在这种情况下,服务器对您的登录做出的确切响应并不重要。它可以是一个成功的JSON和一个令牌,也可以是当前用户对象和一个cookie。重要的是,你的前端现在知道了服务器给它的秘密。前端现在可以很高兴地切换到另一个视图(记住,一个视图最初没有任何数据(,并请求一些受保护的数据,它想用收到的秘密显示这些数据。

如果你欺骗前端认为你已经登录,那么现在的请求就会失败(因为你从未从服务器那里得到过秘密(,你会坐在那里,看到一个空白的UI,可能还有一条错误消息。

对于你的最后一个问题,如果你被迫使用PHP(大约(:不是,但是。您需要在服务器端了解用户及其权限,决定谁可以查看或更改数据,但不一定是PHP。web应用程序的常见服务器端语言是Node.js、PHP和Python,但您绝不限于它们。

如果登录成功,您可以为当前用户设置会话变量。会话是服务器端的,因此劫持会话密钥要困难得多。

此外,您可以设置一个时间戳,并在每次页面加载时检查用户最后一次页面刷新的时间。如果他在X时间内没有刷新页面,您可以取消设置会话变量并注销用户。

最新更新