【问题标题】:Change the Input text field value by keeping the original value通过保留原始值更改输入文本字段值
【发布时间】:2013-06-18 02:02:09
【问题描述】:

有没有一种方法可以为输入文本字段分配新值,但在输入文本中显示原始值。我要问的是,假设用户在输入文本中输入“john”,这是一个 Struts2 文本字段,其名称为用户登录名,它绑定到登录属性中的用户类:

<s:textfield name="user.login" maxlength="20" size="20"/>

在提交时,我想将“john”更改为某个加密值并将该值分配给文本字段,以便我可以在 Action 类中检索该值。

问题是当我添加下面的行来实现它时

document.getElementsByName("user.login")[0].value="johnnew887878";

,用户看到他原来输入的值改变了。我想阻止它。

【问题讨论】:

    标签: javascript jquery struts2


    【解决方案1】:

    您可以做的是在提交表单时创建一个隐藏字段并将加密值分配给隐藏字段并将该字段附加到表单并在您的 User 类中捕获加密值。

    【讨论】:

    • 这里的问题是非加密的用户名和密码也用表单提交知道。这样做的整个想法是阻止用户提交原始凭据并提交加密值
    • 您可以将名称和密码字段的值设置为空白,并通过隐藏字段发送加密值。此功能也存在缺陷,因为黑客可以读取加密值中的密码并尝试对其进行解密。最好的选择是创建一个服务器令牌密钥并将该密钥存储在隐藏字段中并匹配服务器中的密钥,并且该密钥仅在几分钟或几秒钟内有效。并且还在服务器上创建密码盐。将该盐连接到密码并存储在数据库中。并在匹配密码时将该密钥连接到密码并匹配它。
    • 是的,我目前正在做与您提议的类似的事情。我为此使用 JEncription。我首先获取服务器生成的jsp密钥并将它们存储在java脚本变量中,然后一旦用户提交我用这些密钥加密的用户名密码并用加密值替换用户输入的凭据(问题是此时用户可以看到他的输入值更改)然后提交。这是我正在使用的 struts2 环境。但是正如您提到的,将它们设为空白并在隐藏变量中提交加密值是可以的。但是用户又会抱怨他输入的值突然消失了
    猜你喜欢
    • 1970-01-01
    • 2023-02-10
    • 2016-04-26
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多