🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

3回答

2631閲覧

1人1回しか『いいね』を押せないガールズチャンネルのような仕組み

okinawajin

総合スコア5

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

3クリップ

投稿2021/01/24 10:41

編集2021/01/24 10:48

同一人物による複数回クリックを防ぐ方法を知りたいです。

私は先日、プログラミンを学ぶ学校で複数回投票を防ぐ方法は以下の二つと学びました。

● cookieを使った方法
● IPアドレスを使った方法

そこで私は、ガールズチャンネルがどちらの仕組みで複数回『いいね』を押すことを防いでいるのか、確かめてみようと以下の環境で『いいね』を押す実験を行いました。

① iPhoneのsafari(Wi-Fi)
② iPhoneのsafari(4G)
③ iPhoneのchrome(Wi-Fi)
④ パソコンのchrome(Wi-Fi)

すると①で『いいね』を押せて以降、すべての端末で『いいね』を押すことができないという結果。

これはいったいどういうことか先生に聞いたのですが、先生の回答は
『組み合わせれば可能』
ということだけ、それ以上詳しく教えてくれませんでした。

このようなくだらない質問で申し訳ないのですが、調べても、考えても一切わからなかったので、どのような仕組みで可能としているのか大まかな仕組みでいいので教えていただけないでしょうか。

夜も眠れません。

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

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

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

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

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

hentaiman

2021/01/24 13:21 編集

> これはいったいどういうことか先生に聞いたのですが、先生の回答は 『組み合わせれば可能』 ということだけ、それ以上詳しく教えてくれませんでした。 それ単純に知識不足で教えられないだけじゃない?ヒントもクソみたいなレベルだし。 他の先生に聞いてみたらどうですか? ちなみに今試したところ、重複プラマイ押せたので何か確認方法ミスってるのでは?
okinawajin

2021/01/25 00:09

知識が少ないからここで質問したのですが、私の質問が間違っていたようです。 クソみたいなヒントを書いて申し訳ございません。
hentaiman

2021/01/25 00:31

いや、質問者のヒントがクソなんではなくて教える側であるはずの「先生が出したヒント」がクソなんです。なので他の優秀そうな先生に聞いたら?って事です。
okinawajin

2021/01/25 03:20

お恥ずかしいことに勘違いしていました。hentaimanさん申し訳ございません。
guest

回答3

0

1~4であればcookie・IPアドレスの組み合わせで押せなくなるのは特に不思議ではないと思いますが。(同一ネットワークのWiFiを使っていた場合)

cookieが残っていれば押せない判定を入れる、2がはじかれる。
同一IPアドレスからのクリックができないような判定を入れる、3、4がはじかれる。
(上記で何か漏れている点がありますでしょうか)

ただ、該当サイトにて上記のような判定をしているかはわかりません。
同一として識別する方法として何を使っているのかはそれ以外にもあると思いますので。

投稿2021/01/24 11:09

編集2021/01/24 11:12
razuma

総合スコア1313

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

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

okinawajin

2021/01/24 11:20

あッ!本当ですね! 同じ端末で②を行った時点で、cookieが残ってしまいますね。 自分のレベルの低さに、今、がっかりしました。 もっと勉強します。 ありがとうございます!
razuma

2021/01/24 11:32

いえいえ、上記で納得するのであれば単純に把握漏れだと思うので特に悲観する必要もないと思います。(理解自体していると思うので) ただ、①の直後にiPhoneのchrome(4G)のパターンで試したとき(またはキャッシュなどをすべて削除しての別IPアドレス)に押せない場合は他の要素が入っている可能性があるので解析が困難かもしれませんね。(逆にそのパターンで押せる場合はcookie・IPアドレスで見ている可能性が濃厚となるかもしれませんね)
okinawajin

2021/01/24 13:13

razumaさんありがとうございます。 プログラミングを学び始めたばかりでビクビクしながら質問したけど、質問してよかったです。 危うく正しくない実験の結果をもとに、答えの出るわけのない迷路に迷い込むところでした。 razumaさんのように、回答できる立場の方を目指してプログラミングをがんばります! 本当にありがとうございます。
guest

0

以下の二つと学びました。

それだけではありません。個人を特定する手段は、他にもいろいろ考えられます。

Cover your tracks

投稿2021/01/24 10:51

maisumakun

総合スコア145967

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

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

okinawajin

2021/01/24 11:09

よろしければ他の方法の名前だけでも教えていただけないでしょうか。 お手数ですが、どうぞよろしくお願いいたします。
okinawajin

