WebGoat Day3 Insecure Storage

Encoding Basics

本节主要是熟悉常见的编码方式。

Base64

Base64是将普通字符编码成二进制数据。

Entity

HTML中常用的特殊字符实体编码

PBE

PBE算法是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的安全性。

MD5

MD5是一种单向散列的哈希算法

SHA-256

也是一种单向散列的哈希算法

Unicode encoding

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。

URL encoding

URL编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。

Hex encoding

16进制编码

Rot13

Rot13编码是一种简单的编码,目的是让文本不可读,但它很容易被还原并且不具有安全性

Double URL encoding

当使用地址栏提交查询参数时,如果不编码,非英文字符会按照操作系统的字符集进行编码提交到服务器,服务器会按照配置的字符集进行解码,所以如果两者不一致就会导致乱码。

encodeURI函数采用UTF-8对URL进行编码,所以如果服务器在进行解码时使用的是其他的编码方式就会出现乱码,默认的服务器配置的解码字符集都不是UTF-8,所以大部分情况下地址栏提交中文查询参数时会产生乱码;针对这种情况,可以连续使用两次encodeURI在客户端(主要指浏览器)对非英文字符进行编码,然后在服务端使用Java.net.URLDecoder(String.”UTF-8”)解码,即可得到正确的中文。

Double unicode encoding

应该是进行两次unicode encoding

XOR

异或运算的加密

[1] Webgoat之Insecure Storage