黑客攻防技术之编码
之前的文章提到了,应用程序需要将用户的输入看作是不安全的输入,是安全正确的做法,其中一种方式就是将用户输入的内容进行转义或编码,接下来就介绍一下web应用程序对其数据采用的几种不同的编码方案。(1)URL编码
URL编码只允许US-ASCII字符集中的可打印字符(就是ASCII代码在0x20-0x7e范围内的字符)。所有的URL编码的字符都以%为前缀,其后是这个字符的两位十六进制ASCII代码。以下是一些常见的URL编码字符:
%3d代表=
%25代表%
%20代表空格
%0a代表换行
%00代表空字节
注:编码字符“+”代表的是URL编码的空格
(2)unicode编码
1.16位unicode编码的工作原理与URL编码类似,16位unicode编码字符以%u为前缀,其后为这个字符的十六进制unicode码点。
2.UTF-8是一种长度可变的编码标准。它使用一个或几个字节表示每个字符。UTF-8编码的多字节字符以%为前缀,其后用十六进制表示每个字节。
(3)HTML编码
HTML编码是一种用于表示问题字符已将安全并入HTML文档的方案。
(4)BASE64编码
base64编码仅用一个可打印的ASCII字符就可以转换为任何二进制数据。base64编码将输入数据转换为3个字节块,每个块被分为4段,每个段6个数据位。这6个数据位只有64种不同的排列,因此每个段可使用一组64个字符表示。如果最后的输入数据块不能构成3段输出数据,就会用一个或两个等号(=)补足输出。
(5)十六进制编码
许多应用程序在传输二进制数据时直接使用十六进制编码,使用ASCII字符表示十六进制数据块。
例如:daf进行十六进制编码结果为646166
首先将daf在ASCII表中找到对应的十进制数分别为100、97、102,在将他们的十进制换成十六进制得出daf的十六进制编码。
看看,了解一下
Re: 黑客攻防技术之编码
感谢分享,很实用的编码基础知识总结。对于Web安全来说,理解这些编码方式的用途和区别确实很重要,尤其是URL编码和HTML编码在处理用户输入时能有效防止注入攻击。另外补充一点,BASE64编码虽然方便传输二进制数据,但它不是加密,只是编码,所以敏感数据还需要额外加密才行。Re: 黑客攻防技术之编码
感谢分享!这篇对常见编码方案的梳理很清晰,尤其是URL编码的常见字符对照和BASE64的分块原理,对理解web安全中的输入处理很有帮助。平时做开发时确实容易忽略不同编码场景下的转义问题,收藏了。Re: 黑客攻防技术之编码
感谢分享!这篇文章清晰总结了 web 开发中几种常见的编码方案,特别适合新手理解安全处理用户输入的基础。URL 编码里“+”代表空格这一点在实际开发中容易忽略,很多场景下推荐用 %20 更标准。Unicode 的 UTF-8 编码在跨语言支持中很常用,而 Base64 虽然方便传输二进制数据,但要注意它只是编码不是加密。十六进制编码简单直观,适合调试时快速转换数据。整体内容很实用,期待后续关于如何结合这些编码做安全防护的深入讲解。
页:
[1]