【问题标题】:Hide parameters in the url, using Java Play Framework在 url 中隐藏参数,使用 Java Play Framework
【发布时间】:2013-08-15 07:30:30
【问题描述】:

是否可以在 Java Play Framework 2.x 中隐藏 url 参数?我发现了一个类似的问题,但他想隐藏它们以阻止 url 黑客攻击。所以他得到了除了隐藏网址之外的其他答案/解决方案。

问题是我有一些“信息对象”,它有一个我需要传递给几个动作、jquery 等的 ID,所以我需要在 url 中包含它。但我不希望任何用户看到 ID。

例如我有这个conf:

GET     /deliverablegraph           controllers.Application.deliverable_graph(id:Long,contextId:Long)

显示为 ../deliverablegraph?id=xxxx&contextId=yyyy

我只想显示 ../deliverablegraph,但需要访问 id 和 contextId。

【问题讨论】:

  • 隐藏 URL 参数几乎可以肯定是错误的做法。为什么你(认为你)需要这样做?
  • ID 应该对用户保密,但我需要在不同页面之间发送 ID(我认为可以使用另一种解决方案)和 jquery。就像,当你点击某个东西时,这样做(“this”是使用 id)。
  • 您可以将它们作为页面的一部分呈现在隐藏的表单字段中或作为 javascript 变量,但不会对用户“隐藏”它们。如果您需要 javascript 的这些值,那么想要的人也将能够访问它们。您可以做的是从您的 id 生成某种哈希并将其与 id 一起传递。这样你就有办法检查 id 值是否被弄乱了。

标签: playframework routes playframework-2.0


【解决方案1】:

我在 URL 中隐藏参数时遇到了类似的问题,希望我的解决方案在某种程度上对您有所帮助。唯一的区别是我不想传递极长的 URL 参数,因为我需要传递 JSON 数据。与您不想传递秘密信息的问题不同。

所以我做了 estmatic 在他的评论中所说的将信息放在隐藏的表单字段中:

<form class='someDynamicForm' method='post' action='@routes.Application.function()'>
    <textarea name="jsonHolder" style="display: none">
        "Used javascript to insert the data I want in here"
    </textarea>
</form>

为了获得更大的灵活性,您不必使用button 来提交。每当您准备好提交表单时,您都可以随时调用 javascript 代码 document.someDynamicForm.submit();

现在在控制器端,您可以通过以下方式检索文本区域中的信息:

public static Result function() {
    DynamicForm dynamicForm = DynamicForm.form().bindFromRequest();
    String jsonData = dynamicForm.get("jsonHolder");
    return;
}

然后在你的路由文件中确保具体:

POST       /json           controllers.Application.function()

这里的缺点是您希望您的 ID 是秘密的。所有“黑客”所要做的就是右键单击 -> 查看页面源代码,他们可以在隐藏的文本字段中看到信息。

我在整个网络会话中传递信息的另一个解决方案是使用 Play 内置的 Session http://www.playframework.com/documentation/2.1.x/JavaSessionFlash

您是否考虑过使用类似的东西?由于您似乎会经常使用用户的 ID,因此将他们的 ID 信息保存在 Session 中(最终暴露在他们的 cookie 中)可能需要研究一下。

【讨论】:

  • 谢谢!我认为这就是这样做的方法,即使它不是真正安全的(根本:))。一开始没想到可以,但趁机在这里问了下。
  • 如果 ID 真的那么敏感,那么我认为您应该考虑对 ID 进行哈希处理,然后让控制器进行验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多