`

url转义字符原理

阅读更多

转自:http://alipay.javaeye.com/blog/68412

url转义字符原理

 

如果表单的action为list.jsf?act=go&state=5

 

则提交时通过request.getParameter可以分别取得act和state的值。

 

如果你的本意是act='go&state=5'这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义

 

[预备知识]
 
        对与通过get方式提交的url,浏览器在提交前首先根据http协议把一一个的参数及其值解析配对。而url的参数间是通过&分割的,这就是浏 览器进行参数配置的分割依据。如果你的参数值中含有&等url特殊字符,那么你在服务器端就会拿到意想不到的值。所以必须对url的特殊字符进行 转义。
编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。
下表中列出了一些URL特殊符号及编码
 

 

      十六进制值
1. +  URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. /  分隔目录和子目录 %2F 
4. ?  分隔实际的 URL 和参数 %3F 
5. % 指定特殊字符 %25 
6. # 表示书签 %23 
7. & URL 中指定的参数间的分隔符 %26 
8. = URL 中指定参数的值 %3D

所以上述的action你应该写成list.jsf?act=go%26state=5

 

Base64,就是说选出64个字符——小写字母a-z、大写字母A-Z、数字0-9、符号“+”、“/”(再加上作为垫字的“=”,实际上是65个字符)——作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。

分享到:
评论

相关推荐

    字符 隐藏 —— 替代性转义

    为了解决这个问题,我们使用转义字符(通常是反斜杠)来“通知”解释器这些字符应被特殊对待。例如,"\n" 表示一个新行,"\t" 表示制表符,\" 表示双引号自身,而 \\ 则表示单个反斜杠。 在网络协议中,如HTTP或...

    URL中文字符

    总的来说,URL中文字符的转码以及处理URL中的不定参数是Web开发中的常见任务,理解其原理和实现方法对于构建健壮的Web应用至关重要。通过正确地编码和解码URL,我们可以确保用户可以无误地访问和传递包含非ASCII字符...

    易语言URL编解码

    2. 转义字符:易语言需要识别哪些字符需要转义,并用特定的方式(通常是百分号加两位十六进制数)来表示这些字符。 3. 编码函数:编写或找到易语言的URLEncode函数,它接收一个字符串作为输入,然后返回编码后的URL...

    利用JS把URL地址栏%20、%55之类编码转成中文字符

    在IT领域,尤其是在Web开发中,处理URL中的特殊字符编码是一项常见的需求。URL中的某些字符因为具有特殊含义或不被支持,会被转换为十六进制形式的百分号编码(Percent-Encoding),例如空格通常被编码为"%20",而...

    javascript将url中的参数加密解密代码

    让我们深入了解一下这段代码的工作原理和相关知识点。 首先,我们有两个主要的函数:`Encrypt` 和 `Decrypt`。`Encrypt` 函数用于加密URL参数,而 `Decrypt` 函数则用于解密已加密的数据。 1. **加密过程**: - ...

    易语言源码易语言URL编解码源码.rar

    源码中可能包含了各种字符转义的处理逻辑,以及如何按照RFC3986标准进行编码的方法。 2. URL解码:与编码相反,URL解码用于将经过编码的字符串还原成其原始形式。在易语言源码中,解码过程可能包括识别和转换百分号...

    url编码转化,将url转化成unicode进行传输

    例如,某些字符如空格、尖括号、引号等在URL中具有特殊含义,因此需要被转义。URL编码的主要目的是确保这些特殊字符能够被正确地传输到服务器端,并在那里被解码回原始值。 #### 二、Unicode与URL编码的关系 在...

    url编码转换器

    URL编码主要遵循ASCII字符集,根据RFC3986规范,非ASCII字符以及某些特殊字符(如空格、#、%等)在URL中需要被转义。转义规则是将每个字符替换为其对应的百分号(%)加两位十六进制数字的形式。例如,空格通常被编码...

    Freemarker操作字符串

    url`等转换器,可以将字符串转义为安全的HTML或URL。例如: ```html <#assign unsafeStr = "<script>alert('XSS');</script>"> ${unsafeStr?html}</p> ``` 输出:"<script>alert('XSS');</...

    GET方法URL中传递中文参数乱码的解决方法

    首先,我们要理解URL编码的基本原理。URL(统一资源定位符)是不能直接包含非ASCII字符的,包括中文在内的大多数非英文字符。因此,当在URL中使用非ASCII字符时,需要将其转换为百分号编码(%xx)的形式,这是一个...

    易语言源码URL网址编解码.rar

    例如,空格通常会被转换为`%20`,特殊字符如"&"和"="也需要转义,以免与URL的结构混淆。 1. **URL编码**:在易语言中,URL编码的主要目的是将非ASCII字符或特殊字符转换为可以在URL中安全传递的格式。这通常使用百...

    UrlTool v.2009-4-13

    例如,某些字符在URL中具有特殊含义,如"&"用于分隔参数,"+"用于表示空格,这些字符在特定场景下需要转义。UrlTool v.2009-4-13提供的加码功能,可以确保这些特殊字符在传输时不引起混淆。 3. URL解码 URL解码则是...

    CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析

    总的来说,CI框架通过内置的过滤和转义机制为URL特殊字符处理和SQL注入提供了防护,但开发者必须了解这些机制的限制并采取额外的预防措施。遵循最佳实践,如使用AR类进行查询,避免直接拼接SQL语句,以及对用户输入...

    Nginx URL重写rewrite机制原理及使用实例

    正则表达式中的特殊字符包括反斜线(\),用来转义特殊字符;脱字符(^),匹配输入字符串的开始位置;美元符号($),匹配输入字符串的结束位置;星号(*),匹配前面的字符零次或多次;加号(+),匹配前面的字符...

    Java过滤器,字符过滤,标签过滤

    通过在web.xml配置文件中定义过滤器,我们可以指定它应用到哪些Servlet或URL模式上。 字符过滤是过滤器的一个常见应用场景。例如,在这个项目中,开发者可能创建了一个自定义的Filter类,该类检查请求参数或响应...

    base64序列化字符串

    - **避免转义**:由于不包含控制字符,Base64编码可以避免HTTP、JSON等协议中的转义问题,简化数据处理。 - **安全**:虽然Base64不是加密,但可以防止某些中间人攻击,因为它隐藏了原始数据的二进制形式。 ### 6. ...

    在JavaScript中对HTML进行反转义详解

    因此,我们需要在JavaScript中将这些转义字符还原为它们的原始HTML实体。 常见的JavaScript转义和反转义函数包括`encodeURI()`、`decodeURI()`、`encodeURIComponent()`和`decodeURIComponent()`,但这些方法主要...

    EncodeAndDecode小工具.zip

    - "%": 百分号是编码的标志,若URL中存在%,则需要转义为"%25"。 6. URL编码与安全 虽然URL编码主要是为了数据的正确传输,但它也与安全性有关。比如,URL编码可以用来防止SQL注入攻击,通过编码特殊字符,可以阻止...

    深入UTF8字符编码.pdf

    由于URL只能包含特定的字符集,因此任何超出此范围的字符都需要通过百分号编码(%xx)形式进行转义。了解URL编码规则对于构建和解析动态URL、处理多语言网页地址至关重要。 综上所述,UTF-8字符编码在现代信息技术...

    自己写的一个url过滤器

    总的来说,这个自定义的URL过滤器项目涵盖了Web开发中的多个重要方面,包括过滤、监听和配置文件的处理,对于学习和理解Web应用程序的架构和工作原理非常有帮助。通过深入研究和实践,开发者可以提升自己在Web安全和...

Global site tag (gtag.js) - Google Analytics