「24時間ごとに1人1回まで投票可能」
という仕様のサイト作成依頼があり、会員サイトではないので、
cookieかローカルストレージに投票済みフラグを格納する方法を提案したのですが、
「それだとユーザーが削除可能なので不正される、別の方法で」と言われました。
ログインありきならわかるのですが、そうではないサイトで実装可能な方法が思い浮かびません。
ただ、先方は「過去にも同じ仕様で作ったことがある」と言っており、
もしかしたら、そういった方法があるのかと思い質問させて頂きました。
実現可能な方法がございましたら、教えていただけないでしょうか?
また、「1人1回」というルールはさすがに無理だと思いますので、
端末・ブラウザを変えての投票は許容する、
という仕様に変更したら実現可能などの情報も頂けると幸いです。
長くなりましたが、よろしくお願いいたします。
33 件の回答
2chのIDの仕組みとか調べてみては?
その「過去の同じ仕様」を聞いてみれば? w3qのIDも、同じPCでもブラウザ変えれば変わっちゃうし、もちろんcookie 等の削除でも変わる。調べたがスマホでさえ(スマホだからこそ?)一意識別はできないようだ。俺は思い浮かばない。
PCならばMACアドレス、携帯ならばIMEIを取得するサイトを作ってレスポンシブ対応させる。取得できない場合には投票を無効にする。MACアドレスは偽装可能だが、そこまでやる奴は看過するしかない。
Re:4
↑の対応が現実的だな
Re:4
JSでMACアドレスって取得できるん?
試してへんけど。
https://ux.nu/PMH86
個人を特定する事はできないので、上にもあるけど端末の振り分け+IPが一番厳しい条件になるんじゃないかな
Re:6
getmacでググると幸せになれる。
Re:9
node.jsで草
質問者はサーバー側の処理なしでWebブラウザだけで実現したいってことちゃうんか。
サーバーサイドの処理有りなら余裕で実装できるやん
Re:9
これサーバーのMACアドレス見てるだけでクライアントPCのMACアドレスやないやろ。
通常、クライアントのMACアドレスの情報なんて送られてきてないし
サーバーサイドの言語でもwebのアクセスじゃMACアドレスとかIMEIは取得できない。
もし可能なら手段知りたいわ。
45chがそれと同じ仕様
Re:10
node.js以外であるからちゃんと探して。というかこれでいい?「http://www.」を先頭につけてね。
whatisnetwork.com/help/22209/how-to-get-mac-address-of-client-computer-using-php-or-javascript.htm
Re:11
node.jsの話してないから上のリンク見てね。
(お二方とも、相手をド素人だと思ってバカにしてるのかな)
Re:14
サイト見れないんですけど。あちこち調べたがクライアントのMACアドレスをサーバ側で取得する方法なんてない、という意見が大半だがなぁ…。
Re:4
壮大な誤解をしてるように思うんだけど、もしかして、イントラネットの話してない?
Re:16
見れないのか。これでいいのかな。
(恥ずかしながらコード共有はもっぱらgithub使ってて、codepen使うの初めてなんだよね)
https://codepen.io/anon/pen/g〇〇bwa
〇〇の部分には j と k を入れてね(NGワード避け面倒だな)
Re:18
404でっせ。
Re:15
アクセスできないのに
Re:20
ああ…。
https://codepen.io/anon/pen/g〇〇bwa
〇〇の部分には J と K だったわ。(大小文字区別するのな。ごめんよ)
Re:21
アクセスできないのは環境が異なるからだろうか。よくわからん。
「自分のところからは有線無線4G回線問わずアクセスできるよ」くらいしか言えない。
(サイトにアクセスできないって書き込みも16が初出で、それ以前の15の書き込みに「アクセスできないのに」って文句言われても困る。)
Re:17
ん?どういう誤解だろう。
MACアドレスもIMEIも端末を特定するのに有用って話でしかないのだが。
Re:22
ActiveXObject って、WinはIE使えって事なの? Mac にしてもターミナル開いて内部コマンド起動するっていう恐ろしい荒業みたいだけどセキュリティ的にどうなん。こんなんできるのMacは? あと最初に提示されたURLは、正確にはページは表示されるけど謎の画像と「This Domain Has Expired, To Renew Please Contact Your Provider.」っていうメッセージが出るだけだね。
Re:25
> ActiveXObject って、WinはIE使えって事なの?
いや、IEでなくとも動くと思うが。動かなかったらCMD直打ちでいいと思うのだが。
> Mac にしてもターミナル開いて内部コマンド起動するっていう恐ろしい荒業みたいだけどセキュリティ的にどうなん。こんなんできるのMacは?
どうなん?って言われるとなあ。支障ないと思うがなんか規約違反あったっけ?それともアラート出る?
あと、この荒業(というほどでもないとは思うのだが)自体はできるしLinuxでもしかり。普通にコマンドシェル走らせるJavaScriptなんていくらでもあるだろう、とは思うのだが。それこそ「JavaScript+シェル+コマンド+実行」とかでいくらでも事例は出てくるぞ?
> あと最初に提示されたURLは、正確にはページは表示されるけど謎の画像と「This Domain Has Expired, To Renew Please Contact Your Provider.」っていうメッセージが出るだけだね。
マジかあ…ってしか言えんなあ。まあ先のcodepenに書いたものと内容はちょっと異なるけど、要約するとこんな感じなので。
Re:26
いや ActiveX ってもはやサポートされてない古い技術なんですけど。あとターミナルコマンドはローカルで起動したJS内でなら動くかも知れんが、WebサイトのJSでブラウザ経由でそれが許可されたらどんなことになるか解らんのか? 何を言ってるんだお前は?
Re:24
とりあえず、動くサンプル作ってみせたほうが話は早いよ。
codepenもみたけれど、関数だけじゃなくて、実行して結果が出るところまで実装してみて。
それで実装できないなら、それが答えです。
とりあえず、こちらの結論としては、不可能です。
クライアントからローカルのアプリを呼び出せるわけがないというのが率直な感想。
ただ、意見としては有意義なので評価します。
Re:26
>「JavaScript+シェル+コマンド+実行」とかでいくらでも事例は出てくるぞ?
それはクライアントサイドのjavascriptではなくて、サーバーサイドのnode.jsの事例でしょう。
node.jsならシェルの実行はできるだろうけど、サーバー上で実行してるわけでクライアント側の操作ができるわけではないよ。
おぱーい
Re:24
まず、サーバーサイドとクライアントサイドを誤解してる。
つぎに、インターネット(グローバルネットワーク)とイントラネット(ローカルネットワーク)で誤解してる。
Re:17
たぶん、node.jsでつくるアプリの範囲の話をしてるんじゃないかな。
webページとそれはぜんぜん違うよ。