=================================================================================================== 難読化されたjavascriptを他のウェブサイトで実行された場合、完全な無反応にするために、domainのチェックを行うべき。 (v2.19では、他のウェブサイトで走らせた場合、「console was cleared」のメッセージを残してしまう。) --------------------------------------------------------------------------------------------------- ==>これに関しては、(Prevent Post From Outside)フォルダの中で考察している。 確かにハックするのが難しくなるのだが、.htaccessの中で%{HTTP_REFERER}に頼っている。 ------------------------------------------------------------------------ RewriteCond %{HTTP_HOST}@@@%{HTTP_REFERER} !^([^@]*)@@@https?://\1/.* ------------------------------------------------------------------------ %{HTTP_REFERER}は改ざん可能なので、結局は破られてしまう。 この方法を探求するより、SESSIONにタイムアウトを設けたほうがいいのではないか? -------------------------------------------- 代入: $_SESSION[$bpass]=$bpass; 検査: ($_SESSION[$bpass]==$bpass)) -------------------------------------------- の代わりに、 -------------------------------------------- 代入: $_SESSION[$bpass]=time(); 検査: (intval($_SESSION[$bpass])+30>time()) -------------------------------------------- if (isset($_SESSION[$bpass]) && (intval($_SESSION[$bpass])+30>time())){ ##unset($_SESSION[$bpass]); -------------------------------------------- ように時間で$_SESSIONの有効を限定する方法である。 =================================================================================================== Javascriptをブラウザーへ送る時、IPアドレスを送るべき --------------------------------------------------------------------------------------------------- -------------------------------------------- /*@@ send */ xhr.send("p="+window.location.href); -------------------------------------------- を -------------------------------------------- /*@@ send */ xhr.send("p="+window.location.href+"&tk=111.222.111.111-20210219-042452-EJFERBGFULOSEFBMKOSEXFGKLWAQZNVM"); -------------------------------------------- に替える。 ==== PHP[GET]側では、 //@@ tokenを作る $tk=""; //@@ ip番号を加える $tk.=((isset($_SERVER['REMOTE_ADDR'])?substr($_SERVER['REMOTE_ADDR'],0,100):"IP")."-"); //@@ date & time を加える $tk.=(date("Ymd-His")."-"); //@@ random文字を加える $chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; for ($i=0;$i<64;$i++){ $idx=rand(0,strlen($chars)-1); $tk.=$chars[$idx]; } //@@ passcod(pc)を作って、現在時間を代入する $pc=$bpass."-".$tk; $_SESSION[$pc]=time(); /*@@ send */ xhr.send("p="+window.location.href+"&tk="+""); === PHP[POST]側では、 if (empty($_GET["p"])&&!empty($_POST["p"])&&!empty($_POST["tk"])){ $pc=$bpass."-".$_POST["tk"]; if (!empty($_SESSION[$pc])&&(intval($_SESSION[$pc])+30>time())){ //@@ セッション情報を破壊する unset($_SESSION[$pc]); @session_write_close(); =================================================================================================== xhr.send("p="+window.location.href でURLを送る必要はない。 替え玉君PHPファイルは$_SERVER['HTTP_REFERER']でURLを取得できる。 --------------------------------------------------------------------------------------------------- xhr.open("POST",d+"_kdk-pp-pp-pp-pp_.php",b); のようにjavascript内に_kdk-pp-pp-pp-pp_.phpを晒す必要はない。 xhr.open("POST",window.location.href,b); で自分自身にPOSTして.htaccessで以下のようにリダイレクトすればよい。 --------------------------------------------------------------------- RewriteRule ^(.*)\.html$ _kdk-pp-pp-pp-pp_.php?q=bp-bp-bp-bp [L,QSA] --------------------------------------------------------------------- $_SERVER["REQUEST_URI"]) detect 'GET' or 'POST' if ($_SERVER['REQUEST_METHOD'] === 'POST') { // The request is using the POST method } ===================================================================================================