如何传递查询参数而不在浏览器中显示它
How to pass a query parameter without displaying it in the browser
我是 BackboneJs 的新手,我需要一些帮助来使用 GET 和 Jersey 在 URL 中传递参数。
事实上,我有 table 份如下文件:
当我单击 PDF 图片时,它会使用 documentID
打开 PDF 文档。
前端(BackboneJs)
getDatas: function(e){
var clickedEl = $(e.currentTarget);
var id = clickedEl.attr("id");
window.open(window.myApp.baseUrlService.defaultUrl + '/getDocument.json?an200_idDocument=' + id);
},
所以我得到了 documentId
并在后端使用它来打开文档。
背面 (JAVA)
@GET
@Path("/getDocument.json")
public Response getDocumentById(@QueryParam("an200_idDocument") String idDocument){
// my code here
}
它工作得很好,但我的问题是当我打开文档时,我可以看到不安全的 documentId
。我试过 @POST
但没用。
那么,还有其他解决办法吗?
遗憾的是,无法使用 GET 完全隐藏 URL 的参数,这实际上是 GET 和 POST 之间的要点之一。除非您加密这些数据以便使用 GET 或使用 POST 方法隐藏它们,否则您将没有其他解决方案。
他们之间的更多细节:https://www.w3schools.com/tags/ref_httpmethods.asp
浏览器中的任何内容都应该被认为已经受到威胁。
JS 中的任何加密都是毫无意义的,因为数据已经可供恶意方使用。
那么如何隐藏文档id呢?
数据不敏感
id 一般不是敏感信息。由于您已经将它们发送到前端以便用户能够请求特定文档,因此它们已经很容易获得。
考虑一下不要担心这些 ID。
使用 GUID
如果当前 ID 是一个可猜测的序列(1、2、3 等)并且用户未登录,这意味着 URL 可公开访问,请考虑在数据库中存储一个 GUID 以用于每个文档并使用它来识别它们。
/getDocument.json?an200_idDocument=123e4567-e89b-12d3-a456-426655440000
人们猜测 GUID 的可能性要小得多。
通过使用类别命名空间或用户 ID(如果用户已登录应用程序),使这些机会接近 none。
/getDocument.json?cat=bills&an200_idDocument=123e4567-e89b-12d3-a456-426655440000
按对象检查权限
如果用户已登录,请在 return 响应之前检查他是否可以从后端访问文档。如果他没有访问权限,return 一个 403 Forbidden 响应。
使用短期令牌
如果用户只能访问一次文档,请考虑短期令牌,它们是与用户或文档相关联的唯一字符串,它们会在 X 次或 X 次文档请求后过期。
我是 BackboneJs 的新手,我需要一些帮助来使用 GET 和 Jersey 在 URL 中传递参数。
事实上,我有 table 份如下文件:
当我单击 PDF 图片时,它会使用 documentID
打开 PDF 文档。
前端(BackboneJs)
getDatas: function(e){
var clickedEl = $(e.currentTarget);
var id = clickedEl.attr("id");
window.open(window.myApp.baseUrlService.defaultUrl + '/getDocument.json?an200_idDocument=' + id);
},
所以我得到了 documentId
并在后端使用它来打开文档。
背面 (JAVA)
@GET
@Path("/getDocument.json")
public Response getDocumentById(@QueryParam("an200_idDocument") String idDocument){
// my code here
}
它工作得很好,但我的问题是当我打开文档时,我可以看到不安全的 documentId
。我试过 @POST
但没用。
那么,还有其他解决办法吗?
遗憾的是,无法使用 GET 完全隐藏 URL 的参数,这实际上是 GET 和 POST 之间的要点之一。除非您加密这些数据以便使用 GET 或使用 POST 方法隐藏它们,否则您将没有其他解决方案。
他们之间的更多细节:https://www.w3schools.com/tags/ref_httpmethods.asp
浏览器中的任何内容都应该被认为已经受到威胁。
JS 中的任何加密都是毫无意义的,因为数据已经可供恶意方使用。
那么如何隐藏文档id呢?
数据不敏感
id 一般不是敏感信息。由于您已经将它们发送到前端以便用户能够请求特定文档,因此它们已经很容易获得。
考虑一下不要担心这些 ID。
使用 GUID
如果当前 ID 是一个可猜测的序列(1、2、3 等)并且用户未登录,这意味着 URL 可公开访问,请考虑在数据库中存储一个 GUID 以用于每个文档并使用它来识别它们。
/getDocument.json?an200_idDocument=123e4567-e89b-12d3-a456-426655440000
人们猜测 GUID 的可能性要小得多。
通过使用类别命名空间或用户 ID(如果用户已登录应用程序),使这些机会接近 none。
/getDocument.json?cat=bills&an200_idDocument=123e4567-e89b-12d3-a456-426655440000
按对象检查权限
如果用户已登录,请在 return 响应之前检查他是否可以从后端访问文档。如果他没有访问权限,return 一个 403 Forbidden 响应。
使用短期令牌
如果用户只能访问一次文档,请考虑短期令牌,它们是与用户或文档相关联的唯一字符串,它们会在 X 次或 X 次文档请求后过期。