重定向和转发
重定向是客户端行为,转发是服务器行为,转发耗时比重定向少。
无论转发和重定向,后续代码都会执行。
重定向
重定向的过程
- 通过各种方法将各种网络请求重新定个方向转到其它位置
- 重定向的过程:
1. 重定向
2. 客户浏览器发送HTTP
请求
3.web
服务器接受请求后发送302
状态码以及新的位置给客户浏览器
4. 客户浏览器发现是302
响应,则自动再发送一个新的HTTP请求,请求指向新的地址【302
:Found
临时移动,但资源只是临时被移动。即你访问网址A,但是网址A因为服务器端的拦截器或者其他后端代码处理的原因,会被重定向到网址B】。
5. 服务器根据此请求寻找资源发给客户;在客户浏览器中显示的是重定向之后的路径,客户可以看到地址的变化。重定向行为浏览器做了至少两次请求。(重定向可以跳转多次)
重定向的特点
- 地址栏显示新的地址
- 请求域中的数据会丢失(因为浏览器有多次请求)
重定向的应用场景
- 网页调整
- 网页被移到新的地址
- 网页扩展名改变
- 数据库的增删改
若不使用重定向,则网页会返回状态码404,流量白白丧失。
转发
转发的过程
1. 客户浏览器发送HTTP请求
2. web服务器接受请求
3. 调用内部一个方法在容器内部完成请求处理和转发动作
4. 再将转发跳转到的那个网页资源返回给客户; 转发只能在同一个容器内完成 转发的时候浏览器地址是不会变的,在客户浏览器里只会显示第一次进入的那个网址或者路径,客户看不到这个过程,只是得到了想要的目标资源。转发行为浏览器只做了一次请求。(转发只能跳转一次)
转发的特点
- 地址栏中不发生改变
- 只能转发到当前服务器的内部资源
- 请求域的数据不会丢失(因为只进行一次请求)
转发的应用场景
- 数据库的查询
练习 ——BUUCTF[极客大挑战 2019]Secret
- 打开题目链接
- 查看题目源码,发现了
./Archive_room.php
- 点击
secret
,发现了end.php
- 我们查看
Archive_room.php
的源码 - 发现了
action.php
访问仍为end.php
,响应速度过快,我们想到重定向和转发的行为,使用burp
抓包进行分析 - 我们发现了隐藏的
secr3t.php
,访问得到一段PHP
代码 - 直接访问
flag.php
,发现没有显示flag
,于是采用php
伪协议来读取php
文件。 - 文件包含漏洞利用的PHP封装协议——传输PHP文件 构造的
url
为
http://55ad564d-bd01-4168-a493-c4120d317504.node3.buuoj.cn/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php
9. 使用base64
解密即为flag
小结
生活实例(假如去办个证件):
重定向:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去了B局。
转发:你先去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来。