我创建了一个桌面应用程序,用户可以从自己的计算机上下载和运行。此应用程序需要网络访问,并且通常会发送更改,插入等数据库(托管在我的服务器上)。
直接在应用程序中保存密码并不好,因为如果应用程序被反编译,那么用户可以看到数据库的凭据并获得自己的完全访问权限。
使用GET和POST以及服务器端的API是唯一安全的方法吗?还有其他选择吗?
答案 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服务会抓取它们并在您的数据库上安全地执行它们。