teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

deleted

2023/05/07 09:37

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- 偽装不可能なコインシステムの実装
1
+ deleted question
body CHANGED
@@ -1,1 +1,1 @@
1
- honbunhonbunhonbunhonbunhonbunhonbun
1
+ deleteddeleteddeleteddeleteddeleted

4

honbun

2023/05/07 09:36

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,22 +1,1 @@
1
- ###前提
2
- Webサイトを作っています。
3
- レンタルサーバーで、HTTPS対応、HTML5+JavaScript+PHPで作成し、ユーザーデータはMySQLにて管理しています。
4
- JavaScriptで実装しているゲームで得たスコアに応じて、自分のアカウントにコイン(ゲーム内で使用可能)を追加する、と言うシステムです。
5
-
6
- ###現在の状況
7
- 現在、アカウントシステム・コインを追加するシステムはどちらも完成しています。しかしながら、ブラウザのF12開発者ツールで簡単にコインを追加することができてしまうのです。
8
-
9
- ###スクリプト
10
- 該当スクリプトはチート防止のため削除させていただきました。
11
- js: ajaxでphpを呼び出し、獲得コイン数を送信します。
1
+ honbunhonbunhonbunhonbunhonbunhonbun
12
- php: 受け取ったコイン数をログインしているアカウントのデータベースに追加します。
13
-
14
- ###偽装方法
15
- 該当スクリプトはチート防止のため削除させていただきました。
16
- ajaxの関数を呼び出すスクリプトです。
17
-
18
- ###質問
19
- 上記の状況において、偽装方法をより複雑にするか、偽装不可能なコインシステムを作るにはどうすればよいでしょうか。
20
-
21
- ###追記
22
- ゲーム類は全てJavaScriptで書かれています。勝敗を競うものではなく、自分ひとりでハイスコアを目指して遊べるタイプのものです。

3

質問の目的達成の為。

2018/01/08 12:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -7,127 +7,16 @@
7
7
  現在、アカウントシステム・コインを追加するシステムはどちらも完成しています。しかしながら、ブラウザのF12開発者ツールで簡単にコインを追加することができてしまうのです。
8
8
 
9
9
  ###スクリプト
