我想加密一个URL变量,以便用户在jsp中传递信息时无法查看或修改该信息。
这是一个示例网址:
localhost/somewebpage/name.jsp?id=1234&tname=Employee_March_2013
在这里,我想加密或编码参数id
和tname
。
有人可以帮我写一个编码/加密然后解密参数的短脚本
修改
我发送此网址作为电子邮件中的附件...当收件人点击此链接时,他们的工资单信息将显示在网页上
答案 0 :(得分:6)
在不使用任何第三方库的情况下在Base64中编码/解码的最佳方法,您可以使用sun.misc.BASE64Encoder / sun.misc.BASE64Decoder。
try this snippet
String id="1234";
byte[] bytesEncoded = Base64.encodeBase64(id.getBytes());//encoding part
String encoded_id=new String(bytesEncoded);
String id1=request.getParameter("id");
byte[] valueDecoded= Base64.decodeBase64(id1);//decoding part
String decoded_id=new String(valueDecoded);
将'encoded_id'作为url参数发送,而不是传递'id'
答案 1 :(得分:0)
当我们知道您'将此网址作为附件发送到电子邮件中时,您的问题就变得可以解决了...当接收方点击此链接时,他们的工资单已经确认'
这意味着有3个选项:加密,散列和使用随机字符串。
在这种情况下,我建议使用随机字符串(或散列)而不是加密。原因是2倍:
假设您有一个包含用户数据的数据库,那么您将为该特定用户/事务生成唯一的随机字符串(或哈希)。然后将这些数据(您可以在内部再次哈希)与您的用户数据一起存储或链接。
现在,您只发送带有与用户数据唯一链接的随机字符串/散列的链接。
查看https://stackoverflow.com/search?q=[jsp]+hash的SO
并且请为了[在这里进入神灵]的爱,请务必阅读Wikipedia about 'salt'等等。
您不想要在用户付款时出错!
现在,做出选择,进行设置并在遇到问题时返回问题!
修改强>
实际上......完全“随机”(固定长度)的唯一字符串代替散列,就足够了!更好的是:或两个随机字符串,用于双因素检查:一个用于识别的字符串,一个用于验证。
答案 2 :(得分:0)
URLEncoder.encode(Encryption.encrypt(参数),“ UTF-8”)
答案 3 :(得分:-2)
始终使用POST
方法。
即使在POST
方法中,用户也可以看到id
并可以在浏览器控制台网络标签中进行更改。因此,用户可以看到其他人的电子邮件附件,因为您在评论中提到了这样。
因此,尝试在jsp会话中设置id
并获取java servlet代码中的id。
这是非常好的做法。