回答
Encoding描述文件的字符是如何物理写入二进制(如Unicode或ANSI)。
Escaping指替换特殊字符(如<
和>
)的过程中与它们XML entity当量(如<
和>
)。对于URL,转义是指用%
(如%20
)开头的字符替换单个空白字符。
按语言不同逃逸,但编码通常是广泛接受的标准。有时这些术语被模棱两可地使用(特别是在用于表示转义的编码方面),但它们被很好地定义和区分。
在每一个Web应用程序,数据由像视图层,模型层,数据库层,等各层“应该”被独立地开发,以满足各种扩展性和维护要求的各种层。
现在,基本上,每一层都需要“对话”隔日,他们有在通过它可以谈的语言来决定。 这被称为编码。各类编码时存在类似ASCII,UTF-8,UTF-16等 现在,如果用户是中国人还是日本人,例如,然后他ASCII是行不通的,因此,他将与UTF-16或继续任何其他的编码技术都可以保证中文沟通。所以从网页层面来说,汉字将通过业务层,然后到达数据层,并且在任何地方都会使用相同的“编码”方案。
为什么?
现在假设,你的Web层,在UTF-16发送数据时,支持中国的语言,但数据库层接受,只有ASCII,那么数据库层会得到困惑,你在说什么!它只懂英文字,不会理解其余的。 这是关于编码。
转义:
有一定的一套名为“元数据”的数据具有不同于浏览器的角度看有特殊意义的。例如,<>
是来自浏览器角度的元数据。浏览器解析器知道这些<>
中包含的所有数据都将被解释。 现在攻击者使用这种技术来混淆浏览器。 例如:
<input type="text" value="${name} />
如果我更换
name="/><script>alert(document.cookie)</script>
然后在浏览器看到的结果代码的名称将是
<input type="text" value=""/><script>alert(document.cookie)</script> />
手段,现在你需要指导浏览器,无论我放在name=""
应该“逃脱”,或应被视为仅数据。所以有各种功能,要么编码/转义<>
作为他们的HTML等效%3C%3E
,所以现在浏览器知道这需要被区别对待。基本上逃避意味着逃避其实际意义(粗略地说)。
<input type="text" value="${fn:escapeXML(name)} />
使用JSTL。
TL; DR 这两个术语是可互换的(如果你的意思是转换某些字符,所以他们将被解释为普通的字符串数据)。这场辩论很古老。来自CWE-116: Improper Encoding or Escaping of Output:
“编码”和“转义”术语的用法差别很大。例如,在某些编程语言中,术语互换使用 ,而其他语言提供的API使用 条款来执行不同的任务。这种重叠的用法扩展到Web, ,如“escape”JavaScript函数,其目的是声明为 编码。当然,编码和转义的概念在几十年前就已经在网络上出现了。考虑到这样的背景,CWE很难采用一致的词汇,不会被某些 选区误解。
搞笑的足够的JavaScript还具有encodeURIComponent()
,其specification避免完全的讨论:
encodeURIComponent函数计算 URI的在 的新版本,其某些字符的每个实例被替换一个,两个, 三个或四个转义序列,表示 字符的UTF-8编码。
个人我相信这是更合适的指代一般方法为“编码”,因为您正在创建code要由通过通信信道(一条标记/编程代码)发送和解释接收器(解析器)。我认为用<
这样完全不同的东西代替<
并称之为“逃避”是愚蠢的。
- 1. XML转义码
- 2. 编程术语
- 3. 编程术语和定义(python)
- 4. 术语:术语'saga'的含义
- 5. 编程术语表
- 6. 术语未定义
- 7. 编码技术
- 8. 使用'我很高兴'的字符串转义 - 技术术语?
- 9. Jpeg编码技术
- 10. Facebook编码技术
- 11. 环绕编程术语
- 12. 单子非编程术语
- 13. TypeError:术语未定义?
- 14. PHP转义编码报价
- 15. URL/HTML转义/编码
- 16. HTML编码转义问题
- 17. jQuery XML请求的转义引语
- 18. WordPress短代码术语
- 19. Android - 用俄语解析xml(编码)
- 20. 如何使用xQuery取消编码转义的XML
- 21. .Net XML序列化和转义或编码字符
- 22. 算术汇编语言语法问题
- 23. 术语“语义”是什么意思?
- 24. 封闭术语和语义疑问
- 25. Drupal:将分类术语名称转换为术语ID
- 26. 获取术语名称的术语编号
- 27. 将阻塞代码分成异步回调的术语术语
- 28. 与XML更改相关的术语
- 29. XML转换编码的问题
- 30. 如何转换HTML编码的XML?
迂腐的澄清:“unicode”不是一种编码,而是一种字符集(UTF-8,ISO8859-1,CP850是编码的例子)。可悲的是,Unicode和UTF-8经常被用作同义词,而不是。 – tokland 2010-06-05 21:39:30
同意“编码”是w/r/t“字符编码”的正确术语,但在涉及到替换字符以避免特殊解释的过程中,这些术语不是“明确定义和明确的”。看到我的答案。 – 2013-04-20 21:08:04