【问题标题】:Retreiveing Encoded Value from URL从 URL 检索编码值
【发布时间】:2012-09-17 22:25:46
【问题描述】:

我在 URL 中传递了一个编码的 SSO 令牌...所以 URL 看起来像

 http://127.0.0.1:7101/CRMOD_UCM-Sankalp-context-root/BrowseFile.jsp?token=%246%24zhxjx%2fpz6dVucl9cgG43ii2Tr4qVnNbeqJg8jCy6Jj7vRvXN4%3d%3b%246%24GlRGp%2fxfEM308NZGmY%2fhjHav2yjHSvbww1l0%2fCcCtcVjzl%2bCQFlQPdBRKO0t1XUmF0I6xLmfQ%2fnb7VgJeSYnvrAb9YUQQ3tvr%2fBZ%2bIRZiBAGU2%2fZg%3d

但是当我检索变量的值并使用打印它时 out.println("SSO Token:"+request.getParameter("token")); 它打印

$ 6 $ zhxjx / pz6dVucl9cgG43ii2Tr4qVnNbeqJg8jCy6Jj7vRvXN4 =; $ 6 $ GlRGp / xfEM308NZGmY / hjHav2yjHSvbww1l0 / CcCtcVjzl + CQFlQPdBRKO0t1XUmF0I6xLmfQ / nb7VgJeSYnvrAb9YUQQ3tvr / BZ + IRZiBAGU2 / ZG = P>

正确的令牌存在于 URL 中,为什么我在打印中得到如此不同的值...

请帮助......

【问题讨论】:

    标签: java web-services single-sign-on url-parameters ondemand


    【解决方案1】:

    request.getParameter("token") 解码参数值,因此打印的值是 URL 中参数值的解码版本。

    更多信息请参见Java EE, accent in url, request.getParameter wrong value

    【讨论】:

    • 那么这是一个很大的安全威胁,因为拥有 URL 的neone 可以简单地使用来解码令牌,你能告诉我如何避免这种情况
    【解决方案2】:

    如果要解码,您将获得编码值,然后使用以下代码。默认情况下,系统会为我们解码,但在您的情况下,它不会被解码,您必须显式解码 request.getParameter("token") 的值。

    String token = request.getParameter("token").toString();
    // To decode url
    String decodedtoken = URLDecoder.decode(token , "UTF-8");
    System.out.println("Decoded token value "+ decodedtoken);
    
    // To encode url 
    String encodedtoken = URLEncoder.encode(token , "UTF-8"); 
    System.out.println("Encoded token value "+ encodedtoken);
    

    【讨论】:

      【解决方案3】:

      在 URL 中,令牌是 URL encoded。这是必要的,因为某些字符在 URL 中具有特殊含义。

      通过对值进行 URL 编码,这些特殊字符将替换为 %nn 代码,其中 nn 是特殊字符的字符代码。

      Java 会自动为您解码,以便您在调用 request.getParameter("token") 时获得实际值,而不是 URL 编码的值。

      【讨论】:

      • 实际上 %nn 代表一个字节,它取决于 Web 服务器配置,使用哪个字节字符映射。 Tomcat 以 ISO-8859-1 为例,但我不知道它是否改变了。因此,当您对该值进行编码并使用相同的编码时,您必须小心。
      • 那么这是一个很大的安全威胁,因为拥有 URL 的neone 可以简单地使用来解码令牌,你能告诉我如何避免这种情况
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多