カテゴリー
ネットの事件

英銀行の「正しい電話番号」確認サイト、JSONで全74000番号を晒す作りで議論を呼ぶ

イギリスの大手バークレーズ銀行、利用者の電話詐欺被害対策として「バークレイズ銀行の電話番号として正しいか調べる」サイトを公開しているのですが、その実装に問題があるのではという疑義がHacker News で上がり議論となっています。

Phone number checker サイトでは、電話番号を一つ入力するフォームが置かれ、ここに電話番号を入力すると、74000個ある正式な電話番号の場合は「この番号へ掛けても大丈夫です」という結果が出ます。

大手とはいえ、一つの銀行が74000個も番号を抱えてるのはすごいですね。フリーダイヤルから支店や部署まですべての番号を含むにしても。

議論となっているのは、このチェッカがクライアントサイドだけで動いているらしいこと。JSONファイルが読み込まれていて、このファイルに74000個の電話番号がベタ書きされています。


{
"numbers": [
"0800000097",
"0800001011",
"0800008008",
"0800111777",
"0800201612",
"0800222200",
"0800222800",
"0800227222",
"0800281435",
"0800282390",
"0800289289",
"0800289888",
"0800289989",

最初に声を上げたブログが、入力フォームの形式チェックがあまりちゃんとしていない(ハイフンを含んだりイギリスの国番号44から始まる形式を正しく認識できない等)やJSONファイルのサイズ(1.3Mbytes)が大きすぎることを問題にしていた(これぐらい許容範囲だとか、正規表現で書けばよいとか圧縮をちゃんとすればよいとか)ため、Hacker News での議論も多方向に拡散してしまっているのですが、主要な問題は偽メールや偽電話でだまそうとしている勢力が簡単に正式な電話番号のリストを入手できるところにあるのではないかなと思います。

発信者番号通知も改竄可能なので、騙す側に改竄するための正しい番号のリストを教えているという話でもあります。このチェッカが正しく理解されていないと、電話を「受けた時」にこのチェッカで正しいとされたから電話の相手を信用してもいいと思ってしまったりしてしまう可能性もあります。

カテゴリー
ネットのサービス

Making History Sandbox – 世界の勢力図を編集できるブラウザエディタ

Making History Sandbox: Alternate History Timeline Editor は、世界の勢力図を年号と併せて作成することができるブラウザ上の編集サービスです。

モンゴル高原統一(1206)時の諸勢力

エリアを選んで名前や勢力名を設定したり、色を変更したりできます。

いくつかの時代の勢力図をロードすることもできます

  • アレクサンダー大王
  • モンゴルの台頭
  • ヴァルナの戦い
  • 第二次世界大戦前夜
  • 現代

第二次世界大戦直前(1936)。フィリピンの帰属が間違ってますね。

作成した勢力図は保存・読込ができます。利用者が作成したデータ「現代(2021)」「第一次世界大戦開戦(1914)」も追加されています。

エリア単位で支配勢力を色塗りしていますが、エリアを分割したりすることもできるそうです。

レイヤーのように複数の年代を並べて作り、切り替えていくこともできますが、これを使ったサンプルデータはまだなさそう。

自分の興味ある時代を再現したり、架空の年代や勢力を塗り分けたりするのも面白そうです。

カテゴリー
ツール

JSONCrush – JSONをURIに圧縮して載せるためのライブラリ

KilledByAPixel/JSONCrush は、JSONをURLに載せやすい形に変換するライブラリです。

JSONCrushのデモサイト。JSON形式のデータを左上に入力すると、それをテキストとして圧縮し(↓)、さらにURIとして使える文字に縁故度しています(→)。

今回入れてみたJSONでは、そのままURIエンコードした場合に比べて52%、約半分のサイズとなりました。

URLにユーザーが入力した結果のJSONデータをなるべく小さくして載せるというのがライブラリの目的です。URLに再現のためのパラメータが全部載っていれば、結果をブックマークしてもらえばいつでも同じパラメータのページが再現できます。サーバーサイドでいろいろ面倒な処理をして覚えておく必要がありません。

そのままURLEncodeする手もあるけど、URLのサイズ上限(2000バイトちょっと)に引っ掛かるのは避けたい、と。HTTPパラメータとして個別に受け取ればもっとコンパクトにできるのでしょうけど、JSONのまま渡せるのは場合によっては楽なのでしょう。作り手側に楽という意味ですが。

使ってるJSCrush ライブラリが変換部分を担っていて、これは特定の文字列内でテキストをエンコードしてくれるもののようです。JSCrushのデモサイトはこちら。

JSCrush は minify したものしかないらしく、
その動作を解析してる人がいました。この解説によれば、JSCrushライブラリは、1KbyteのJavaScriptで何ができるか、というコードゴルフコンテストの2012年の作品で使われたものだそうです。

via Hacker News