我一直在互联网上寻找一种方法来定义JavaScript查询,并将该查询传递给PHP。让PHP建立MySQL连接,执行查询并返回json编码的结果。

但是,我担心这种方法的安全性,因为用户可能会篡改查询,并执行您不希望他们做的事情,或者请求您不希望他们看到的数据。



在这样的应用程序/插件中,您建议采取哪种安全措施来防止用户请求我不希望他们提供的信息?

编辑

我的插件的最终结果将是

var data = Querier({
    table: "mytable",
    columns: {"column1", "column2", "column3"},
    where: "column2='blablabla'",
    limit: "10"
});

我将让该函数发出AJAX请求,并使用上述数据在PHP中执行查询。我想知道这会带来什么安全风险以及如何防止它们。

最佳答案



This文章介绍了一种替代方法,您可以使用一个数据库类来包装多个数据库表。一个驱动程序脚本将前端连接到后端,前端上的另一个包装器类使您可以访问所需的所有表。

范例/用法

// Sample functions to update authors
function updateAuthorsTable() {
    dbw.getAll( function(data) {
        $('#authors').html('<table id="authors"><tr><td>ID</td><td>Author</td></tr></table>');
        $(data).each( function( ind, author ) {
            $('#authors tr:last').after('<tr><td>'+author.id+'</td><td>'+author.name+'</td></tr>');
        });
    });
}

$(document).ready(function() {
    dbw = new DbWrapper();
    dbw.table = 'authors';

    updateAuthorsTable();

    $('#addbutton').click( function() {
        dbw.insertObject( { name: $('#authorname').val() },
        function(data) {
            updateAuthorsTable();
        });
    });
});

我认为这正是您想要的。这样,您就不必自己构建它。

09-19 12:56