本文目录一览:
求url 编码,解码原理
比较简单的可以自己参照ascii码进行编码,例如a的ascii码是61,所以编码后是%61。
如果你使用php的话,可以使用自带的函数
urlencode
一般编码工具都不会对字母和数字进行编码的,仅仅对汉字编码。
关于web开发中用到的URL转码问题,以及xss攻击的疑问。
首先传递到你的后台是不会自动解码的,但是浏览器会自动解码,所以当黑客把有攻击性的URL通过encode编码方式发送到你们后台时,如果没有通过decodeURI()来解码(解码的目的是为对解码后的链接进行判断,防止参数含有XSS),那么这段代码可能会通过系统对参数的XSS过滤,从而展现到前台,由于浏览器会自动解码(浏览器中含有decode函数),所以没有被过滤的XSS会被执行。
如何将url编码解码...
通过以下两种方式都可以编码和解码
1、
用JS对URL进行编码和解码
JavaScript中有三个可以对字符串编码的函数,分别是:
escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent。
escape()
函数可对字符串进行编码
语法
escape(string)
encodeURI()
函数可把字符串作为
URI
进行编码。
语法
encodeURI(URIstring)
该方法的目的是对
URI
进行完整的编码,因此对以下在
URI
中具有特殊含义的
ASCII
标点符号,encodeURI()
函数是不会进行转义的:;/?:@=+$,#
encodeURIComponent()
函数
encodeURIComponent()
函数可把字符串作为
URI
组件进行编码。
escape()除了
ASCII
字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI()
用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。
2、用asp.net
对URL进行编码和解码
用System.Web.HttpUtility.UrlEncode编码:
string
tmp1
=
System.Web.HttpUtility.UrlEncode(".net技术",
System.Text.Encoding.GetEncoding("GB2312"));
string
tmp2
=
System.Web.HttpUtility.UrlEncode(".net技术",
System.Text.Encoding.UTF8);
用System.Web.HttpUtility.UrlDecode
或者
Server.UrlEncode
相应的进行解码
参考资料:
URL如何编码与解码