判断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]分别从应用层到传输层.网络层和数据链路层 ...
随机推荐
- 快速界定故障:Socket Tracer网络监控实践
简介: Socket Tracer定位是传输层(Socket&TCP)的指标采集工具,通过补齐网络监控的这部分盲区,来达到快速界定网络问题的目标. 作者 | 四忌 来源 | 阿里技术公 ...
- WPF开源轻便、快速的桌面启动器
前言 今天大姚给大家分享一款WPF开源.简单.轻便.快速的桌面启动器(支持多主题.多语言:简体中文.繁体中文.英文等):CurvaLauncher. WPF介绍 WPF 是一个强大的桌面应用程序框架, ...
- [HTML] 访问 a 链接不带 referer 的方式
html5 新属性 referrerpolicy: referrerpolicy no-referrer no-referrer-when-downgrade origin origin-when-c ...
- dotnet 警惕 C# 的 is var 写法
本文将和大家介绍 C# 语言设计里面,我认为比较坑的一个语法.通过 is var 的写法,会让开发者误以为 null 是不被包含的,然而事实是在这里的 var 是被赋予含义的,将被允许 null 通过 ...
- 用 C# 写脚本 如何输出文件夹内所有文件名
大部分在 Windows 下的脚本都是使用 bat 或 cmd 写的,这部分的脚本对我来说可读性不好.这个可读性也是很主观的,对我来说用 C# 写脚本的可读性很强,但是换个小伙伴就不是了.在 .NET ...
- OLAP系列之分析型数据库clickhouse权限控制(六)
一.clickhouse权限管理 users.xml默认配置文件: <?xml version="1.0"?> <clickhouse> <profi ...
- Python 潮流周刊#49:谷歌裁员 Python 团队,微软开源 MS-DOS 4.0
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 10、操作系统安全加固-Linux加固
1.账号管理与认证授权 1.1.为不同的管理员分配不同的账号 目的:根据不同用途设置不同账户账号,提高安全层级 实施方法: 1.设置高风险文件为最小权限,如:passwd.shadow.group.s ...
- lodash中的深拷贝方法cloneDeep()
- 🔥架构师狂掉1024根头发,总算搞定SSL通配证书
架构师狂掉1024根头发,总算搞定SSL通配证书 经过许多个日日夜夜的持续开发(掉了1024根头发),总算搞定了v1.11.0版本,修复和解决了许多问题,也支持CDN和OSS证书的部署. v1.11. ...