0

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

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

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

4

2 回答 2

1

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

1) 您是否使用 LDAP 之类的第 3 方集成服务器对用户进行身份验证?

2)服务器凭据不应该存储在应用程序中,因为那里永远不需要它们。一旦你验证了一个用户和他们的请求,你的服务器端 PHP 应该有一个安全功能,它可以解密数据库凭据并根据用户提交的信息发出 SQL 语句。

因此,要回答您的问题,是的,最好的做法是托管一个服务器端框架来处理传入请求,该框架对用户进行身份验证,然后执行他们的请求。

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

<?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"; 
    }
?>
于 2012-12-12T17:23:58.490 回答
1

你为什么不建立一个代理网络服务?您的客户端应用程序发送请求,您的网络服务获取它们并在您的数据库上安全地执行它们。

于 2012-12-12T17:26:24.173 回答