質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

9436閲覧

ブラウザでのデバッグ(javascriptの変数書き換えなど)を禁止できますか?

hinatahinata

総合スコア29

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

2クリップ

投稿2019/02/10 05:37

現在html,javascriptを使用してのPCやスマホからブラウザゲームを作成しようとしていますが
ブラウザのデバッガからhtmlやjsをいじられて意図しない動作が起こってしまうことを懸念しています。
そういったことを防ぐことは不可能でしょうか。

不可能な場合はクロスプラットフォーム開発ツールを使用して制作しようかと思いますが
おすすめのものがありましたら教えていただけると助かります。

bochan2👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

デベロッパーツールの起動を阻止するだけならライブラリが色々とあるので対策は可能です。
http://shimax.cocolog-nifty.com/search/2014/08/google-chrome-1.html

ただまぁ、この路線で調査を進めていくと、
Firefox等でプラグインを入れたらライブラリが誤認するなど、色々と干渉するようです。
このサイトはChromeでしか閲覧出来ませんみたいな実装になりそうです。


そもそもHTMLやJavaScriptのファイルというのは
ブラウザに読み込ませて、どう動いてもらいたいかをお願いしているだけの文字列です。
スクリプトファイルをクライアントへ手渡すだけで後は知らねというのがWebサーバですから、
その後の事、HTML・JSファイルが正しく実行されるかに関して責任を持ってくれるわけではありません。

これを悪用するパターンとして、Node.jsを動かすChroniumが入っているElectronがありますし。
他にもプロキシサーバを内部的に作っておき、特定URLのJavaScriptファイルの受信をインターセプトして、
好き勝手なコードを差し込んだオレオレJavaScriptファイルに改ざんしてチート開始、ということも可能です。

要するにWebの技術は改ざんへの耐性がなく、
そもそもWebのフロントエンドでゲームを配信するのはやめとけという話です。

まぁ、JSファイルを暗号化したり、難読化を施しつつ、定期的にバージョンアップしてコードがガラッと変わるなら
不正な事やってそうなリクエストを見つけてBANという形でそれなりにがんばれそうですが、
まぁ金にならない仕事かつ人力になるので辛いと思います。

ソシャゲのように全てのユーザーの行動を逐一Webサーバへリクエストを投げるという形で実装し、
Webサーバでリクエストの整合性を見張り続けるという仕組みなら簡単に堅牢な作りに出来るでしょう。


このようにチート対策に関しては、
どこまで頑張るか、どのチートは最悪諦めるのかというトレードオフで決まる関係になっています。

Webゲームの技術等、チートにも触れた記事や書籍というのはたまにありますので、
調査してみると良いと思います。

投稿2019/02/10 09:42

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hinatahinata

2019/02/13 03:26

回答ありがとうございます。 まさにチート対策についてどうするか悩んでいたため 非常にわかりやすく読ませていただきました。 開発もアクセスもしやすい分、改ざんへの耐性もやはりないということが良くわかりました。 配信環境を見直してみようと思います。
guest

0

無理です。
デベロッパ機能のないブラウザ使ってもらうしかないですね(そこまで制限はできませんしそんな使いにくいアプリ誰も使いません)。
デベロッパから画面内の情報はいじれても逆はできませんから。

大事な処理、
例えばスコアの保存などデータ関係の処理は全てサーバー側に任せて、各種不正送信(入力内容など)をサーバー側でバリデーションするしかないでしょうね。

少し前にとある期間限定で配信されたスマホブラウザ限定のゲームも、全てクライアント側で処理されていたため、(期間終了後にやってたけど)デベロッパから操作してプレイ可能にしたりPCからも操作できるようにしたりクリア条件満たさせたり、ありましたが、
サーバー側で処理させていればそのようなことはできなくさせられたはずですしね。

もっといえば、サーバー側で処理させるにしても作る側はデベロッパツールでどこまで悪さができるかというところは知っておかなければならないわけですね。

投稿2019/02/10 05:50

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hinatahinata

2019/02/13 03:22

回答ありがとうございます。 やはり不可能なのですね。 javascript,html5で誰でも簡単にアクセスできる分 ブラウザを使用しているため情報も丸わかりになってしまうのを懸念していました。 実装環境を見直してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問