【问题标题】:Change display URL in struts 2 to hide request parameters在struts 2中更改显示URL以隐藏请求参数
【发布时间】:2015-07-27 04:11:59
【问题描述】:

我很清楚,使用 GET 方法并在 URL 中传递请求参数是一种不好的做法安全漏洞。但是我们处于项目开发几乎完成的情况,我们无法将所有的 GET 更改为 POST 并重新测试整个事情。

有没有办法改变显示的网址?

或者 URL 编码可以完成这项工作?请提出在这种情况下最好的方法。

【问题讨论】:

  • 你从哪里得到这个想法的?正确的方法用于正确的目的。
  • 我正在寻找一个快速修复来争取时间,肯定会在下一次项目迭代中用合法的方法修复它;)
  • MohammedAnwar,@AleksandrM 告诉您 GET 并不意味着存在安全漏洞(尽管查询字符串非常丑陋),并且根据文献,您应该使用 GET 作为幂等方法(读取),并且POST 用于非幂等方法(插入、更新、删除)。然而,愿意删除查询字符串是绝对合法的,因此我的回答。

标签: java html url struts2 query-string


【解决方案1】:

存在的方式,就是 HTML5 History API。

它需要 JavaScript 和 HTML5 compliant browsers,或 javascript fallback for old IE (eg History.js)

看看history.replaceState()history.pushState() 方法:第一个更改当前历史条目,第二个添加一个新条目(在使用后退按钮时会产生噪音,所以我建议第一个)。

要删除 QueryString(?param1=value1&param2=value2 部分),只需在页面加载时运行此脚本:

<script>

    $(function(){
        history.replaceState("","",location.href.substring(0,location.href.indexOf("?")));
    });

</script>

虽然这个客户端解决方案确实提高了清晰度和视觉效果,但我怀疑它是否能提高安全性; Post-Redirect-Get 会更好,但如果不能,请使用此技术。

我通常将 PRG 与此结合使用以实现漂亮的 URL,并且效果很好。

请注意,这是一个模拟 PRG,页面加载后按 F5 可能会有不可预知的行为根据您对应用程序的编程方式

【讨论】:

    猜你喜欢
    • 2015-08-24
    • 2021-06-14
    • 2014-10-24
    • 1970-01-01
    • 2013-09-04
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    相关资源
    最近更新 更多