最近需要对用户输入的CRLF即(\r\n)做escape,参考了一下jackson的处理方式,大概就是把字符串转换成char数组,循环判断每个字符的ascii编码是否等于需要做escape。code如下:
String str = "fuck\r\nlala"; char[] cs = str.toCharArray(); for (char c : cs) { if ((int) c == 13) { System.out.println('\\'); System.out.println((char) 114); } else if ((int) c == 10) { System.out.println('\\'); System.out.println((char) 110); } else { System.out.println(c); } }
重构之后的代码
StringBuilder sb = new StringBuilder(); HashMap<Integer, Integer> escCodes = new HashMap<Integer, Integer>(); escCodes.put(13, 114); // \r escCodes.put(10, 110); // \n String str = "fuck\r\nlala"; char[] cs = str.toCharArray(); for (char c : cs) { int charCode = (int) c; if (charCode < 24 && escCodes.containsKey(charCode)) { // need escape sb.append('\\'); int escCode = escCodes.get(charCode); sb.append((char) escCode); }else{ sb.append(c); } } System.out.println(sb.toString());
jackson的测试代码
ObjectMapper mapper = new ObjectMapper(); Map param = new HashMap(); String str = "中文fuck\r\nlala"; param.put("test", str); String value = mapper.writeValueAsString(param); System.out.println(value);
jackson的调用堆栈:
- StdSerializerProvider.serializeValue()
- StdSerializerProvider._serializeValue()
- MapSerializer.serialize(Map value,JsonGenerator jgen, SerializerProvider provider)
- MapSerializer.serializeFields(Map value,JsonGenerator jgen, SerializerProvider provider)
- JsonGenerator.writeString(String text)
- WriterBasedGenerator._writeString(String text)
- WriterBasedGenerator._writeString2(final int len)
相关推荐
CRLF(Carriage Return Line Feed,回车换行)注入是一种常见的网络安全漏洞,主要发生在Web应用程序中,攻击者可以通过在输入字段中插入CRLF字符序列,来操纵HTTP响应头,可能导致敏感信息泄露、用户会话劫持甚至...
在Windows系统中,行尾通常由一个回车字符(CR,Carriage Return)和一个换行字符(LF,Line Feed)组成,合称为CRLF;而在Unix和Linux系统中,仅使用一个换行字符(LF)来表示行结束。Mac OS Classic系统则使用单独...
标题"CRLF.ZIP_CRLF_lines"暗示了这个压缩包与文本文件的行结束符有关,特别是从UNIX/Linux系统转换到Windows系统时的行结束符格式。在UNIX和Linux系统中,文本文件通常以LF(Line Feed)字符作为行结束符,而在...
BB报告可能包含了多种CRLF注入的有效载荷,这些载荷用于测试目标系统是否存在CRLF注入漏洞。有效的测试载荷可能包括各种HTTP头部的构造,如: - `Set-Cookie: sessionid=malicious_value\r\n` - `Location: ...
一致的表示语言框架(crlf) 使用JSON编码来传达特定于语言的抽象语法树。 可能的用途包括: 打包代码以供远程执行 语言工具链的中间格式 将语言片段嵌入另一种语言中 { "lang" : < language> , "ast": } ...
每个首部字段以CRLF分隔,而首部和主体之间则由两个连续的CRLF分隔。这种结构使得浏览器能够解析HTTP响应并正确展示内容。 **CRLF Injection漏洞** CRLF注入漏洞的出现是因为Web应用程序未充分过滤用户输入,导致...
设有10个学生的成绩分别是76,69,84,90,73,88,89,63,100,80分,试编制一个子程序统计60~69分,70~79分,80~89分,90~99分及100分的人数,放在S6,S7,S8,S9和S10单元中
背景介绍: IDE工具为IDEA,之前用windows电脑提交代码,同事使用的也是windows电脑。放假时用家里的Mac修改代码后...CRLF -Windows使用,换行符 \r\n 解决方法: 点击idea右下角的LF改为CRLF即可 作者:EricXiao666
CRLF 到 LF CLI 将 CRLF (M$ Win) 转换为 LF (Unix / Linux)。 安装 $ [sudo] npm install -g crlf2lf 用法 $ crlf2lf -h Usage: crlf2lf < DIR> [options] DIR the directory to be CRLF2LFed. Options: -r, --...
换行符批量转换工具:LF to CRLF / CRLF to LF ,自动寻找子目录,自定义替换类型:.txt.c.h(格式:.类型 .*为全部)。
特别优点 字符集探测是著名的老大难问题,就是说,怎样在不知道字符编码的情况下,探测出文本是什么编码,什么字符集。这个问题很难。 所以,你看到的绝大多数转字符集的程序,都是GBK->UTF-8,GBK->BIG5,这种,...
本脚本运行在linux里,实现从windows到Unix 编码变换Shell脚本CRLF→LF,UTF8转换
"lsp-eslint-crlf-issue"这个标题和描述可能指向一个与JavaScript代码编辑器或IDE中的问题有关,特别是涉及到LSP(Language Server Protocol)和ESLint这两个工具时。 LSP是一种通用协议,它允许代码编辑器和语言...
这两种系统对文本文件的行结束符处理方式不同,Windows使用CRLF(回车换行)作为行结束符,而UNIX/Linux则只使用LF(换行)作为行结束符。这在跨平台操作时可能会引发问题,如代码编辑器显示异常或脚本执行错误。...
在网络传输中,通常使用CRLF来表示新行的开始,确保不同系统间能够正确交流信息。 至于标题中的“迎刃而解”,可能是指在博客中有人讨论了关于HTTP协议详解的问题,并通过了解Windows系统与类Unix系统间的差异,...
CRLFuzz快速扫描Go语言编写的CRLF漏洞的工具资源安装从二进制安装很容易。您可以从下载预编译的二进制文件,然后解压缩并运行!或搭配:play_button: curl -sSfL https://git.io/crlfuzz | sh -s -- -b /usr/local/...
}String response = statusLine + contentTypeLine + CRLF + CRLF + entityBody;os.writeBytes(response);os.flush();os.close();fis.close();}private String getEntityBody(FileInputStream fis) throws ...
SSRFUZZ SSRFuzz是使用CRLF链接功能查找服务器端请求伪造漏洞的工具。为什么? 我想用Golang编写并发工具我想模糊参数SSRF vulnerablities,以及模糊的CRLF注入两条路径及参数Orange的工作使我将这些类型的漏洞链接...
首先,我们要理解在JavaScript中,换行符主要有两种形式:LF(Linux和Unix系统中,'\n')和CRLF(Windows系统中,'\r\n')。有时,拷贝的数据可能同时包含这两种换行符。因此,我们需要编写一个函数来处理这些换行符...
【WebStorm 设置详解】 WebStorm 是一款强大的JavaScript 集成开发环境(IDE),由JetBrains 公司出品,被誉为“前端开发者的最佳拍档”。它提供了丰富的代码提示、语法高亮、自动完成、代码重构等功能,深受广大...