2021/01/24 11:11

『Cover your tracks』が名前ですね。 たいへん失礼いたしました。
maisumakun

2021/01/24 11:11

上のサイトを確認すれば、実際にどのような情報が伝わっているのか確認もできます。
maisumakun

2021/01/24 11:11

> 『Cover your tracks』が名前ですね。 いえ、これはサイト名です。
okinawajin

2021/01/24 11:14

ありがとうございます。 今日の夜、頑張って読んでみます!
guest

0

ベストアンサー

ガールズちゃんねるは、ログインした状態で『いいね』を押したという理解でよいでしょうか。

であれば「そのユーザが何に対して いいねを押したかをシステム内部で管理しており、2回目以降は押せないようになっている」と推測します。

①~④はいずれも cookie・IPアドレス は別でしょうから、この場合は使えません。

投稿2021/01/24 10:48

68user

総合スコア2022

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

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

okinawajin

2021/01/24 10:51

ログインはしていない状態で『いいね』しました! とても重要な基本事項を失念して、大変申し訳ございません。
68user

2021/01/24 10:56

なぜでしょうね~。 ①・③・④は同じIPアドレスかもしれませんね。 ②は別だと思うんですけれども。 今どき IP アドレスが同じ=同一人物というのはざっくり判定すぎて使い物にならないと思うんですよね。 あと、①・② はログアウト状態でも有効な Cookie で判定しているかもしれませんね。 あと iPhone で別アプリでも同じ ID が取得できるようなキーはあったかどうか。以前はありましたが、今は軒並み使えないという認識ですがどうなんでしょう。 古いですがご参考: https://iridge.jp/blog/201404/4836/
okinawajin

2021/01/24 11:08

質問を重ねて、大変申し訳ございません。 ちなみにcookieとIPアドレスを組み合わせて、同一人物の複数回クリックを防ぐ現実的な方法は以下の通りと考えているのですがいかがでしょうか。 ●データベースに直前にクリックしたIPアドレスを1つだけ保存して、連続して同じIPアドレスの場合は『いいね』不可 ●cookieがある場合は『いいね』不可
68user

2021/01/24 11:44

razuma さんのおっしゃるとおり、①~④を順に行うと特定は可能ですね。 シークレットウィンドウを開いてアクセスしたら、少なくとも Cookie は送られないと思います。 ところで今、同一 PC の Chrome と Firefox で同じコメントにいいねを押してみましたが、いずれも「画面上では +1 されたが、リロードすると元の値に戻っていました。『いいね』を押すことができないというのはどういう状態だったんでしょう。 IP アドレス判定方法はそのとおりです。Cookie は、発行したランダムデータを元に 1回限りという判定をしているのでしょう。 IP アドレスは精度100% ではないものの地域までわかったりしますが (GeoIP で調べてください)、それでも「東京都千代田区」レベルであるため、これが重複したら NG というのはかなり厳しめです。 あと、下記は docomo の IP アドレス範囲ですが、それほど膨大な IP アドレスがあるわけではないので重複=NG とみなすのもちょっと厳しいですね。 https://www.nttdocomo.co.jp/service/developer/smart_phone/spmode/index.html あと Cookie 的なものとして WebStorage があります。 また、フォント・画面解像度・タイムゾーン・canvas などを元に判定するフィンガープリントってのもあります。精度は高いかどうかはわかりません。 ご参考:https://www.saitolab.org/fp_site/ なお、いいね 程度なら多少誤判定があっても OK、という割り切りはあるかもしれませんが、たかが掲示板でそこまでやるか? とも思います。
okinawajin

2021/01/24 13:07

リロードで元の値に戻るという認識で『押すことができない』という表現をしておりました。 申し訳ございません。 プログラミングを学ぶ上で、今後はこのような表現にも気を付けていこうと思います。 自分の知識が乏しいあまり、目を通すだけで多くの時間がかかってしまったのですが、68userさんのおかげで新しい発見が数多くありました。 感謝です。本当にありがとうございます。
68user

2021/01/24 14:14 編集

なるほど了解です。 さきほど Chrome と Firefox で +2 したものは、今みたら +2 が反映されていました。 現時点の情報では、「いいね計算はバッチ処理で1時間に一度などのタイミングで行われるので増えていないように見えただけで、実は一人1回という制限はないのではないか」というのがわたしの推測です。
okinawajin

2021/01/25 00:07

そのような方法もあるのですね。 プログラミングには答えが複数あるので、さらに勉強する意欲が湧きました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問