转自: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中的不定参数是Web开发中的常见任务,理解其原理和实现方法对于构建健壮的Web应用至关重要。通过正确地编码和解码URL,我们可以确保用户可以无误地访问和传递包含非ASCII字符...
2. 转义字符:易语言需要识别哪些字符需要转义,并用特定的方式(通常是百分号加两位十六进制数)来表示这些字符。 3. 编码函数:编写或找到易语言的URLEncode函数,它接收一个字符串作为输入,然后返回编码后的URL...
在IT领域,尤其是在Web开发中,处理URL中的特殊字符编码是一项常见的需求。URL中的某些字符因为具有特殊含义或不被支持,会被转换为十六进制形式的百分号编码(Percent-Encoding),例如空格通常被编码为"%20",而...
让我们深入了解一下这段代码的工作原理和相关知识点。 首先,我们有两个主要的函数:`Encrypt` 和 `Decrypt`。`Encrypt` 函数用于加密URL参数,而 `Decrypt` 函数则用于解密已加密的数据。 1. **加密过程**: - ...
源码中可能包含了各种字符转义的处理逻辑,以及如何按照RFC3986标准进行编码的方法。 2. URL解码:与编码相反,URL解码用于将经过编码的字符串还原成其原始形式。在易语言源码中,解码过程可能包括识别和转换百分号...
例如,某些字符如空格、尖括号、引号等在URL中具有特殊含义,因此需要被转义。URL编码的主要目的是确保这些特殊字符能够被正确地传输到服务器端,并在那里被解码回原始值。 #### 二、Unicode与URL编码的关系 在...
URL编码主要遵循ASCII字符集,根据RFC3986规范,非ASCII字符以及某些特殊字符(如空格、#、%等)在URL中需要被转义。转义规则是将每个字符替换为其对应的百分号(%)加两位十六进制数字的形式。例如,空格通常被编码...
url`等转换器,可以将字符串转义为安全的HTML或URL。例如: ```html <#assign unsafeStr = "<script>alert('XSS');</script>"> ${unsafeStr?html}</p> ``` 输出:"<script>alert('XSS');</...
首先,我们要理解URL编码的基本原理。URL(统一资源定位符)是不能直接包含非ASCII字符的,包括中文在内的大多数非英文字符。因此,当在URL中使用非ASCII字符时,需要将其转换为百分号编码(%xx)的形式,这是一个...
例如,空格通常会被转换为`%20`,特殊字符如"&"和"="也需要转义,以免与URL的结构混淆。 1. **URL编码**:在易语言中,URL编码的主要目的是将非ASCII字符或特殊字符转换为可以在URL中安全传递的格式。这通常使用百...
例如,某些字符在URL中具有特殊含义,如"&"用于分隔参数,"+"用于表示空格,这些字符在特定场景下需要转义。UrlTool v.2009-4-13提供的加码功能,可以确保这些特殊字符在传输时不引起混淆。 3. URL解码 URL解码则是...
总的来说,CI框架通过内置的过滤和转义机制为URL特殊字符处理和SQL注入提供了防护,但开发者必须了解这些机制的限制并采取额外的预防措施。遵循最佳实践,如使用AR类进行查询,避免直接拼接SQL语句,以及对用户输入...
正则表达式中的特殊字符包括反斜线(\),用来转义特殊字符;脱字符(^),匹配输入字符串的开始位置;美元符号($),匹配输入字符串的结束位置;星号(*),匹配前面的字符零次或多次;加号(+),匹配前面的字符...
通过在web.xml配置文件中定义过滤器,我们可以指定它应用到哪些Servlet或URL模式上。 字符过滤是过滤器的一个常见应用场景。例如,在这个项目中,开发者可能创建了一个自定义的Filter类,该类检查请求参数或响应...
- **避免转义**:由于不包含控制字符,Base64编码可以避免HTTP、JSON等协议中的转义问题,简化数据处理。 - **安全**:虽然Base64不是加密,但可以防止某些中间人攻击,因为它隐藏了原始数据的二进制形式。 ### 6. ...
因此,我们需要在JavaScript中将这些转义字符还原为它们的原始HTML实体。 常见的JavaScript转义和反转义函数包括`encodeURI()`、`decodeURI()`、`encodeURIComponent()`和`decodeURIComponent()`,但这些方法主要...
- "%": 百分号是编码的标志,若URL中存在%,则需要转义为"%25"。 6. URL编码与安全 虽然URL编码主要是为了数据的正确传输,但它也与安全性有关。比如,URL编码可以用来防止SQL注入攻击,通过编码特殊字符,可以阻止...
由于URL只能包含特定的字符集,因此任何超出此范围的字符都需要通过百分号编码(%xx)形式进行转义。了解URL编码规则对于构建和解析动态URL、处理多语言网页地址至关重要。 综上所述,UTF-8字符编码在现代信息技术...
总的来说,这个自定义的URL过滤器项目涵盖了Web开发中的多个重要方面,包括过滤、监听和配置文件的处理,对于学习和理解Web应用程序的架构和工作原理非常有帮助。通过深入研究和实践,开发者可以提升自己在Web安全和...