【问题标题】:how to encrypt/encode url parameters in jsp如何在jsp中加密/编码url参数
【发布时间】:2014-07-19 19:46:07
【问题描述】:

我想对一个URL变量进行加密,这样用户在jsp中传递的时候就看不到或修改信息了。

这是一个示例网址:

localhost/somewebpage/name.jsp?id=1234&tname=Employee_March_2013

这里我想对参数idtname进行加密或编码。

有人可以帮我写一个对参数进行编码/加密然后解密的简短脚本

编辑:
我正在将此网址作为电子邮件附件发送...当接收者点击此链接时,他们的工资单信息将显示在网页上'

【问题讨论】:

  • 什么会使密码和种子成为用户的秘密,但您知道/可预测?如果您不担心用户,而是担心一些中间人嗅探攻击......那么......同样的问题......
  • 我将此网址作为电子邮件的附件发送....当接收者点击此链接时,他们的工资单信息将显示在网页上....假设他们修改了 id 值,则没有数据保密......我的意思是他们可以看到其他数据......
  • '我正在将此网址作为电子邮件中的附件发送'@DileepKumar:将有关电子邮件的内容添加到您的问题中,它非常相关并更改了一些使我对您问题的原始评论没有实际意义的事情!!!现在它变成了一个可以真正解决的问题!
  • 我冒昧地为您更新了您的问题,从而节省了其他人发布(双关语)与您无关的答案的时间!

标签: html jsp url


【解决方案1】:

当我们知道您将此网址作为电子邮件附件发送时,您的问题就可以解决了......当接收者点击此链接时,他们的工资单得到确认'

这意味着有 3 个选项:加密、散列和使用随机字符串。

在这种情况下,我建议使用随机字符串(或散列)而不是加密。原因有二:

  • 您没有发送潜在的私人数据(例如,供 google gmail 阅读)
  • 随机字符串(或散列)更简单、更短且更安全(在这种情况下)。

假设您有一个包含用户数据的数据库,那么您将为该特定用户/事务生成一个唯一的随机字符串(或哈希)。然后您将这些数据(您可以在内部再次对其进行哈希处理)与您的用户数据一起存储或链接到您的用户数据。

现在您只发送带有唯一链接到用户数据的随机字符串/散列的链接。

查看https://stackoverflow.com/search?q=[jsp]+hash的 SO
请看在 [enter deity here] 的份上,请务必阅读 Wikipedia about 'salt' 等!!
您确实想在用户付款方面犯错误!

现在,做出选择,进行设置,如果遇到困难,请返回问题!

编辑:
事实上.. 而不是散列,一个完全“随机”(固定长度)的唯一字符串就足够了!更好的是:或两个随机字符串,用于双因素检查:一个字符串用于识别,一个用于身份验证。

【讨论】:

    【解决方案2】:

    始终使用POST 方法。

    即使在POST 方法中,用户也可以看到id 并可以在浏览器控制台网络选项卡中更改它。这样,用户可以看到其他人的电子邮件附件,因为您在评论中提到过这样的内容。

    所以,尝试在 jsp 会话中设置 id 并在 java servlet 代码中获取 id。 这真的是很好的做法。

    【讨论】:

    • 您知道这是关于通过电子邮件发送给用户的链接吗?
    【解决方案3】:

    在 Base64 中编码/解码而不使用任何第三方库的最佳方式,您可以使用 Using 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'

    【讨论】:

      【解决方案4】:

      URLEncoder.encode(Encryption.encrypt(parameters), "UTF-8")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-18
        • 2017-02-03
        • 2013-04-02
        • 1970-01-01
        • 1970-01-01
        • 2011-12-29
        • 2014-10-06
        相关资源
        最近更新 更多