判断URL是否编码,编码后的sign对签名和验签都有影响,导致验签不通过
判断URL是否编码,编码后的sign对签名和验签都有影响,导致验签不通过
如果含有 + %符号无法判断, 否则判断不准或报错 Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "#&"
package com.example.core.mydemo.java; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder; /**
* url1=%3D%3D
* decodedUrl===
* URL 1 is encoded: true
* decodedUrl===
* URL 2 is encoded: false
* url1=%2B+%2F%3F%25%23%26
* decodedUrl=+ /?%#&
* URL 3 is encoded: true
* decodedUrl= /?#&
* URL 4 is encoded: false
* decodedUrl=
* URL 5 is encoded: true
* URL 6 is encoded: true
* java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern
* at java.net.URLDecoder.decode(URLDecoder.java:187)
* at com.example.core.mydemo.java.URLUtils.isUrlEncoded(URLUtils.java:22)
* at com.example.core.mydemo.java.URLUtils.main(URLUtils.java:56)
* */
public class URLUtils {
public static boolean isUrlEncoded(String url) {
try {
String decodedUrl = URLDecoder.decode(url, "UTF-8");
System.out.println("decodedUrl=" + decodedUrl);
return !decodedUrl.equals(url);
} catch (UnsupportedEncodingException e) {
// 处理异常
e.printStackTrace();
return false;
}catch (IllegalArgumentException ex){
ex.printStackTrace();
return true;
}
} public static void main(String[] args) throws UnsupportedEncodingException {
String url1 = URLEncoder.encode("==","UTF-8");
System.out.println("url1=" + url1);
String url2 = "=="; System.out.println("URL 1 is encoded: " + isUrlEncoded(url1));
System.out.println("URL 2 is encoded: " + isUrlEncoded(url2)); url1 = URLEncoder.encode("+ /?%#&","UTF-8");
System.out.println("url1=" + url1);
url2 = " /?#&"; //去掉 + % 否则判断不准或报错 Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "#&" System.out.println("URL 3 is encoded: " + isUrlEncoded(url1));
System.out.println("URL 4 is encoded: " + isUrlEncoded(url2)); url1 = "+";
url2 = "%";
System.out.println("URL 5 is encoded: " + isUrlEncoded(url1));
System.out.println("URL 6 is encoded: " + isUrlEncoded(url2)); } }
判断URL是否编码,编码后的sign对签名和验签都有影响,导致验签不通过的更多相关文章
- NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用
NET MVC全局异常处理(一) 目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...
- url为什么要编码及php中的中文字符urlencode基本原理
首先了解以下中文字符在使用urlencode的时候运用的基本原理: urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. 此字符串中除了 -_. 之外的所 ...
- [转]PHP base64_encode 在URL地址参数编码上使用
因为我使用公钥,使用php的 openssl 加密之后的资料 base64_encode()字符串,然后放入请求 url 中当作参数,urlencode(base64_encode()),然后用 ur ...
- Url的Base64编码以及解码
Base64可以将二进制转码成可见字符方便进行http传输,但是base64转码时会生成“+”,“/”,“=”这些被URL进行转码的特殊字符,导致两方面数据不一致.我们可以在发送前将“+”,“/”,“ ...
- python中url解析 or url的base64编码
目录 from urllib.parse import urlparse, quote, unquote, urlencode1.解析url的组成成分:urlparse(url)2.url的base6 ...
- HttpUtility.UrlEncode 方法 (String) 对 URL 字符串进行编码 NET Framework 4.6 and 4.5
对 URL 字符串进行编码. 这些方法重载可用于对整个 URL(包括查询字符串值)进行编码. 要编码或解码 Web 应用程序之外的值,请使用 WebUtility 类. 重载此成员.有关此成员的完整信 ...
- PHP对URL进行字符串编码
urlencode($url1) urldecode($url) //对URL进行字符串编码和解码 $url1 = 'https://www.baidu.com/uploade/img/123.png ...
- URL的字符编码
摘要: 在通过URL访问HTTP SERVER的时候,通常会产生trace callback的异常,返回505的错误," VERSION IS NOT SUPPORTED ?" , ...
- C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路
C#不用union,而是有更好的方式实现 用过C/C++的人都知道有个union,特别好用,似乎char数组到short,int,float等的转换无所不能,也确实是能,并且用起来十分方便.那C# ...
- 在浏览器中输入URL按下回车键后发生了什么
在浏览器中输入URL按下回车键后发生了什么 [1]解析URL[2]DNS查询,解析域名,将域名解析为IP地址[3]ARP广播,根据IP地址来解析MAC地址[4]分别从应用层到传输层.网络层和数据链路层 ...
随机推荐
- StarLake:汇量科技云原生数据湖的探索和实践
简介: 快速了解汇量科技在云原生数据湖领域的探索和实践,详解 StarLake 的架构及业务应用案例. 作者:陈绪(汇量科技资深算法架构师,EnginePlus 2.0 产品负责人) 内容框架: 互联 ...
- [Unreal] 虚拟现实理论与最佳实践
优秀的虚拟现实场景所需要具备的特点: 真实感.沉浸感.舒适性.流畅性. VR的这些特点上有其它媒体所不具备的优势,主要通过硬件来实现. VR 的沉浸感让用户置身于周围世界,也引发了一些独特的症状: 眼 ...
- dotnet 警惕 Assembly.Location 返回空
在大部分情况下,获取当前所运行的应用程序的所在路径时,常用的就是 Assembly.Location 属性,按照之前的经验,使用 Assembly.Location 是最为稳定的做法,然而在 dotn ...
- dotnet 读 WPF 源代码笔记 为什么自定义的 UserControl 用户控件不能跨程序集继承
从设计上,用户控件 UserControl 就不是一个合适用来多次继承的类型,更不要说进行跨程序集继承自定义的 UserControl 用户控件.对于大部分的用户控件来说,都是采用组合现有的控件来实现 ...
- 2019-8-31-C#-如何引用-WshShell-类
title author date CreateTime categories C# 如何引用 WshShell 类 lindexi 2019-08-31 16:55:58 +0800 2019-3- ...
- 2019-10-7-WPF-will-break-when-an-exception-be-throw-in-the-StylusPlugIn
title author date CreateTime categories WPF will break when an exception be throw in the StylusPlugI ...
- docker 完美部署gitea
效果: docker-compose version: "3" networks: gitea: external: false services: server: image: ...
- hexo 博客插入本地图片时遇到的坑
哈喽大家好,我是咸鱼. 最近一直在折腾博客的事,说是 hexo 极易上手,我觉得只仅限于在安装部署的时候,随着对 hexo 的深入使用,发现遇到的问题还是挺多的. 那今天来讲一下我在把本地图片插入到 ...
- 【源码研读】MLIR Dialect 分层设计
以「疑问 - 求解」的形式来组织调研,此处记录整个过程. 1. MLIR 中的 Dialect 是「分层」设计的么? 先问是不是,再谈为什么.从 LLVM 社区 可以看出,至少在做 Codegen 时 ...
- PHP实现没有数据库提交form表单到后台并且显示出数据列表(Vuejs和Element-UI前端设计表单)
1.情境:如果你新建了个网站,却没有数据库服务器,如何把你的表单信息,提交到服务端后台,收集数据. 2.思路:如果用传统的form action 提交到一个form.php页面,此时只能存储一次数据, ...