カテゴリー
技術者と英語

問題のあるユーザー名登録を防ぐ英語圏のワードフィルタの実例

小片コード共有サービスの pastebin に貼られ、Hacker News で ゲーム配信サービス大手のTwitch がユーザー登録時に弾いているフィルタ部分のソースコードだ、との主張で紹介されている SQL コードは、問題のある単語をチェックするためのコードです。

CREATE OR REPLACE FUNCTION is_terrorism (VARCHAR) RETURNS BOOLEAN STABLE AS $$
 SELECT replace($1,'_','') LIKE '%did911%'
     OR replace($1,'_','') LIKE '%support%isis%'
     OR replace($1,'_','') LIKE '%isis%support%'
     OR replace($1,'_','') LIKE '%join%isis%'
     OR replace($1,'_','') LIKE '%isismember%'
$$ LANGUAGE SQL;


CREATE OR REPLACE FUNCTION is_child_exploitation (VARCHAR) RETURNS BOOLEAN STABLE AS $$
 SELECT replace($1,'_','') SIMILAR TO '%ped(o|0)(f|ph)(i|1)le%'
     OR replace($1,'_','') SIMILAR TO '%isa%ped(o|0)%'

SQL 文としてジャンルごとに定義されている関数は、イスラム国(ISIS)への参加を呼び掛ける文字列や、児童ポルノや人種差別・性犯罪やドラッグに関する英単語が含まれる文字列で True を返すようです。

また、単純な単語の一致だけではなく、それら英単語の一部の文字を数字に置き換えるなどしてチェックをすり抜けようとするものもある程度見つけるようになっていました。a を 4 にしたり、 e を3 にしたりという leetspeak と言われる変換ですね。

ユーザー登録のできるwebサービスでは大なり小なりこのようなフィルタリングを行っているとは思います。コードが Hacker News の投稿者の言う通り Twitch で使われているものかはわかりませんが、この SQL で引っかかるような文字列をいくつか入れてユーザー登録しようとしたら、エラーは出ますね。実際には JavaScript レベルでエラーにしているようなので、SQL 文のフィルタは誰かが再現したものかもしれませんし、あるいはそれぞれが同じネタ元のフィルタを参照して作られたものかもしれません。

各関数の名前からどのような性格の「悪い単語」を排除しようとしてるのかがわかります。

関数名 意味
is_terrorism テロ
is_child_exploitation 児童搾取
is_hateful ヘイト
is_harassment ハラスメント
is_violence 暴力
is_tragedy 悲劇
is_selfharm 自傷
is_sexual 性的
is_drugs ドラッグ
is_derogatory 軽蔑的
is_profanity 淫ら
is_blasphemy 冒涜
is_marijuana 大麻
is_sex_insult 性的侮辱

チェックされる単語の一つ一つは、多くが理解して気持ちのよい単語とは言えません。細かく紹介はしませんが、英語での罵倒や悪口の勉強がしたければいい教材となるやもしれません。

ワードフィルタは false positive であるスカンソープ問題も引き起こすので万能の解決法ではありませんが、海外向けにユーザー登録のあるサービスを公開する場合は対策の一つとしてこのようなフィルタを用意することも考えておかないといけないのでしょう。

カテゴリー
データ可視化

各種個人情報が(アメリカの)サービス経由で何度漏洩したか確認できるサイト by New York Times

ニューヨークタイムズが面白い可視化ページを作ってます。

これまで、様々な企業やサービスがユーザーから預かった個人情報を漏らしたり盗まれたりしています。ニューヨークタイムズはそのような事例のニュースを横断的に調べて、過去に何度ぐらい自分の情報が漏れたのかをカウントしてくれるというページを作ったのです。

「賃貸やクレジットカードの作成をしたか?」(クレジットレポート)、「政府系の求人に応募したか?」「これらのウェブサービス(AOLやeBayなどの超大手も)に登録したか?」「健康保険サービスを受けていたか」「(表示されている時期に)クレジットカードやデビットカードで、これらのホテルに泊まったり、これらの店舗でものを買ったりしたか?」などをクリックで答えると、左側には住所やクレジットカード、電話番号やパスワード、などが、それぞれ何回流出されたか、がカウントして表示されます。

対象はアメリカのサービスばかりですが、twitter や LinkedIn、Uber など日本からも多く使われているサービスも含まれていますし、マリオットやハイアットのホテルチェーンに日本やその他の旅行先で泊まり、カード払いした人もいるでしょう。

まあ、流出したことがわかっても、パスワードとかなら変えればいいですが、氏名や生年月日などは流出を無かったことにもできないんですけどね。

日本でも類似の個人情報流出は起こっているので、こんなようなまとめがあれば、素性のよく分からないサービスに色々な個人情報を入力したりする前に、ちょっと考えるようになるかもしれません。

カテゴリー
fun

The Unfappening – セレブ流出ヌードを「安全な」アートに

8月31日に起きた、iCloud に保存された有名芸能人のプライベートな写真が大量にネットに流出した事件は、”Celebgate”(セレブゲート)とか”The Fappening”という名前がついたようです。セレブゲートの方はウォーターゲート事件というスキャンダルからの連想、Fappening は f-の放送禁止用語とhappening(ハプニング)からの造語でしょうかね。

最初に流出情報が出た匿名画像掲示板 4chan や拡散した Reddit の一般への知名度も上がり、その過程では CNN の報道番組が「4chan って誰?」(4chanは人ではなくてwebサイトです!)といった無知を晒して恥をかいたりもしたようです。

The Unfappening は、オランダのアーチストが開いたサイトで、流出したセレブのヌード写真を加工して、NSFW(職場閲覧注意, Not Safe For Work)からSFW(職場閲覧大丈夫, Safe For Work)にするプロジェクトです。

unfappening

サイトでは広く加工写真の投稿を呼びかけ、それぞれの流出写真について一番出来のよいものを選んで並べています。

unfappening-1
(credit: Wendy Deun – Design op Zolder)

サイト名の通り、The Fappening を、”Un-“でなかったことにしよう、ということですね。とても紹介できないような写真を普通にどこでも載せられる写真にするということで、一種のコンテンツの活用といえるかもしれません。

via Geekologie