ウェブサービス関連の描線。
knm
}{29時}{30時}{28時30分}{22時22分}{21時17分}(75)録落ちボタンの置き場が無くなっているため,自我設定画面を準備中にして握接出来るようにした。
21時15分頃,他の用者の名前として IP アドレス が表示されていることに気付き,17分には保守作業中の画面に切り替え,調査・修正作業に入る。念のため,sss-1 も同様に一時停止した(22時22分)。
進捗時限で区切る余裕もなく,休まず作業を続けたため経過などは以下に記しておく。
最初は全く心当たりが無かったため,攻撃の可能性から探ったが,それらしい形跡は無かった。よく考えれば,今のデライトの仕様を把握し的確な攻撃をするのは不可能に近い。その他の可能性を虱潰しに探り,28時30分頃,原因特定。29時頃には修正完了。この頃,sss-1 に関しては復旧させた。
原因は,DG::DBI::qy::reg_ego() で iffy_ の存在判定をせずに ego_T::knm() の返し値を間接参照していたことだった。ここで出場側の dg_reg_ego() を呼び出す時の引数 knm に ipa_reg 用の文字列が入ってしまっていた。 ただし,本番環境のみで,手定め環境では再現しなかった。
時印と合わせてみるに,デライト正式離立の時点でこの不具合はあり,ずっと蓄積されていたようだ。knm が最近まで未使用であったこと,手定め環境では起きなかったことで気付かなかった。
列の指定などを間違えることで意図せず不要な出与えを取ってきてしまう,というのはよく言われることで自分でも意識していたが,まさか保存時点で未定義動作による取り違えが起きているとは思わなかった。いまどき C のような記憶管理が必要な言語でウェブサービスを開発することが珍しいせいでもあるだろう。良い勉強になった。
15日の開発で決めていた通り,30時前には利用者の IP アドレスに関する出与え・交度を全て削除した。ここで迷いが無かったのは幸いだった。
新括体採番法の実装が途中だったため,「保守作業中」にしたまま翌日まで不休の作業を継続した(出振るいは20日10時50分頃)。
現状,デライトでも IP アドレスを出場に保存しているが,これは廃止も含めて検討を続ける。
デライトは高い匿名性を持つ一方で,投稿による個人情報の蓄積も多くなる。不正利用への対応能力と個人情報保護の兼ね合いが難しい。とはいえ現状,悪質な用者がいるわけでもなく特に何にも利用していない。必要になるかもしれない,でこの種の情報を蓄積していくのは好ましくない。
ウェブサービスを運営する上で IP アドレスを全く記録しないということは考えにくいが,出場に保存してしまうと流出経路も増え,永続性が高まり,他の出与えとの関連付けも容易になる。
ウェブ捌き側である程度の握接制御は出来るし,出場側には日時さえ保存しておけば追跡が必要になった時に握接録と照合すればいい。握接録は保存期間を定めておき,統計情報を取ってから削除する。
暫定的な措置として,出場への IP アドレスの保存は切り替え式にしておき,原則として保存しないことにする。これにより,流出リスクを相対的に低減させつつ,十分な管理体制が出来,かつ運営事務の観点からどうしても必要になった時に期間限定で有効にする,といったことが可能になる。
用者心理の観点からも,監視的な要素は少ないに越したことはない。