2017-01-31 15 views
-1

私はPHPを使用して元のファイルと比較するために、現在のロードされたjsコードをサーバーに送信する方法を探しています。サーバーサイドでロードされたJavaScriptコードを取得するには?

たとえば、私はhtmlにtest.jsスクリプトを含めます。 私test.jsがコンテンツ:

function test() {alert('test')} 

誰かがだから私は自分のサーバーに送信するコードはこの1つである

function test() {alert('cheat')} 

に任意のWeb開発ツールを使用して、このコードを変更しようとしていることを想像私はそれをPHPで比較して、すべてがうまくいくかどうかを調べることができます。 ウェブ開発ツールを使用してjsを変更することはできますか?

私は十分に明確であることを望みます。 ありがとうございます。

+0

サーバーに送信されるコードはまだ偽装されている可能性があります。S – CoderPi

+0

誰かがこれを行う場合に備えて、ユーザーの入力を常に害虫駆除し、検証する必要があります。 –

+1

ユーザー入力を信用しないでください。あなたが操作したjavascriptコードにアクセスすることはできません。変更されたコードをjavascriptで取得し、enxtリクエストを介してサーバーに送信する方法があります。 – JustOnUnderMillions

答えて

1

ここでは、元の関数を使用する前に遅延させる方法を簡単な例(1つのファイルにまとめたもの)です。私はあなたが関数/メソッドを呼び出していることを保証するために、代わりに私はそれがこの問題を回避することができ

を使用する前にメソッドを再定義するために$getScript()を使うglobal functions

  • obj methods使用

    <?php 
    if(isset($_REQUEST['getjs'])){ 
        echo "myFunctions.test = function(){alert('test');}"; 
        exit; 
    } 
    ?><html> 
    <head> 
        <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
        <script> 
        // method/function holder 
        var myFunctions = {}; 
        </script> 
        <!-- load functions --> 
        <script src="js.php?getjs=true"></script> 
    </head> 
    <body> 
    <script> 
        //original 
        myFunctions.test();//Alert:test 
        //manipulation 
        myFunctions.test = function(){alert('cheat');}; 
        myFunctions.test();//Alert:cheat 
        //get original again, we use Math.random to prevent cache 
        $.getScript('js.php?getjs=true&ui='+Math.random()) 
        .done(function(script, textStatus) { 
         //run original again 
         myFunctions.test();//Alert:test 
        }); 
    </script> 
    </body> 
    </html> 
    
    • それはあなたが望むように動作します。これは唯一のオプションで、実際の解決策ではないかもしれません。おそらくスーパーJSハッカーもこれを回避することができます。

  • 関連する問題