Web安全之URL跳转科普
跳转无非是传递过来的参数未过滤或者过滤不严,然后直接带入到跳转函数里去执行。
0x01 JS
js方式的页面跳转
1.window.location.href方式
<script language="javascript" type="text/javascript"> window.location.href="target.aspx"; </script>
2.window.navigate方式跳转
<script language="javascript"> window.navigate("target.aspx"); </script>
3.window.loction.replace方式实现页面跳转,注意跟第一种方式的区别
<script language="javascript"> window.location.replace("target.aspx"); </script>
有3个aspx页面(1.aspx, 2.aspx, 3.aspx),进系统默认的是1.aspx,当我进入2.aspx的时候, 2.aspx里面用window.location.replace("3.aspx");与用window.location.href ("3.aspx");
从用户界面来看是没有什么区别的,但是当3.aspx页面有一个"返回"按钮,调用window.history.go(-1); wondow.history.back();方法的时候,一点这个返回按钮就要返回2.aspx页面的话,区别就出来了,当用 window.location.replace("3.aspx");连到3.aspx页面的话,3.aspx页面中的调用window.history.go(-1);wondow.history.back();方法是不好用的,会返回到1.aspx。
4.self.location方式实现页面跳转,和下面的top.location有小小区别
<script language="JavaScript"> self.location='target.aspx'; </script>
5.top.location
<script language="javascript"> top.location='target.aspx'; </script>
6.不推荐这种方式跳转
<script language="javascript"> alert("返回"); window.history.back(-1); </script>
0x02 HTML
Htm中meta标签可以实现页面跳转
<head> <!-- 以下方式只是刷新不跳转到其他页面--> <meta http-equiv="refresh" content="10"> <!-- 以下方式定时转到其他页面 --> <meta http-equiv="refresh" content="5;url=hello.html"> </head>
0x03 PHP
php中header函数可实现跳转,当然其他服务器端编程语言都可以实现例如java web的redirect等等。
<?php //重定向浏览器 header("Location: http://bbs.lampbrother.net"); //确保重定向后,后续代码不会被执行 exit; ?>
------------------------------------------------------------------------------------