有一个很难的有关问题,php获取javascript的值来判断域名来路,后期不好处理

WBOY
Release: 2016-06-13 11:58:21
Original
1040 people have browsed it

有一个很难的问题,php获取javascript的值来判断域名来路,后期不好处理~
全部代码如下
首先你在浏览器中运行,打开控制台观察
http://localhost/test.php

<a href="test1.php">跳转到test1</a>
Copy after login

然后跳转到test1.php,代码
<?php<br />session_start();<br />require "./test2.php";<br />class A{<br />	function __construct()<br />	{<br />		$b=new B();<br />		$b->judge();<br />	}<br />	function judge()<br />	{<br />		if($_SESSION['status']==1){<br />			return true;	<br />		}else{<br />			return false;	<br />		}<br />	}<br />	function run()<br />	{<br />		if($this->judge()){<br />			echo 'success';	<br />		}else{<br />			echo 'error';	<br />		}<br />	}<br />}<br />$a=new A();<br />$a->run();<br />?>
Copy after login

作用是在执行A类方法的时候先判断域名来路,是否来自localhost,是的话,输出success,不是输出error
test2.php代码
<?php<br />session_start();<br />class B{<br />	function judge()<br />	{<br />		echo '<script><br />		var xmlhttp;<br />		if (window.ActiveXObject){<br />		  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");<br />		}else{<br />		  xmlhttp = new XMLHttpRequest();<br />		}<br />		xmlhttp.open("POST", "./test3.php", true);<br />		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");<br />		xmlhttp.send("data="+document.referrer);<br />		console.log(document.referrer); //控制台观察<br />		xmlhttp.onreadystatechange = function(){<br />		  if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {<br />		  }<br />		};</script>';<br />	}<br />}<br />?>
Copy after login

test3.php,调用ajax执行文件
<?php<br />session_start();<br />if(stristr($_POST['data'], 'localhost')){<br />    			$_SESSION['status']=1;<br />    		}else{<br />    			$_SESSION['status']='';<br />    		}<br />?>
Copy after login

------解决方案--------------------
我能问一下你处理的问题是想要做什么,还是研究这个问题?因为我没看懂你要干什么,不好意思
------解决方案--------------------
说说你想想做什么?遇到了什么问题
------解决方案--------------------
看不明白需求,
你都是PHP文件,如果要知道前一页面来源,用$_SERVER['HTTP_REFERER']就可以了,有必要这么麻烦搞JS吗
------解决方案--------------------
整个请求都是可以伪造的
这样做确实会给伪造带来困难,但代码会变得很复杂...
------解决方案--------------------
可以变通一下,用cookie/session得到用户,得不到就报错。
如果用户请求太频繁就屏蔽请求。然后用缓存实现的话性能应该还可以。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!