javascript - php如何验证字符串是否是安全验证的某些函数

标签 javascript php jquery

我在 ajax 文件中使用 eval() 函数,它允许我从 Javascript 调用函数(类似于 Securely calling PHP code from JavaScript );

我想要使用大约 20 个函数。我不希望传入恶意代码。我如何验证传入的字符串是我的函数之一,仅此而已?

最佳答案

使用eval来实现这一点会使事情变得过于复杂。您可以简单地在服务器端定义您的函数,并使用简单的 switch case 切换到正确的函数。这样您就不必担心与安全相关的问题。

jQuery:

function callPhp(func, callback){
    $.ajax({
    type: 'GET',
    url: 'callPhp.php',
    data: {action:'register'},
    success: function (data) {
        data = JSON.parse(data);
        callback(data);
    }
});
}

PHP:

<?php

$action = $_GET['action'];

switch ($action) {
    case "register":
        register_user();
        break;
    case "login":
        login();
        break;

?>

如果您确实想使用 eval(我强烈建议您不要使用它),您可以简单地实现一种应在服务器端执行的方法名称白名单。

<?php

$whiteListMethod = array('register', 'login', 'forgotPassword');
$action = $_GET['action'];

// Is the user supplied function present in my whitelist?

if(in_array($action,$whiteListMethod)){

  // You can call this method safely

}else{

  // Hack attempt detected

}

关于javascript - php如何验证字符串是否是安全验证的某些函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172782/

相关文章:

Javascript 将数组中的嵌套对象转换为数组

javascript - 如何在HTML中存储php变量内容 "id"

javascript - Yii2:注册 Asset Bundle 与注册外部 Js 文件

php - HighCharts:局部变量在 "data:"中不起作用

javascript - CasperJS支持 session 机制吗?

javascript - 将过滤器/搜索表链接到 Highchart

php - 如何 "align"2个字符串?

PHP 不再投票一次,我如何在我的代码中编写此代码?

javascript - 如何仅使用 HTML5 和 JavaScript 将文件从我的机器传输到 vpn 中的另一台机器

jquery - iframe fancybox 响应式