如何安全地允许我的用户连接到我的数据库?

时间:2012-12-12 17:14:13

标签: database security

我创建了一个桌面应用程序,用户可以从自己的计算机上下载和运行。此应用程序需要网络访问,并且通常会发送更改,插入等数据库(托管在我的服务器上)。

直接在应用程序中保存密码并不好,因为如果应用程序被反编译,那么用户可以看到数据库的凭据并获得自己的完全访问权限。

使用GET和POST以及服务器端的API是唯一安全的方法吗?还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

所以这里有两个问题:1)验证向服务器端PHP /数据库发出POST更新的用户(他们是他们所说的人)和2)防止暴露您的数据库凭据。

1)您是否使用第三方集成服务器(如LDAP)验证用户?

2)服务器凭证不应存储在应用程序中,因为它们从不需要。对用户及其请求进行身份验证后,服务器端PHP应具有安全功能,该功能可解密数据库凭据并根据用户提交的信息发出SQL语句。

所以要回答你的问题,是的,最佳做法是托管一个服务器端框架来处理传入的请求,这些请求会对用户进行身份验证,然后执行他们的请求。

我想如果您希望桌面应用程序能够直接更新数据库(不推荐),您可以存储数据库凭据的加密哈希值,并使用解密算法进行解密,然后将其发送到数据库。 / p>

<?php
    if(isset($_POST['query'])) {
        $query = $_POST['query'];
        $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

        //Execute SQL
        if($mysqli->query($query) === TRUE) {
            $mysqli->close();
            echo "successful";
        } else { echo "SQL execution error"; }
    } else { 
        echo "invalid query string"; 
    }
?>

答案 1 :(得分:1)

为什么不构建代理Web服务? 您的客户端应用程序发送请求,您的Web服务会抓取它们并在您的数据库上安全地执行它们。