一般/紹介:
私は2つの部分のソフトウェアがあるプロジェクトで働いています。ユーザーのコンピュータで実行されるクライアントアプリケーションと、このプロジェクトに関連する多くのことを管理するWebアプリケーションがあります。クライアント側にデータを保存する - 操作から保護する方法?
クライアントアプリケーションはIPC経由で別のプログラムから多くの異なる値を読み込みます。ソースコードがなく、私が読んでいる他のプログラムで何かを変更するオプションはありません。
私のアプリケーションは、それらの値を収集し、それらをローカルに格納します。なぜなら、Webアプリケーションに常に接続されているわけではないからです。
Webアプリケーションは統計情報を構築し、それらの値のうち多くをビルドするので、収集された値はプロジェクト全体にとって非常に重要なので、ユーザーはそれらを変更できません(少なくとも、クライアントのデータに100%のセキュリティを提供できないと確信しています)。
クライアントアプリケーションはC#で書かれていますが、WebアプリケーションはLaravel Framework(PHP)に基づいています。しかし、この質問は、これを正確に記述する方法よりも、理論に関するものです。
私の考え:
私は非対称暗号化を考えていました。クライアントは、Webアプリケーションサーバーの公開鍵でデータを暗号化します。データは暗号化されて保存されます。もちろん、クライアントはこの公開鍵を持っています。したがって、攻撃者は自分の操作した値を暗号化してファイルに格納するだけです。
もう1つは、データを暗号化するだけでなく、ファイル全体を暗号化するだけでなく、それほど明白ではない形式を使用することでした。しかし、これはあいまいさによる安全性のようなものであり、私が知る限り避けるべきです。さらに、クライアントアプリケーションを逆コンパイルして、すぐに私が使用しているフォーマットを持つことができます。
私の質問:
サーバにそのデータを送信するときに、私は整合性のまともなレベルを提供することができる任意の方法はありますか?もしそうなら、それはどうやって行えますか?
できません。クライアントが触れることができるデータは、侵害されたとみなすことができます。 Laravelのバックエンドに達すると、データの整合性が保証されます。 – Andrew
それは私が考えていたことです...しかし、悲しいことに、バックエンドはせいぜい妥当性チェックを行うことができます。この場合、Webアプリケーションは整合性を保証できません。あなたの提案をありがとう! – MrPixelDream
Webサーバーに送信する前に、IPCデータの再検証を行うことができます。 – Crowcoder