-1

マルチプレイヤー モバイル ゲームのアイデアがあります。IOS と Android のユーザーがプレイできるように、ブラウザ ゲームを考えました。

しかし、私は何も得られません... 私が主にJavaScriptでゲームを構築すると、ハッキング攻撃に対して非常に攻撃的ですよね? つまり、サーバーに対していくつかの ajax リクエストを行うと、誰もが Internet Explorer で開発者ツールを開き、リクエストにブレークポイントを設定して、リクエストが送信される前にデータを変更できます。

例: ユーザーはゲームでいくらかのお金を受け取ります。今度は、新しい金額をサーバーに送信してデータベースに保存したいと考えています。一部の「悪い」少年は、リクエストが送信されてサーバーが操作された値を取得する前に、金額を変更する可能性があります。

それは私が言っていることは正しいですか?または、ゲームに構築できるセキュリティ機能はありますか?

そこで、マルチプラットフォームのモバイル エンジンを探しましたが、適切なものが見つかりませんでした。spaceport.ioを見つけましたが、まだリリースされていません。

私が使用できる他のエンジンはありますか?

  • Javascript または C# でプログラミングしたい
  • IOS および Android 用のゲームをデプロイしたい
  • ゲームは 2D になります (後でいくつかの 3D 機能が追加される可能性があります)
  • マルチプレイヤーのネットワーク サポートが必要です

ああ...そして私はあまりお金を持っていません;-)

4

2 に答える 2

5

はい、指摘されているように、javascriptはそのように安全ではありませんが、他のエンジンもそうです。彼らはハッキングするのにもっと手間がかかるだけです。

ここで重要な点は、クライアントがユーザー入力のみをサーバーに送り返し、サーバーが入力に基づいてアクションを計算し、応答を返すことを保証することです。

たとえば、クライアントが「チェストを開けて 100 ゴールドを獲得したので、残高に追加してください」と言った場合、ユーザーは簡単にハッキングして、「チェストを開けて 100,000 ゴールドを獲得したので、残高に追加してください」と言うことができます。私のバランス」。

代わりに、クライアントは単に「私は箱を開けました」と言うでしょう。サーバーは「そのチェストには 100 ゴールドがあり、残高に追加されました」と表示されます。

さらに、サーバーは、サーバーに送信された移動要求に基づいて、プレーヤーがどこにいるかを認識している必要があります。クライアントが「この場所でチェストを開けました」と言うのではなく、「私がいる場所でチェストを開けました」と言うだけで、サーバーはユーザーがどこにいるかを知る必要があるため、すべてのチェストの場所を偽装して開くことはできません。実際に動き回ることなくそれらすべて。

これは、クライアントがサーバーにプレイヤーの居場所を伝えるのではなく、単に動きの通知を行うべきであることも意味します。IE 「北に 1 ブロック移動しました。」「私は 1 ブロック東に移動しました」その後、サーバーはそれらをログに記録し、それらに基づいて行動し、ユーザーがハッキングを探す場所を追跡できます。ユーザーがすべての移動リクエストを送信せずに自分の場所を変更しようとすると、サーバーはプレイヤーの偽装された場所に基づいて行動しません。

速度を上げるために、サーバーの応答を待たずに移動リクエストを送信した後、クライアントにプレーヤーを移動させても問題ありませんが、サーバーが「いいえ、あなたがいると思っている場所ではなく、代わりにここにいます」と応答した場合、クライアントは応答しますサーバーに合わせて側で修正することによって。これが、ゲームが飛び跳ねたり、ラグが発生したときに後退したりする原因です。クライアントは流動性と応答性を維持するために動きを更新しましたが、遅延が原因で、サーバーは動きのリクエストを取得できなかったか、遅れて取得したため、クライアントは修正する必要があります。

于 2013-01-30T23:08:24.573 に答える
2

JavaScriptはその性質上安全ではなく、あらゆる種類のクライアント側のハッキングを起こしやすい傾向があります。発生するすべては、サーバー側で検証する必要があります。

JavascriptまたはC#でプログラミングしたい

C#はサーバー上で実行されます。JavaScriptはクライアントで実行されます。ここにはどちらか/または選択肢はありません。

于 2013-01-30T22:36:29.910 に答える