早期,HTTP协议和HTML语言都是基于文本的,与是深圳网站设计出不同的编码方案,确保这些机制能够安全处理不常见的字符和二进制数据。许多情况下,攻击者甚至能够控制应用程序所有使用的编程方案,造成其深圳网站制作人员无法预料的事。攻击Web程序通常需要相关数据进行编码,Web应用程序对其数据采用几种不同的编码方案。
URL编码,只允许使用US-ASCⅡ字符集中的客打印字符。而且由于其在URL方案或HTTP协议内具有特殊含义,这个范围内的一些字符也不能用在URL中。URL编程主要用于对扩展ASCⅡ字符集中的任何有问题的字符进行编码,使用其通过HTTP安全传输。任何URL编程的字符都以%为前缀,其后是这个字符的两位是十六进制ASCⅡ代码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。
Unicode编码,是一种支持全世界各种编写系统而设计的字符编码标准,它采用各种编码方案骑着一下可用于表示Web应用程序中的不常见的字符。Unicode也称“统一码”“万国码”。16位Unicode编码的工作原理与URL类似。为通过HTTP进行传输,16位Unicode编码的字符以%u为前缀,其后是这个字符的十六进制Unicode码点。比如:%u2215代表/; %u00e9代表é。
Base64编码,是用一个可打印的ASCⅡ字符就可以安全转换任何二进制数据,它常用于对电子邮件附件进行的编码,其通过SMTP安全传输。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
HTML编码,是一种用于表示问题字符以其安全并入HTML文档的方案。有许多字符具有特殊的含义,为了安全使用这些字符将其用在文档内容中,就必须对其进行HTML编码。HTML编码定义了字符HTML实体来表示特殊字面字符,比如:"代表“;'代表’;&代表&;<代表<;>代表>。
十六进制编码,是许多应用程序在传送二进制数据时直接使用十六进制编码,用ASCⅡ字符表示十六进制数据块。比如对cookie中的用户daf进行十六进制编程,会得到这样的结果:646166 和Base64编码的数据一样,在十六进制编码数据通常容易辨认。