java - 在 Struts 2 中隐藏 struts.xml 值的参数

标签 java url struts2 passwords url-parameters

有没有办法隐藏 struts.xml 中的 param 值,因为当我将它们从一个操作传递到另一个操作时,它们在 URL 上可见?

<action name="BackToManagerIndex" class="Action.LoginAction" method="ManagerList">         
    <result type="redirectAction">
        <param name="actionName">login</param>
        <param name="namespace">../Manager</param>
        <param name="User_Id">%{User_Id} </param>
        <param name="Password">%{Password}</param>
    </result>

这里,当 BackToManagerIndex 操作完成时,我将其重定向到另一个名为 login 的操作,该操作位于命名空间管理器中,具有 2 个属性:User_Id密码

一切都很好,但是这两个属性的值在 URL 上可见,如下所示

http://localhost:8084/MEMS/Manager/login.action?User_Id=abc%40gmail.com&Password=1234

有什么方法可以隐藏这些值或者可以将 URL 设置为

http://localhost:8084/MEMS/Manager/login.action ?

(我仍然应该在其他操作中获取值)

最佳答案

您永远不应该携带这样的密码,事实上您甚至不应该将其存储在 session 中。甚至在数据库中也没有。

您应该对其进行散列并将散列存储在数据库中,然后当用户输入密码登录时,您对插入的密码进行散列并将其与数据库中的散列进行比较。

这样,即使是您,系统和数据库管理员,也不知道用户的密码。

然后黑客会尝试使用彩虹表,即散列密码字典,为了防止这种情况,您需要在散列中添加一些盐。

阅读更多内容:


除了密码讨论之外,如果您想要重定向以避免网址中的参数出于用户体验原因(并且不是出于安全原因),除了将它们放入 session 中之外,您还可以

run a script in the landing page that make use of HTML5 History API:

<script>
    // BEFORE:
    // http://localhost:8084/MEMS/Manager/login.action?User_Id=abc%40gmail.com&Password=1234
    window.history.pushState("","",window.location.pathname);
    // LATER:
    // http://localhost:8084/MEMS/Manager/login.action
</script>

关于java - 在 Struts 2 中隐藏 struts.xml 值的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730639/

相关文章:

.htaccess - 直接链接到我的 URL 的问题 (https ://)

java - 我如何使用 s :property in JavaScript function

java - 计算鼠标悬停时的工具提示而不是加载表格

java - 判断一个KeyEvent是否属于KEY_PRESSED类型

java - 在使用 java 的 Rest-assured 执行操作时,无法获取断言的响应正文数据

java - 字符数组大小? Stringbuffer 将 HTMl 文件保存在字符串中

go - http 查询字符串 : question mark becomes %3

java - Struts2 表单字段验证不起作用

java - Struts 2约定插件-上传超过2MB的文件

java - Android JCIFS 建立 session 失败