JavaScriptでアラビア語の文字列を判定してiOSとMacOSXのクラッシュを防ぐ方法

twitter_arabic

最近アラビア語の文字列がWebページ内にある場合、iOSとMac OS Xだとブラウザやアプリがクラッシュしてしまう問題が話題になっている。

アラビア語の文字列でアプリがクラッシュ、iOSとMac OS Xに問題発覚
http://www.itmedia.co.jp/news/articles/1308/30/news034.html

ユーザー側が文字列を入力して投稿できるサイトだとアラビア語の文字列を入力してサイト内に表示することも可能だ。その際に問題になるのが悪意をもった第三者がブラウザやアプリなどをクラッシュさせる目的で意図的に入力される恐れがあることだ。(現在Twitterではこの問題を修正済み)

これを防ぐためにJavaScriptで投稿前に文字列の中にアラビア語の文字列があるか判定する必要がある。

やり方は簡単だ。アラビア語のunicode文字列\u0600-\u06FFの範囲にマッチしているかどうかを判定するだけで済む。

以下のサンプルではテキストフィールドにアラビア語の文字列を入力して投稿ボタンを押した場合、「結果:アラビア語の文字列が入っています。」が表示される。

Twitterのように世界的に利用されているサービスであればクラッシュの要因になる特定のアラビア語の文字列のみを対象にするべきだが日本のサイトであればアラビア語の文字列が投稿できなくても支障のがないサイトがほとんどであるため安全と確認作業の短縮化のためにもアラビア語の文字列すべてを投稿できないようにしたほうが作業効率が良い。