我正在使用基于令牌的身份验证访问我为我的网站设计的一些原始Web API。在登录时,用户名和密码将发布到登录API,并且它会生成一个具有唯一密钥的令牌,并且密钥将存储在数据库中。在随后的每次调用中,令牌都随请求一起发送,并在服务器上使用密钥进行验证。保护基于令牌的身份验证系统的令牌
我正在使用Web应用程序来使用此API服务并向用户提供前端。 Web应用程序使用HTML/Bootstrap/JQuery设计,后端使用php编写。
我已成功测试我的应用程序和基于令牌的身份验证工作。但是,我有一个问题。我发现用户ID和令牌直接显示,只在浏览器的地址栏上使用url编码。现在
http://hasconpanel.ckoysolutions.com/hasconpanel.php?inputs={%20%22username%22%20:%20%22Debopam%20Parua%22%20,%20%22uid%22%20:%20%2220170520193421DP%22%20,%20%22token%22%20:%20%22Sa2pHyooWPoI79vfvJzLlw7UO%252B2p5hOpBttkEq7LQ%252BjAGm9XEmxfhLAcnJoLbqrsXCp75%252BG1M7nEUoCgsDVbIQ%253D%253D%22%20,%20%22list_of_devices%22%20:%20[{%22device_code%22:%22b8:27:eb:f1:b3:0f%22,%22device_name%22:%22First-Pi%22}]%20}
,如果该地址被复制,或者假设浏览器是由恢复先前的会议,不管是谁试图访问它,他们得到的条目。特别是在公共计算机中心的情况下,如果任何人使用他们的凭证访问我的Web应用程序,并且在杀死浏览器之前忘记注销,令牌系统似乎失败了。无论如何保护令牌像加密它?或者某些情况下,应用程序在浏览器/浏览器选项卡关闭的情况下不存储参数,或者至少不会将其显示在地址栏中?我曾想过在每次请求时都会创建一个新的令牌,但它会大幅降低系统速度,所以我想避免它。
请建议一些方法来解决这个问题。
在此先感谢。
编辑: 解释系统是如何工作的,现在:
的API系统托管在一个共享服务器的主域名,并应用在一个子域主持。主域还承载了几个从家中安装的几个树莓派中调用的web服务。
这是它是如何工作的,登录是从主网站进行的,并且在成功登录后,将通过带有用户ID,令牌和用户工作设备列表的get调用来调用Web应用程序。提供检查是为了防止在没有这三个参数的情况下访问应用程序页面。在新加载时,用户可以从下拉菜单中选择设备。现在,这些工作设备中的每一个都可以运行三个独立的系统。因此,在选择设备时,应用程序会再次发出获取呼叫,并将选定设备作为参数与前三个参数一起添加。这会在地址栏上显示令牌和uid。
您可以使用发布API请求的请求。 –
只要他通过HTTP –
运行,发布不会保护他,现在可以获得免费的SSL证书,所以确实没有理由不使用https。如果用户需要使用电子邮件和密码进行注册,则需要使用HTTPS:https://letsencrypt.org/ –