如何在服务器端获取我加载的javascript代码?

时间:2017-01-31 13:33:57

标签: javascript php ajax

我正在寻找一种方法将当前加载的js代码发送到服务器,以便使用php将其与原始文件进行比较。

例如,我在我的html中包含了test.js脚本。 我的test.js内容:

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

但想象有人试图通过使用任何Web开发人员工具来修改此代码

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

所以我想发送到我的服务器的代码是这个,然后我可以在php中比较它,看看是否一切都很好。 我可以使用Web开发人员工具更改js吗?

我希望我足够清楚。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个简单的例子(在一个文件中),如何在使用它们之前延迟加载原始函数。

<?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>
  • 我使用obj methods代替global functions
  • 我使用$getScript()在使用之前重新定义方法

因此,这可以是一种解决方法,以确保您调用的函数/方法可以按您的需要运行。这只是一个选项而不是真正的解决方案,也许超级js黑客也可以解决这个问题。