10
- ```JS
11
- function coins (coins, user) {
10
+ 該当スクリプトはチート防止のため削除させていただきました。
12
- if (coins == 0) {
13
- return false;
14
- } else {
15
- result = $.ajax({
16
- type: "POST",
17
- url: "/~/coins.php",
18
- async: false,
19
- data: {coins: coins, user: user},
11
+ js: ajaxでphpを呼び出し、獲得コイン数を送信します。
20
- success: function(result) {
21
- var notification = document.querySelector(".mdl-js-snackbar");
22
- switch (result) {
23
- case "0":
24
- document.getElementById("nowCoins").innerHTML = get_coins();
25
- if (coins > 0 && !user) {
26
- notification.MaterialSnackbar.showSnackbar(
27
- {
28
- message: coins + "コインゲット!",
29
- }
30
- );
31
- }
32
- break;
33
- case "1":
34
- notification.MaterialSnackbar.showSnackbar(
35
- {
36
- message: "コインが不足しています。",
37
- }
38
- );
39
- break;
40
- case "2":
41
- document.getElementById("nowCoins").innerHTML = get_coins();
42
- notification.MaterialSnackbar.showSnackbar(
43
- {
44
- message: user + "さんに" + coins + "コインをプレゼントしました。",
45
- }
46
- );
47
- break;
48
- case "3":
49
- break;
50
- case "4":
51
- notification.MaterialSnackbar.showSnackbar(
52
- {
53
- message: "エラーが発生しました。",
54
- }
55
- );
56
- break;
57
- case "5":
58
- notification.MaterialSnackbar.showSnackbar(
59
- {
60
- message: "ユーザー" + user + "は存在しません。",
61
- }
62
- );
63
- break;
64
- }
65
- }
66
- }).responseText;
67
- switch (result) {
68
- case "0":
69
- case "2":
70
- return true;
71
- break;
72
- case "1":
73
- case "3":
74
- case "4":
75
- return false;
76
- break;
77
- }
78
- }
79
- }
80
- ```
81
- ```PHP
82
- <?php
83
- if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
84
- //ログインしているか確認するスクリプ。$isLogin真偽値で格納
12
+ php: 受け取ったコイン数をログインしているアカウンのデータベース追加します
85
- include($_SERVER["DOCUMENT_ROOT"] . "/~/isLogin.php");
86
- if ($isLogin) {
87
- //現在所持しているコイン数を取得するスクリプト。$nowCoinsに格納。
88
- include($_SERVER["DOCUMENT_ROOT"] . "/~/nowCoins.php");
89
- if (empty($_POST["user"])) {
90
- //自分のコイン増減するスクリプト
91
- if ($_POST["coins"] > 0 || abs($_POST["coins"]) <= $nowCoins) {
92
- $st = $pdo->prepare("UPDATE users SET coins=coins+? WHERE name=? and auto_login=?");
93
- $st->execute(array($_POST["coins"], $_COOKIE["username"], $_COOKIE["auto_login"]));
94
- echo 0;
95
- } else {
96
- echo 1;
97
- }
98
- } else {
99
- //コインを他人にプレゼントするスクリプト
100
- if ($_POST["coins"] > 0 && $_POST["coins"] <= $nowCoins) {
101
- $st = $pdo->query("SELECT * FROM users WHERE name='" . $_POST["user"] . "'");
102
- if ($st->fetch()) {
103
- $st = $pdo->prepare("UPDATE users SET coins=coins+? WHERE name=? and auto_login=?");
104
- $st->execute(array(-1 * $_POST["coins"], $_COOKIE["username"], $_COOKIE["auto_login"]));
105
- $st = $pdo->prepare("UPDATE users SET coins=coins+? WHERE name=?");
106
- $st->execute(array($_POST["coins"], $_POST["user"]));
107
- echo 2;
108
- } else {
109
- echo 5;
110
- }
111
- } else {
112
- echo 1;
113
- }
114
- }
115
- } else {
116
- echo 3;
117
- }
118
- } else {
119
- echo 4;
120
- }
121
- ?>
122
- ```
123
13
 
124
14
  ###偽装方法
15
+ 該当スクリプトはチート防止のため削除させていただきました。
125
- F12開発者ツールconsoleにて、
16
+ ajax関数を呼び出すスクリプトです。
126
- ```JS
17
+
127
- coins(100);
128
- ```
129
- などと実行するだけ。
130
18
  ###質問
131
19
  上記の状況において、偽装方法をより複雑にするか、偽装不可能なコインシステムを作るにはどうすればよいでしょうか。
20
+
132
21
  ###追記
133
22
  ゲーム類は全てJavaScriptで書かれています。勝敗を競うものではなく、自分ひとりでハイスコアを目指して遊べるタイプのものです。

2

2018/01/08 12:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ###前提
2
2
  Webサイトを作っています。
3
3
  レンタルサーバーで、HTTPS対応、HTML5+JavaScript+PHPで作成し、ユーザーデータはMySQLにて管理しています。
4
- JavaScriptで実装しているゲームの成績に応じて、自分のアカウントにコイン(ゲーム内で使用可能)を追加する、と言うシステムです。
4
+ JavaScriptで実装しているゲームで得たスコアに応じて、自分のアカウントにコイン(ゲーム内で使用可能)を追加する、と言うシステムです。
5
5
 
6
6
  ###現在の状況
7
7
  現在、アカウントシステム・コインを追加するシステムはどちらも完成しています。しかしながら、ブラウザのF12開発者ツールで簡単にコインを追加することができてしまうのです。

1

2018/01/07 07:55

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -128,4 +128,6 @@
128
128
  ```
129
129
  などと実行するだけ。
130
130
  ###質問
131
- 上記の状況において、偽装方法をより複雑にするか、偽装不可能なコインシステムを作るにはどうすればよいでしょうか。
131
+ 上記の状況において、偽装方法をより複雑にするか、偽装不可能なコインシステムを作るにはどうすればよいでしょうか。
132
+ ###追記
133
+ ゲーム類は全てJavaScriptで書かれています。勝敗を競うものではなく、自分ひとりでハイスコアを目指して遊べるタイプのものです。