Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不在浏览器中显示的情况下传递查询参数_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何在不在浏览器中显示的情况下传递查询参数

Javascript 如何在不在浏览器中显示的情况下传递查询参数,javascript,backbone.js,Javascript,Backbone.js,我是BackboneJs的新手,我需要一些帮助来使用GET with Jersey在URL中传递参数 事实上,我有如下文件表: 当我单击PDF picto时,它会使用documentID打开PDF文档 正面(后身) 因此,这里我得到了documentId,并在后端使用它来打开文档 背面(JAVA) 它工作得很好,但我的问题是,当我打开文档时,我可以看到documentId,这是不安全的。我尝试了@POST,但没有成功 那么,还有其他解决方案吗?遗憾的是,不可能使用GET完全隐藏URL的参数,

我是BackboneJs的新手,我需要一些帮助来使用GET with Jersey在URL中传递参数

事实上,我有如下文件表:

当我单击PDF picto时,它会使用
documentID
打开PDF文档

正面(后身)

因此,这里我得到了
documentId
,并在后端使用它来打开文档

背面(JAVA)

它工作得很好,但我的问题是,当我打开文档时,我可以看到
documentId
,这是不安全的。我尝试了
@POST
,但没有成功


那么,还有其他解决方案吗?

遗憾的是,不可能使用GET完全隐藏URL的参数,这实际上是GET和POST之间的一个要点。除非您加密这些数据以便使用GET或使用POST方法隐藏它们,否则您将没有其他解决方案


它们之间的更多细节:

遗憾的是,不可能使用GET完全隐藏URL的参数,这实际上是GET和POST之间的一个要点。除非您加密这些数据以便使用GET或使用POST方法隐藏它们,否则您将没有其他解决方案


他们之间的更多详细信息:

浏览器中的任何内容都应被视为已被破坏。

JS中的任何加密都是毫无意义的,因为恶意方已经可以使用数据

那么如何隐藏文档id呢? 数据不敏感 通常,ID不是敏感信息。由于您已经将它们发送到前端,以便用户能够请求特定文档,因此它们已经很容易获得

考虑一下不要担心这些ID

使用GUID

如果IDS是当前可猜测的序列(1, 2, 3等),并且用户没有登录,意味着URL是公共可访问的,考虑将GUID存储在数据库中,并使用它来标识它们。

/getDocument.json?an200_idDocument=123e4567-e89b-12d3-a456-426655440000
人们猜测GUID的可能性要小得多

例如,通过使用类别名称空间或用户ID(如果用户已登录应用程序)使这些机会接近于零

/getDocument.json?cat=bills&an200_idDocument=123e4567-e89b-12d3-a456-426655440000
按对象检查权限 如果用户已登录,请在返回响应之前检查他是否有权从后端访问文档。如果他没有访问权限,则返回403禁止响应

使用短期代币

如果一个用户只能访问一次文档,请考虑短命令牌,这些标记是与用户或文档相关联的唯一字符串,它们在X次或X文档请求之后到期。

< P> <强>浏览器中的任何东西都应该被认为是妥协了。< /强>

JS中的任何加密都是毫无意义的,因为恶意方已经可以使用数据

那么如何隐藏文档id呢? 数据不敏感 通常,ID不是敏感信息。由于您已经将它们发送到前端,以便用户能够请求特定文档,因此它们已经很容易获得

考虑一下不要担心这些ID

使用GUID

如果IDS是当前可猜测的序列(1, 2, 3等),并且用户没有登录,意味着URL是公共可访问的,考虑将GUID存储在数据库中,并使用它来标识它们。

/getDocument.json?an200_idDocument=123e4567-e89b-12d3-a456-426655440000
人们猜测GUID的可能性要小得多

例如,通过使用类别名称空间或用户ID(如果用户已登录应用程序)使这些机会接近于零

/getDocument.json?cat=bills&an200_idDocument=123e4567-e89b-12d3-a456-426655440000
按对象检查权限 如果用户已登录,请在返回响应之前检查他是否有权从后端访问文档。如果他没有访问权限,则返回403禁止响应

使用短期代币

如果一个用户只能访问一次文档,请考虑短命令牌,这些令牌是与用户或文档相关联的唯一字符串,它们在X次或X文档请求之后到期。

谢谢,实际上,当我尝试@ POST时,它不起作用。我将尝试加密Id。如果不需要高级加密,我建议您在此处查看:。在JavaScript中很容易实现。谢谢你,当我尝试@POST时,它并没有起作用。我将尝试加密Id。如果不需要高级加密,我建议您在此处查看:。在JavaScript中很容易实现。
@POST
“不起作用”是什么?@peeskillet我可以传递id,但是当我打开文档时,我得到了
javax.ws.rs.NotAllowedException:HTTP 405方法不允许当你说“打开文档”时,
,。你是说你只是在浏览器中键入URL?如果是这样的话,那当然行不通。浏览器URL栏的默认方法是GET(因此“不允许使用方法”)。您需要从Javascript发出POST请求;和XHR(AJAX)请求)。如果不想,还可以从POST端点重定向到另一个GET端点。不确定你到底想做什么。如果对你来说更安全的话,你也可以发出一个GET请求并在标题中设置ID。在控制台中,我得到了红色pdf的二进制数据。从安全角度来看,试图隐藏ID是毫无意义的,因为它已经对用户可用。前端(主干应用程序)中的所有内容都应被视为不安全数据。
@POST
“不起作用”的原因是什么?@peeskillet我可以传递id,但当我打开文档时,我得到了
javax.ws.rs.notallowedexep
getDatas: function(e){
    var clickedEl = $(e.currentTarget);
    var id = clickedEl.attr("id");
    window.open(window.myApp.baseUrlService.defaultUrl + '/getDocument.json?an200_idDocument=' + id);
},
@GET
@Path("/getDocument.json")
public Response getDocumentById(@QueryParam("an200_idDocument") String idDocument){
 // my code here
}