我正在寻找一种方法将当前加载的js代码发送到服务器,以便使用php将其与原始文件进行比较。
例如,我在我的html中包含了test.js脚本。 我的test.js内容:
function test() {alert('test')}
但想象有人试图通过使用任何Web开发人员工具来修改此代码
function test() {alert('cheat')}
所以我想发送到我的服务器的代码是这个,然后我可以在php中比较它,看看是否一切都很好。 我可以使用Web开发人员工具更改js吗?
我希望我足够清楚。 提前谢谢。
答案 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黑客也可以解决这个问题。