url黑客编码-一分钟读懂黑客代码

第三方分享代码
hacker 2年前 (2023-02-27) 黑客服务 177 3

目录介绍:

关于web开发中用到的URL转码问题,以及xss攻击的疑问。

首先传递到你的后台是不会自动解码的,但是浏览器会自动解码,所以当黑客把有攻击性的URL通过encode编码方式发送到你们后台时,如果没有通过decodeURI()来解码(解码的目的是为对解码后的链接进行判断,防止参数含有XSS),那么这段代码可能会通过系统对参数的XSS过滤,从而展现到前台,由于浏览器会自动解码(浏览器中含有decode函数),所以没有被过滤的XSS会被执行。

谁知道url编码的作用啊?

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

theName=Ichabod+Cranegender=malestatus=missingheadless=yes

这是一个专门对地址栏里所传递的参数进行编码的规则。

比如在参数中带有空格的话,传递参数时就会发生错误,而用URL编码过以后,空格变成了%20这样就不会发生错误了;另外中文字经编码后全是怪符号,有利于保密。

这个编码后的字串提交给服务器后是不需要解码的,网页会自动识别.

URL编码遵循下列规则: 每对name/value由符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =, , 和 % 这些特殊的字符。

url的编码和解码方式

url的在线编码和解码工具:

1、基本知识

URLEncode:是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu、 Google等搜索引擎中输入中文查询时候,生成经过 Encode过的网页URL。URLEncode的方式一般有两种一种是传统的基于GB2312的Encode(Baidu、Yisou等使用),一种是 基于UTF-8的Encode(Google,Yahoo等使用)。本工具分别实现两种方式的Encode与Decode。

中文 - GB2312的Encode - ����

中文 - UTF-8的Encode - 中文

Html中的URLEncode:

编码为GB2312的html文件中,

中文.rar - 浏览器自动转换为 - ����.rar

注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,我试过了.我认为这应该算是Firefox一个bug.

编码为UTF-8的html文件中,

中文.rar - 浏览器自动转换为 - 中文.rar

PHP中的URLEncode:

//GB2312的Encode

echo urlencode(“中文-_. “).”\n”; // ����-_.+

echo urldecode(“����-_. “).”\n”; //中文-_.

echo rawurlencode(“中文-_. “).”\n”; // ����-_.

echo rawurldecode(“����-_. “).”\n”; //中文-_.

?

除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。

urlencode和rawurlencode的区别:

urlencode 将空格则编码为加号(+)

rawurlencode 将空格则编码为加号( )

如果要使用UTF-8的Encode,有两种方法:

一、将文件存为UTF-8文件,直接使用urlencode、rawurlencode即可。

二、使用mb_convert_encoding函数。

$url = ‘中文.rar’;

echo urlencode(mb_convert_encoding($url, ‘utf-8′, ‘gb2312′)).”\n”;

echo rawurlencode(mb_convert_encoding($url, ‘utf-8′, ‘gb2312′)).”\n”;

//中文.rar

?

实例:

function parseurl($url=”")

{

$url = rawurlencode(mb_convert_encoding($url, ‘gb2312′, ‘utf-8′));

$a = array(“:”, “/”, “@″);

$b = array(“:”, “/”, “@”);

$url = str_replace($a, $b, $url);

return $url;

}

$url=”中文/中文.rar”;

echo parseurl($url);

//����/����.rar

?

JavaScript中的URLEncode:

中文-_. 中文-_.

encodeURI 不对下列字符进行编码:“:”、“/”、“;”、“?”、“@”等特殊字符。

中文.rar中文.rar

2、示例

;ckn=91142321196129

1)utf-8解码

�ᘷ���� ������ckn=91142321196129

2)gb2312解码

�针吠塑� 浈��?ckn=91142321196129

URL编码的编码规则

URL编码遵循下列规则: 每对name/value由;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。

相关推荐

网友评论

  • (*)

最新评论

  • 访客 2023-02-27 16:40:06 回复

    29URL编码的编码规则URL编码遵循下列规则: 每对name/value由;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。

    1
  • 访客 2023-02-28 01:17:15 回复

    b_convert_encoding($url, ‘utf-8′, ‘gb2312′)).”\n”; //中文.rar ? 实例: function parseurl($url=”") { $url = rawurlencode(mb_convert_enc

    2
  • 访客 2023-02-27 17:24:50 回复

    遵循下列规则: 每对name/value由;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字

    3