Javascript Php如何验证是字符串是用于安全验证的特定函数
我在ajax文件中使用eval()函数,这将允许我从Javascript调用函数(类似于)Javascript Php如何验证是字符串是用于安全验证的特定函数,javascript,php,jquery,Javascript,Php,Jquery,我在ajax文件中使用eval()函数,这将允许我从Javascript调用函数(类似于) 我希望能够使用大约20个函数。我不希望恶意代码传入。如何验证传入的字符串是我的函数之一,而不是别的 通过使用eval来实现这一点,您将事情变得过于复杂。您可以简单地在服务器端定义您的函数,并使用一个简单的切换案例切换到正确的函数。这样,您就不必担心与安全相关的问题 jQuery: function callPhp(func, callback){ $.ajax({ type: 'GET',
我希望能够使用大约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传递参数。看看下面的链接。这将起作用,除了一个问题。如果我的每个函数都有自己的参数集/数量会怎样?如果每个函数的参数不同,您可以简单地创建多维数组。这将起作用,但有一个问题除外。如果我的每个函数都有自己的参数集/数量会怎样?如果每个函数的参数不同,您可以简单地创建多维数组。