在我们的网站上,我们根据用户的私人信息(通过表格提供)向用户提供模拟.我们希望以后允许他们重新使用他们的模拟结果,但不要强迫他们创建登录/密码帐户.
我们曾想过给他们发送一封带有链接的电子邮件,他们可以从中获取结果.但是,当然,我们必须保护此URL,因为私有数据受到威胁.
因此,我们打算在URL中传递令牌(如字母和数字的40个字符组合,或MD5哈希)并使用SSL.
最后,他们会收到这样的电子邮件:
您好,
请在https://www.example.com/load_simulation?token=uZVTLBCWcw33RIhvnbxTKxTxM2rKJ7YJrwyUXhXn上取回您的搜索结果
你怎么看待这件事?它足够安全吗?你会为我的令牌生成提出什么建议?如何在https请求中传递URL参数?
我正在使用axios来获取基本的http请求,比如get和post,它运行良好.现在我需要能够下载excel文件.这可能与axios一起使用.如果是这样,有人有一些示例代码吗?如果不是我还能在反应应用程序中使用什么来做同样的事情?
我下载文件作为ajax的响应.如何从内容处理中获取文件名和文件类型,并为其显示缩略图.我有很多搜索结果,但找不到正确的方法.
$(".download_btn").click(function () {
var uiid = $(this).data("id2");
$.ajax({
url: "http://localhost:8080/prj/" + data + "/" + uiid + "/getfile",
type: "GET",
error: function (jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
},
success: function (response, status, xhr)
{
var header = xhr.getResponseHeader('Content-Disposition');
console.log(header);
}
});
Run Code Online (Sandbox Code Playgroud)
控制台输出:inline; filename=demo3.png
我有一个 Web 应用程序,其中 Angular (7) 前端与服务器上的 REST API 通信,并使用 OpenId Connect (OIDC) 进行身份验证。我正在使用向我的 HTTP 请求HttpInterceptor添加Authorization标头以向服务器提供身份验证令牌。到现在为止还挺好。
但是,除了传统的 JSON 数据,我的后端还负责即时生成文档。在添加身份验证之前,我可以简单地链接到这些文档,如下所示:
<a href="https://my-server.com/my-api/document?id=3">Download</a>
Run Code Online (Sandbox Code Playgroud)
但是,现在我已经添加了身份验证,这不再有效,因为浏览器在获取文档时没有在请求中包含身份验证令牌 - 所以我401-Unathorized从服务器得到了响应。
因此,我不能再依赖普通的 HTML 链接——我需要创建自己的 HTTP 请求,并显式添加身份验证令牌。但是,我如何确保用户体验与用户单击链接时的体验相同?理想情况下,我希望使用服务器建议的文件名保存文件,而不是通用文件名。
我有一个受JWT和Authorize属性保护的api,在客户端,我使用jquery ajax调用来处理它。
这可以正常工作,但是我现在需要能够安全地下载文件,因此无法设置标头Bearer值,可以在URI中将其作为url参数吗?
=-=-=-=-
更新:这是我最终为自己的方案所做的事情,这是一个内部项目,数量很少,但是安全性很重要,将来可能需要扩展:
当用户登录时,我生成一个随机的下载密钥,并将其与JWT的到期日期一起放入数据库的用户记录中,然后将下载密钥返回给客户端。如果有一个具有下载密钥的查询参数,并且该密钥存在于用户记录中并且尚未过期,则下载路径受保护仅允许下载。这样,dl密钥对每个用户都是唯一的,只要用户的auth会话有效且可以轻松吊销,该密钥就有效。
ajax ×1
angular ×1
asp.net-core ×1
auth-token ×1
axios ×1
file-type ×1
filenames ×1
http-headers ×1
https ×1
javascript ×1
jwt ×1
reactjs ×1
security ×1
token ×1
url ×1