0

ユーザーが自分のマシンからダウンロードして実行できるデスクトップ アプリケーションを作成しました。このアプリケーションはネットワーク アクセスを必要とし、多くの場合、更新、挿入などでデータベース (サーバーでホストされている) に変更を送信します。

アプリケーションが逆コンパイルされると、ユーザーはデータベースの資格情報を確認し、自分でフル アクセスを取得できるため、アプリケーションにパスワードを直接保持することは適切ではありません。

サーバー側で GET と POST および API を使用してこれを行う唯一の安全な方法はありますか? 他のオプションはありますか?

4

2 に答える 2

1

したがって、ここには 2 つの問題があります: 1) サーバー側の PHP/データベースに POST 更新を発行するユーザーの認証 (彼らは自分自身であると主張しています) および 2) データベース資格情報の公開の防止。

1) LDAP などのサードパーティの統合サーバーを使用してユーザーを認証していますか?

2) サーバー資格情報は、アプリケーションでは必要ないため、アプリケーションに保存しないでください。ユーザーとそのリクエストを認証したら、サーバー側の PHP には、DB クレデンシャルを復号化し、ユーザーが送信した情報に基づいて SQL ステートメントを発行するセキュリティ機能が必要です。

したがって、あなたの質問に答えるには、はい、サーバー側のフレームワークをホストして着信要求を処理し、ユーザーを認証してから要求を実行することをお勧めします。

デスクトップ アプリで DB を直接更新できるようにしたい場合 (お勧めしません)、DB 資格情報の暗号化されたハッシュを保存し、復号化アルゴリズムを使用して復号化し、データベースに送信できます。

<?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

プロキシ Web サービスを作成してみませんか? クライアント アプリケーションがリクエストを送信し、Web サービスがそれらを取得して、データベース上で安全に実行します。

于 2012-12-12T17:26:24.173 に答える