0

適度に重い処理を必要とするRubyonRailsアプリを構築しています。アプリをスケーリングするために、ブラウザーでの処理をオフロードしようとしています。これは、ユーザーが質問に答えなければならないゲームです。答えを検証する必要がある場合は、適度に重い処理が行われます。答えが正しいことを確認するために、クライアント側は答えを保存するか、少なくともサーバーからそれを要求できる必要がありますが、クライアント側のjavascriptは、ユーザーの答えを正しい答えと比較する必要がある場合があります。不正行為を防ぐために、クライアント側で正しい答えを確保する必要がありますか?

私が試したこと

  1. 回答データをハッシュしてHTMLに埋め込んでみましたが、処理中に値が使用されるため、残念ながらハッシュされていない回答データにアクセスする必要があります。
  2. AJAXを使用してサーバーに回答データを要求しようとしましたが、さまざまなツールを使用してJSON応答を検査し、返される回答データを表示できます。

私は試したことがないと思います

  1. SSL暗号化を使用し、必要なときにいつでも回答データを要求した場合はどうなりますか?暗号化されているために返されるJSONデータをユーザーが表示できなくなるのではないでしょうか。申し訳ありませんが、これで完全にベースから外れている場合、私はWeb開発に不慣れで、まだ学習しています。

私が使用しているテクノロジーを使用してクライアント側でデータを保護するための他の手法はありますか?または、少なくともユーザーが回答データを表示するのをできるだけ難しくするためのテクニックはありますか?

よろしくお願いします!

4

1 に答える 1

0

それは不可能だ。入力を処理するために未処理の回答データが必要な場合、このデータはクライアントのマシン上にある必要があります。つまり、公開されています。

いくつかの疑似コードでそれを説明しましょう:

func isValid(myAnswer, superSecureData)
    if decode(superSecureData) == myAnswer
        return true

    return false

攻撃者は次のことを行うだけです。

print decode(superSecureData)

または、さらに良い:

return true

もちろん、これはより安全です:

func isValid(myAnswer, superSecureData)
    if encode(myAnswer) == superSecureData
        return true

    return false

しかし、あなたが言ったように、答えをハッシュすることはできず、すでに述べたように、攻撃者は依然として関数を強制的に単純にすることができreturn trueます (これが、有効であると思われるすべての答えに対してサーバー側のチェックを行う必要がある理由です)。

于 2012-12-02T00:15:15.857 に答える