首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Java类的HTML表单加密

基于Java类的HTML表单加密
EN

Stack Overflow用户
提问于 2013-06-26 13:05:05
回答 1查看 1.6K关注 0票数 0

下面我有一个非常简单的例子来说明我想要做的事情。我的Java类"CommonUtils“有一个加密和解密字符串的方法。在将它们写入cookie之前,我想对logonuidfield和logonpassfield进行加密。我知道直接从Javascript调用CommonUtils.xorEncode(~)是不可能的,但是是否有可能在编写cookie之前通过CommonUtils.xorEncode(~)传递这些字段的值?

我不希望用javascript编写加密方法。我希望它在Java类中。我猜想,如果不使用LiveConnect或其他类似的东西,我就不可能做什么。

提前谢谢。

代码语言:javascript
复制
<%@ page import="package.CommonUtils" %>

<HTML>
<SCRIPT LANGUAGE=JavaScript>
function setCookies() {
    var email = document.getElementById("logonuidfield").value;
    var password = document.getElementById("logonpassfield").value;

    writeCookie("EmailText",email);
    writeCookie("PasswordText",password);      
}

function writeCookie(name, value) {
    document.cookie = name + "=" + escape(value);
}
</script>

<body>
<tr>
    <td>
        <%  
            String message = "This is a test message.";

            out.println("<Label>This is the original message: " + message + "</Label><br>");
            out.println("<Label>Hex before encrypting       : " + CommonUtils.printStringHex(message)  + "</Label><br>");
            message = CommonUtils.xorEncode(message);
            out.println("<Label>Hex after encrypting        : " + CommonUtils.printStringHex(message) + "</Label><br>");
            message = CommonUtils.xorDecode(message);
            out.println("<Label>Hex after decrypting        : " + CommonUtils.printStringHex(message) + "</Label><br>");
            out.println("<Label>This is the final message   : " + message + "</Label><br>");
        %>
    </td>
</tr>
<FORM name="logonForm" id="logonForm" autocomplete="off" onsubmit="setCookies()" method="post" action="" >
    <li>                                    
        <input type="text" id="logonuidfield" placeholder="email address*" style="width: 100%" name="j_user" type="email" value="" title="Email address *"/>
    </li>
    <li>
        <input type="password" id="logonpassfield" placeholder="Password*" style="width: 100%" name="j_password" />
    </li>
    <li>
        <input type="submit" value="Log in" name="uidPasswordLogon"/>
    </li>
</form>
EN

回答 1

Stack Overflow用户

发布于 2013-06-26 13:29:45

请注意您的请求/响应周期:

  1. 客户端使用表单检索URL
  2. 服务器编译jsp并生成html输出。
  3. 客户端看到的是空表单,没有与服务器的连接,这就是“浏览器世界”。
  4. 客户端提交表单,因此您将表单数据发送到服务器并保存cookie。此时,您无法从服务器上运行java代码,这仍然是“浏览器世界”。
  5. 服务器接收请求并执行jsp/servlet/表单操作中映射的任何内容,这里您的客户端已经发送了表单数据。
  6. 服务器处理并发送响应。
  7. 在这里,客户机再次收到来自服务器的响应,并可以将服务器处理的内容保存到cookie中。

所以,您不能只在第4步的服务器端执行一些java加密,因为直到第7步才能得到答案。

也许我们需要更多关于你想做的事情的具体信息.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17320854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档