AJAX和PHP,调用PHP函数

时间:2011-11-16 17:07:23

标签: php ajax security

好的,我知道这已经被覆盖了,但我的问题严格关注的是做这种事情的安全性。我有一个主要由PHP函数生成的页面,它们位于单独文件的类中。我的页面调用...

<div class="transferfunds">
<?php dashboardFunction::buildPickers($uid); ?>
</div> 
像这样,我的PHP函数(显然缩写)......

function buildPickers($uid){
$user =& JFactory::getUser();
}

现在,我想要发生的是,它在加载时加载特定内容,但是当用户与特定内容(例如下拉列表)交互时,我想使用AJAX再次调用此函数并重新加载特定的div。

我得到了我可以通过ajax传递变量并调用tat函数,如...

    $.ajax({
        type : 'POST',
        url : 'post.php',
        dataType : 'html',
        data: {
            dataTest : 'test'
        },
        success : function(data){
                 $('#div').html(data);
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {

        }
    });

并在php中测试它就像这样...

if(isset($_POST['dataTest']) && !empty($_POST['dataTest'])) {
 dashboardFunction::buildPickers($uid);
}

但是A.这肯定会起作用,而B.这实际上是否安全?它是否容易受到任何类型的注射等的影响?谢谢!

3 个答案:

答案 0 :(得分:1)

我认为你会以这种方式传递用户凭据,对吗?如果是这样,这种方法不是很安全。最好依靠用户会话在脚本之间共享用户数据。

答案 1 :(得分:0)

  

一个。这肯定会起作用吗

当然可以。但是,如果检索到不同的内容,则调用不同的URL可能会更清晰。但它会起作用

  

B中。这实际上是否安全

很安全。但是,如果您想以这种方式访问​​多个功能:

$ func = $ _POST ['dataTest']; dashboardFunction-&GT; $ FUNC();

当然,你应该添加一些允许功能的白名单。

但是,如果您只想访问1个硬编码的函数,并检查变量是否已设置,则没有问题。

答案 2 :(得分:0)

从您的函数名称看起来您正在使用此函数来构建选择列表或加载内容 - 所以只要您不删除/插入/更新数据,但只选择,那么您可能会很好只要您在PHP页面(buildPickers函数)中运行查询之前正确清理输入。

您还可以使用Ajax请求传递令牌,并检查操作页面上的令牌,因此使用对操作页面的URL的直接调用来简单地触发事件将更加困难。

最后,如果你实际上正在进行SELECT操作,你应该使用GET而不是POST,但实际上它并不重要。