退会しても実はデータが削除されないウェブサービスの実態

セキュリティ

世の中にありふれているウェブサービスのユーザ登録

ITエンジニアにとっては常識かもしれませんが、一般人にとってはあまり知られていないだろう退会の話です

サービスを退会する時は「会員情報を削除する」なんていうボタンをポチッと押して、退会処理をすることが一般的かと思います

しかし、実は退会処理をしても内部的にはデータは削除していなかったりします

これはあまり一般の人には知られていない事ですね

よくあるウェブサービスの退会処理

ウェブサービスではユーザ情報をデータベースという場所に保存します

データベースはエクセルのようなものを想像してください

ユーザ登録

例えば、あるウェブサービスで上のような画面でユーザ登録をしたとします

ここに入力するとデータベースには以下のように情報が保存されます

退会処理

ところがせっかく登録したのに、サービスがつまらなかったのか、退会処理をするネコさん

ヘルプなどを参考にして上記の画面から退会処理を実行

消えないユーザ情報

この退会処理では、おそらくネコさんをはじめ多くのシステムに詳しくない一般人はこのような処理を期待してるはずです

かくして、ユーザ登録の時に入力したデータは綺麗さっぱり消し去られたのであった

めでたし、めでたし

・・・しかし、残念ながらそうはならない。

退会処理を実行するとデータベースの情報は以下のように更新されます

お分りいただけたでしょうか?

退会という欄(カラム)に「1」が追加されただけ

これがシステム上の退会処理ということになります

つまり、あなたが消えたと思っていた情報は消えておらず、ただ退会フラグがセットされるだけなのです

全てのウェブサービスがこうではないが

もちろん全てのウェブサービスがこういう処理をしているのかといえば、そうではないと思います

個人情報を抱えるようなセンシティブなサービスはしっかりと削除処理をしている、はず。。。です

しかしウェブサービスなんて世の中にはごまんとありふれている

個人情報を扱うような企業ですら流出事件が後を絶たないのに、弱小デベロッパーが作ったウェブサービスがこんなちゃんとした処理をしてることは稀なケースだと思います

なぜ消去しないのか

ではなぜ、フラグをセットするだけでユーザ情報を削除しないのでしょうか

その理由は、推測ですが後々の事を考えてのことだと思います

つまり退会したユーザの情報を後から利用するケースのことを想定しているのではないか、そう思います

実は僕が個人的に運営しているサービスも、データは削除してません

まあ、そもそも個人情報を登録するサービスじゃないし、正確には退会処理じゃないんですけども

それはなぜか?

・後からそのユーザがそのデータを復元して欲しいと頼まれるかもしれないから

・後から司法機関などにデータの提出を求められるかもしれないから

という理由が大きいかもしれません

個人情報ではありませんが、スパム行為防止のためにアクセス元情報を同時に記録してたりもします

つまりアクセス元のIPアドレスとかです

これを削除してしまうと、過去に荒らしていた人を照合できなくなったりするので、色々と開発する方にとっては都合が悪いのです

データを消す方法

では、何か我々サービス利用者にとって自衛する方法はないのでしょうか

僕が開発側の人間として、他人のサービスを利用するときに使っている自衛方法を紹介します

退会前にデータを更新

ほとんどのサイトにはユーザ登録した情報を更新できるシステムがあります

上記のような画面

退会ボタンを押す前に、この更新画面を利用します

具体的にはこう

このように、入力できる欄全てにデタラメな文字を入力して更新します

こうするとデータベースはこのように更新される。

その後に退会処理を実行すると、データベースはさらにこうなります

退会フラグがセットされます

この状態であれば、仮にデータベースの情報が流出してしまっても問題はありません

データベースに記録されているのはデタラメな情報だからです

注意点としては、必ず「ユーザ情報を更新」→「退会処理」の順番で行うことです

退会処理を先にしてしまうと、ユーザ情報を更新できなくなってしまうからです

実際に僕は利用するウェブサービスを退会するときには、このような手法をとっています

それでもデータベースが定期的にバックアップされていたら無意味なわけですが、バックアップを取ってるかどうかは外からはわからないし、やらないよりかはやったほうが100倍いいと思ってます