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

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

ただいまの
回答率

89.21%

【WEB】Cookie等でのデータ保持を最大限頑張るには?

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 161

kosumihub

score 17

例えばクーポンなど、一度使ったら消込して2度目以降使えなくする方法があります。
例: DBへ会員情報とクーポンIDを紐づけた情報を保管、Cookieで使用したクーポンIDを保持 等...

ただ、Cookieでの保持の場合はクライアントサイドでの処理になるので、いくらでも改ざんでき、大した知識がなくともブラウザを変えたりシークレットモードにすることで、何度でも消込をリセットできるかと思います。

そこで質問です。
会員登録等が無くユーザーが特定できない状態で、できるだけ消込リセットを難しくするテクニックなどご存知でしたら、教えていただきたいです。
完璧には無理だとわかっているので、「できる限り難しく」というテーマにしたいと思います。

先輩方、よろしくお願いします。

===追記===
先述の通り、サーバサイド言語で実装できることは承知です。
テーマは「可能にするには」ではなく、「できる限り難しく」です。
よろしくお願いします!

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+5

会員登録等が無くユーザーが特定できない状態

であれば、なにをやっても無駄です
変な話、別のブラウザで繋げば完全に新規です

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/05/22 21:56

    ユーザー登録してDBに保管しないと始まらないでしょう

    キャンセル

  • 2020/05/22 22:05

    結局はそうですよね。。

    キャンセル

  • 2020/05/22 22:13

    古くはポケモン:コイル事件、イナイレ:五条事件、
    など見てもいかに管理されていないアクセスがいい加減な
    データなのかわかります。
    botを含め不正な情報操作はあとをたちませんので・・・

    キャンセル

  • 2020/05/22 22:24

    投票だけなら良いのですが、お金が絡んでくるとなると責任問題へも発展しますので、、

    キャンセル

+2

Canvas FingerprintingHSTS Super CookiesETagのようなCookieを使わないユーザートラッキング手段はありますが、本来の用途から外れて行儀の悪い反則技になってしまうのでお勧めはできないです。
個人特定用の識別IDをDBに保存、Cookieには識別IDを保存。識別IDはユーザーが解読できないような文字列を使用するぐらいしかないかとは思います。加えてIPアドレスやUserAgentなどの情報と組み合わせて、なるべく同一アクセスかを検知できるようにするぐらいでしょうか。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/05/23 07:14

    実用的では無さそうですが面白いです!
    ありがとうございます。

    キャンセル

+1

完璧には無理だとわかっているので、「できる限り難しく」というテーマにしたいと思います。

世に回っているシステムで仮に完璧でないものが出回っているのであれば困りますよね。。
クーポンにもよりますが、高額なものも中にあります。それをユーザが何回も書き換えてしまうのであれば、その会社・団体などに大きな損益を与えてしまいます。

Cookieでの保持の場合はクライアントサイドでの処理になるので、

クライアントサイドの言語はユーザでも扱えてしまう。そこで出番なのがサーバーサイドの言語になります。質問のタグにもPHPがあるのでそちらで実装していけばいいかと思います。

データーベースに使用したかどうかなどかを保持するカラムなどがあれば簡単にできるかと思います。
ワンタイムパスワードの仕組みなどを理解しているとイメージしやすいかと思います。

参考程度にトップヒット

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/05/23 07:36

    ご回答ありがとうございます。
    当方PHPの知見は少しですがございまして、不出来ながらSE兼プログラマとしてワンタイムパスワードの実装も携わった経験がございますので、出来ないのは100も承知です!笑

    残念ながら完璧ではないシステムは世に溢れかえっております。
    例としては(当たり前すぎるかもしれませんが)、例えばクーポンは利益優先のお仕事ではないですよね。
    「クーポン発行キャンペーンを行っている」というイメージさえ植え付けられればOKなので、その中でどれだけ損害を軽減できるかが重要になってくるわけです。
    つまり、 開発費>損害額(期待値) であれば善ということですね。

    開発費を抑えるために、厳密さを犠牲にしてもクライアントサイドだけでの実装という案件は実のところ大手企業様でも求められることが多いです。

    そこで皆様の創意工夫など、ご経験をお教えいただければと思った次第です!
    もし何かご存知でしたら、よろしくお願いします!

    キャンセル

  • 2020/05/23 12:28

    状況把握しました。

    うーん。Cookieではブラウザに直接保存するので対策と言えるものはないです。。sessionを使用すればサーバー側にデータを保存しますので、中身を見られたりデータを改ざんされる可能性はないかと思います。

    キャンセル

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

  • ただいまの回答率 89.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる