ホームページ > バックエンド開発 > PHPチュートリアル > PHP では JavaScript の値を取得してドメイン名の由来を判断するという難しい問題があります。

PHP では JavaScript の値を取得してドメイン名の由来を判断するという難しい問題があります。

WBOY
リリース: 2016-06-13 11:58:21
オリジナル
1084 人が閲覧しました

PHP は JavaScript の値を取得してドメイン名の由来を特定するという難しい問題があります。これは後から処理するのが難しいです。
コード全体は次のとおりです。
まず、ブラウザで実行してください。コンソールを開いて
http://localhost/test.php

<a href="test1.php">跳转到test1</a>
ログイン後にコピー

を確認します。次に、コード
<?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 />?>
ログイン後にコピー

の機能は次のとおりです。 A タイプのメソッドを実行するときにドメイン名の起源と、ローカルホストからのものであるかどうかを判断します。そうであれば、エラーではなく成功を出力します。
test2.php code
<?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 />?>
ログイン後にコピー

test3.php、call ajax 実行ファイル
<?php<br />session_start();<br />if(stristr($_POST['data'], 'localhost')){<br />    			$_SESSION['status']=1;<br />    		}else{<br />    			$_SESSION['status']='';<br />    		}<br />?>
ログイン後にコピー

--- ---解決策--------------------
できますかあなたが扱っている問題について何をしたいのか、それともこの問題を研究したいのかを尋ねますか?何をしようとしているのか理解できなかったので、申し訳ありません
-----解決策--------
何がしたいのか教えてください。どのような問題が発生しましたか?
-----解決策---------------------
わかりません要件を理解してください。
前のページのソースを知りたい場合は、$_SERVER['HTTP_REFERER'] を使用してください。
- -----解決策- ------------------
リクエスト全体を偽造することができます
そうすることで確かに偽造は困難になりますが、しかし、コードは非常に複雑になります...
-----解決策---------
これを回避するには、Cookie/セッションを使用してユーザーを取得します。取得できない場合は、エラーが報告されます。
ユーザーのリクエストが頻繁すぎる場合は、リクエストをブロックします。その後、キャッシュを使用して実装すれば、パフォーマンスは問題ないはずです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート