为了账号安全,请及时绑定邮箱和手机立即绑定

从 PHP GET 方法中的查询参数解密基本身份验证令牌

从 PHP GET 方法中的查询参数解密基本身份验证令牌

PHP
温温酱 2021-12-24 15:15:47
我想解密使用基本身份验证加密的用户名和密码。在我的客户端应用程序中,我有一个文件列表。如果用户想要下载,他们将单击指向带有参数id(即fileId)和.php 的 PHP 文件的锚链接token。我有一个客户端锚标签,比如<a href="http://localhost:8080/management/download.php?id=1&token=YmFsYTphYWFhYWFhYWFh">    download</a>令牌是使用以下 javascript 代码创建的const token = window.btoa(username + ':' + password)文件:下载.php$fileId = $_GET['id'];$token = $_GET['token'];$filePath = getFileById($fileId);if (file_exists($filePath)) {    header('Content-Description: File Transfer');    header('Content-Type: application/octet-stream');    header('Content-Disposition: attachment; filename="'.basename($filePath).'"');    header('Expires: 0');    header('Cache-Control: must-revalidate');    header('Pragma: public');    header('Content-Length: ' . filesize($filePath));    readfile($filePath);    exit;}我试图从默认值中获取用户名和密码,$_SERVER['PHP_AUTH_USER']但无法获取信息。请帮助我如何从令牌中解密用户名和密码。
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

在 PHP 中使用base64_decode()获取用户名和密码以:.


<?php


$decoded = base64_decode($_GET['token']);

list($username,$password) = explode(":",$decoded);

echo $username," ",$password;

演示: https : //3v4l.org/KKIlR


此外,这似乎不够安全,无法像 GET 参数中那样发送密码(不确定此处描述的是什么密码)。最好改为发送一个标头,例如Authorization: Basic YmFsYTphYWFhYWFhYWFh它实际上是一些客户端 ID 和客户端秘密 base-64 编码的位置。


查看完整回答
反对 回复 2021-12-24
  • 1 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号