Javascript Php如何验证是字符串是用于安全验证的特定函数

Javascript Php如何验证是字符串是用于安全验证的特定函数,javascript,php,jquery,Javascript,Php,Jquery,我在ajax文件中使用eval()函数,这将允许我从Javascript调用函数(类似于) 我希望能够使用大约20个函数。我不希望恶意代码传入。如何验证传入的字符串是我的函数之一,而不是别的 通过使用eval来实现这一点,您将事情变得过于复杂。您可以简单地在服务器端定义您的函数,并使用一个简单的切换案例切换到正确的函数。这样,您就不必担心与安全相关的问题 jQuery: function callPhp(func, callback){ $.ajax({ type: 'GET',

我在ajax文件中使用eval()函数,这将允许我从Javascript调用函数(类似于)


我希望能够使用大约20个函数。我不希望恶意代码传入。如何验证传入的字符串是我的函数之一,而不是别的

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

jQuery:

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

$action = $_GET['action'];

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

?>
PHP:

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

$action = $_GET['action'];

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

?>

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

jQuery:

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

$action = $_GET['action'];

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

?>
PHP:

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

$action = $_GET['action'];

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

?>

您可以使用
@Hyder B
is方法进行此操作。我个人认为,如果你只想调用一个函数,这是最好的选择。此外,如果您担心有人访问您的ajax文件(而不是通过浏览器的源代码读取器查看);他们还可以访问函数文件,以便您需要在服务器上进行改进。但是,您可以通过添加以下内容来阻止人们尝试直接加载函数文件:


您可以使用
@Hyder B
方法。我个人认为,如果你只想调用一个函数,这是最好的选择。此外,如果您担心有人访问您的ajax文件(而不是通过浏览器的源代码读取器查看);他们还可以访问函数文件,以便您需要在服务器上进行改进。但是,您可以通过添加以下内容来阻止人们尝试直接加载函数文件:


为什么不在php中使用函数,javascript只需传入一个a值,指示应该运行哪个函数?@Andrew这就是我要说的。我想知道如何验证它是一个函数,以防黑客访问该ajax文件。我不希望人们传递字符串,并在它不是我的函数时执行它们;如果你的网站是用户控制的,每个人都必须登录;然后,您可以让会话和cookie为您进行验证。您还可以使用
addslashes
htmlspecialchars
函数过滤传入字符串,以减少恶意数据通过的机会。为什么不在php中使用您的函数,javascript只是传入一个a值,该值指示应该运行哪个函数?@Andrew这就是我要说的。我想知道如何验证它是一个函数,以防黑客访问该ajax文件。我不希望人们传递字符串,并在它不是我的函数时执行它们;如果你的网站是用户控制的,每个人都必须登录;然后,您可以让会话和cookie为您进行验证。您还可以使用
addslashes
htmlspecialchars
函数过滤传入字符串,以减少恶意数据通过的机会。您应该编辑@HyderB的帖子来添加,因为这不是一个独立的答案。如果函数有不同的参数呢?我相信您也可以通过ajax传递参数。看看下面的链接。你应该编辑@HyderB的文章,因为这不是一个独立的答案。如果函数有不同的参数呢?我相信你也可以通过ajax传递参数。看看下面的链接。这将起作用,除了一个问题。如果我的每个函数都有自己的参数集/数量会怎样?如果每个函数的参数不同,您可以简单地创建多维数组。这将起作用,但有一个问题除外。如果我的每个函数都有自己的参数集/数量会怎样?如果每个函数的参数不同,您可以简单地创建多维数组。