URI和URL、URL编码与urldecode二次解码

URI和URL

URI是Uniform、Resource、Identify缩写:

  • Uniform:规定统一的格式可以方便的处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式,加入新增的协议方案也更容易。
  • Resource:“可标识的任何东西“,不仅可以单一,也可以是多数的集合。
  • Identify:可标识的对象,也成为标识符。

URI是由某个协议方案表示的资源的定位标识符。URI是用字符串表示某一互联网资源,URL表示资源的地点,URL是URI的子集。

 表示指定的URI,要使用涵盖全部必要信息的绝对URI、绝对URL以及相对URL。

绝对URI格式:

绝对URI格式

以上参考《图解HTTP》 


URL编码

 URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。

  1. 网址路径的编码用的是utf-8编码。
  2. 查询字符串的编码用的是操作系统的默认编码
  3. GET和POSt方法的编码是网页的编码

URL编码也称为百分号编码,因为它的编码方式非常简单,使用”%“+”16进制形式“。非ASCII字符,RFC文档建议使用utf-8对其进行编码得到相应的字节,对每个字节执行百分号编码。

web编程的时候先使用Javascript对URL编码,然后再向服务器提交,可以保证客户端只是用一种编码方法向服务器发出请求。

urldecode二次解码

昨天PHP代码审计的时候碰到了这个问题,做下笔记。

urldecode是PHP中的一个解码函数,会出现二次解码问题是因为当PHP在处理提交的数据时,本身会先进行一次url解码,再遇到urldecode函数,就会出现二次解码问题。

二次解码有可能会造成SQL注入的问题。假设输入一串:

?id=1%2527

首先PHP把%25解码成了%-->?id=1%27,然后urldecode函数再次解码变成?id=1',实现单引号注入。

为什么要encodeURI(url)两次才不会出现乱码? 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值