1

私はiOS開発者であり、AppStoreで1年間公開されているWebサービスアプリを開発しました。今、私はこのアプリをクロスプラットフォームで利用できるようにすることにしました-Androidから始めて、Android開発者を雇いました。

この採用まで、すべてのWeb関連のコードとデータ(PHP / MySQL / XML)は私だけで管理およびフェッチされていたため、セキュリティについてはあまり心配していませんでした。しかし今、別の開発者が加わったことで、私は次の懸念を抱いています。

アプリは、フェッチする行数を含むPOSTリクエストを送信します。次に、PHPスクリプトはMySQLからその数の行を取得し、適切にフォーマットされたXMLで返します。私の懸念は、従業員がプロセス全体についても知っていることです。PHPスクリプトやMySQLデータベースに直接アクセスすることはできませんが、それでもさまざまな方法で悪用される可能性があります。たとえば、彼はWebブラウザで100000行のPOSTリクエストを使用してURLを作成できます。これにより、すべてのデータをXMLで取得できるようになります。

これに対抗するためにどのような対策を講じるべきですか?(はい、上記の特定のケースでは40のハード制限を強制できますが、これは理想的または一般化されたソリューションではありません。)

ところで、私はこのトピックについてグーグルで広範囲に調査しました。私の理解では、上記の問題は「セマンティックURL攻撃」として知られています。しかし、私はそれに対する正しい解決策を見つけることができませんでした。「セッション」の使用をお勧めしますが、私の理解によれば、「セッション」は、パスワードベースのユーザー認証がある場合にのみ役立ちます。これは私のアプリの機能ではありません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

まず、保護がなく、何でも許可すれば、人々はそれと同じくらい簡単に何でもできるようになることに注意する必要があります。したがって、私が理解しているように、標準の保護を使用する必要はありません。つまり、ログイン資格情報を持ち、ケースごとの防御プログラミングを使用しているユーザーです。

さて、1つの部分的な解決策は、ハッシュを計算することです。

  • パラメータPを使用してサーバーにクエリを実行する
  • H = hash(P)を計算します
  • ?p = P&h=Hをサーバーに送信します
  • サーバーは?p = P&h = Hを受け取り、H'= hash(P)を計算します
  • H'!= Hの場合、サーバーは回答を拒否します

phpとモバイルアプリで同じ決定論的ハッシュ関数を計算する必要があります。できれば非常に複雑なもので、独自のダーク暗号化アルゴリズムをmd5、sha1、同期スレッドなどと組み合わせます。

攻撃者が正しいハッシュを使用して古いクエリを繰り返すことを心配している場合は、より複雑なハンドシェイクを行うことができます。最初に、計算するハッシュの一部となる乱数をクライアントに送信します。または、日時、IPなどに基づくもの。

もちろん、攻撃者がコードをリバースエンジニアリングした場合、ハッシュ関数を見つけることができますが、少なくともある程度の作業が必要になります。クライアントの仕事をもっと難しくしたい場合は、クライアントのコードを難読化することができます。

証言として、私は登録を必要としないサービスの不完全な攻撃者に対してこの種の技術を使用しました。攻撃者がプロであり、あなたの個人データをひどく欲しがっていない限り、それは機能します。

于 2012-04-26T07:42:51.800 に答える