`
san_yun
  • 浏览: 2651865 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

CRLF escape

    博客分类:
  • java
 
阅读更多

最近需要对用户输入的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的调用堆栈:

  1. StdSerializerProvider.serializeValue()
  2. StdSerializerProvider._serializeValue()
  3. MapSerializer.serialize(Map value,JsonGenerator jgen, SerializerProvider provider)
  4. MapSerializer.serializeFields(Map value,JsonGenerator jgen, SerializerProvider provider)
  5. JsonGenerator.writeString(String text)
  6. WriterBasedGenerator._writeString(String text)
  7. WriterBasedGenerator._writeString2(final int len)

 

分享到:
评论

相关推荐

    CRLF测试工具打包文件

    CRLF(Carriage Return Line Feed,回车换行)注入是一种常见的网络安全漏洞,主要发生在Web应用程序中,攻击者可以通过在输入字段中插入CRLF字符序列,来操纵HTTP响应头,可能导致敏感信息泄露、用户会话劫持甚至...

    CR LF CRLF转换

    在Windows系统中,行尾通常由一个回车字符(CR,Carriage Return)和一个换行字符(LF,Line Feed)组成,合称为CRLF;而在Unix和Linux系统中,仅使用一个换行字符(LF)来表示行结束。Mac OS Classic系统则使用单独...

    CRLF.ZIP_CRLF_lines

    标题"CRLF.ZIP_CRLF_lines"暗示了这个压缩包与文本文件的行结束符有关,特别是从UNIX/Linux系统转换到Windows系统时的行结束符格式。在UNIX和Linux系统中,文本文件通常以LF(Line Feed)字符作为行结束符,而在...

    CRLF-Injection-Payloads:CRLF注射的有效载荷

    BB报告可能包含了多种CRLF注入的有效载荷,这些载荷用于测试目标系统是否存在CRLF注入漏洞。有效的测试载荷可能包括各种HTTP头部的构造,如: - `Set-Cookie: sessionid=malicious_value\r\n` - `Location: ...

    crlf:一致的表示语言框架(crlf)

    一致的表示语言框架(crlf) 使用JSON编码来传达特定于语言的抽象语法树。 可能的用途包括: 打包代码以供远程执行 语言工具链的中间格式 将语言片段嵌入另一种语言中 { "lang" : &lt; language&gt; , "ast": } ...

    【技术分享】初识HTTP响应拆分攻击(CRLF Injection) .pdf

    每个首部字段以CRLF分隔,而首部和主体之间则由两个连续的CRLF分隔。这种结构使得浏览器能够解析HTTP响应并正确展示内容。 **CRLF Injection漏洞** CRLF注入漏洞的出现是因为Web应用程序未充分过滤用户输入,导致...

    CRLF------MACRO.rar_CRLF MACRO_微机crlf macro

    设有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单元中

    使用IDEA提交代码时提示You are about to commit CRLF line separators to the Git repository

    背景介绍: IDE工具为IDEA,之前用windows电脑提交代码,同事使用的也是windows电脑。放假时用家里的Mac修改代码后...CRLF -Windows使用,换行符 \r\n 解决方法: 点击idea右下角的LF改为CRLF即可 作者:EricXiao666

    node-crlf2lf:CLI 将 CRLF (M$ Win) 转换为 LF (Unix Linux)

    CRLF 到 LF CLI 将 CRLF (M$ Win) 转换为 LF (Unix / Linux)。 安装 $ [sudo] npm install -g crlf2lf 用法 $ crlf2lf -h Usage: crlf2lf &lt; DIR&gt; [options] DIR the directory to be CRLF2LFed. Options: -r, --...

    换行符批量转换工具

    换行符批量转换工具:LF to CRLF / CRLF to LF ,自动寻找子目录,自定义替换类型:.txt.c.h(格式:.类型 .*为全部)。

    批量转UTF-8/UTF-8-sig/GB18030等批量转CRLF/LF/CR换行符

    特别优点 字符集探测是著名的老大难问题,就是说,怎样在不知道字符编码的情况下,探测出文本是什么编码,什么字符集。这个问题很难。 所以,你看到的绝大多数转字符集的程序,都是GBK-&gt;UTF-8,GBK-&gt;BIG5,这种,...

    Unix 编码变换脚本

    本脚本运行在linux里,实现从windows到Unix 编码变换Shell脚本CRLF→LF,UTF8转换

    unix和windows文件格式互相转化

    这两种系统对文本文件的行结束符处理方式不同,Windows使用CRLF(回车换行)作为行结束符,而UNIX/Linux则只使用LF(换行)作为行结束符。这在跨平台操作时可能会引发问题,如代码编辑器显示异常或脚本执行错误。...

    lsp-eslint-crlf-issue

    "lsp-eslint-crlf-issue"这个标题和描述可能指向一个与JavaScript代码编辑器或IDE中的问题有关,特别是涉及到LSP(Language Server Protocol)和ESLint这两个工具时。 LSP是一种通用协议,它允许代码编辑器和语言...

    windows 中 \r\n 区别于 类unix中的\n 疑问理解(crlf回车换行)

    在网络传输中,通常使用CRLF来表示新行的开始,确保不同系统间能够正确交流信息。 至于标题中的“迎刃而解”,可能是指在博客中有人讨论了关于HTTP协议详解的问题,并通过了解Windows系统与类Unix系统间的差异,...

    crlfuzz:快速扫描Go语言编写的CRLF漏洞的工具

    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链接功能查找服务器端请求伪造漏洞的工具。

    SSRFUZZ SSRFuzz是使用CRLF链接功能查找服务器端请求伪造漏洞的工具。为什么? 我想用Golang编写并发工具我想模糊参数SSRF vulnerablities,以及模糊的CRLF注入两条路径及参数Orange的工作使我将这些类型的漏洞链接...

    javascript去掉拷贝数据中带换行数据到文本框

    首先,我们要理解在JavaScript中,换行符主要有两种形式:LF(Linux和Unix系统中,'\n')和CRLF(Windows系统中,'\r\n')。有时,拷贝的数据可能同时包含这两种换行符。因此,我们需要编写一个函数来处理这些换行符...

    webstorm设置sdfdgfgdgfg

    【WebStorm 设置详解】 WebStorm 是一款强大的JavaScript 集成开发环境(IDE),由JetBrains 公司出品,被誉为“前端开发者的最佳拍档”。它提供了丰富的代码提示、语法高亮、自动完成、代码重构等功能,深受广大...

Global site tag (gtag.js) - Google Analytics