Next: , Previous: , Up: テキスト   [Contents][Index]


33.27 不審なテキスト

Emacsでは電子メールやWebサイトのような多くの外部ソースを表示することができます。アタッカー(攻撃者)は難読化したURLや電子メールアドレスを使い、それらのテキストを読むユーザーを混乱させて、意図していないウェブページに誘導したり、誤ったアドレスにメールを送信するようユーザーを欺くのです。

これには通常だとASCII文字と似た外観をもつスクリプトの文字(homographs、すなわち綴りは同じでも意味の違う文字)が必要ですが、bdo(bidirectional override: 双方向オーバーライド)や、何かを示すHTMLの背後に別のどこかを指し示すURLを仕込むといった別のテクニックも存在します。

これら不審なテキスト文字列(suspicious text strings)の識別を助けるために、Emacsはテキストにたいしていくつかのチェックを行うライブラリーを提供します(利用可能なチェックの背景となる根拠に関する詳細についてはUTS #39: Unicode Security Mechanismsを参照)。疑わしい恐れのあるデータを提供するパッケージは、表示に際して不審なテキストにフラグを立てるためにこんなライブラリーを使う必要があります。

Function: textsec-suspicious-p object type

この関数はパッケージが使用すべき高レベルのインターフェイス関数である。チェックの無効化をユーザーに許すユーザーオプションtextsec-checkを考慮する。

この関数はtypeのオブジェクトとしてobject(データのタイプはtypeに依存)を評価した際に疑わしいかどうかをチェックする。利用できるタイプおよび対応するobjectのデータタイプは以下のとおり:

domain

不審なドメイン(例: ‘www.gnu.org’)かどうかをチェック。objectはドメイン名(文字列)。

url

不審なURL(例: ‘http://gnu.org/foo/bar’)かどうかをチェック。objectはチェックするURL(文字列)。

link

不審なHTMLリンク(例: ‘<a href='http://gnu.org'>fsf.org</a>’)かどうかをチェック。この場合にはobjectcarURL文字列、cdrがリンクテキストであるようなconsセルであること。リンクテキストにドメイン名が含まれていて、それがURLと異なるドメイン名を指す場合には不審なリンクとみなされる。

email-address

不審な電子メールアドレス(例: ‘foo@example.org’)かどうかをチェック。objectは文字列であること。

local-address

電子メールアドレスのローカル部分(‘@’記号の前の部分が疑わしいかどうかをチェック。objectは文字列であること。

name

名前(電子メールアドレスのヘッダーに使用される)が疑わしいかどうかをチェック。objectは文字列であること。

email-address-header

RFC2822に完全準拠した電子メールアドレス(例: ‘=?utf-8?Q?=C3=81?= <foo@example.com>’)が疑わしいかどうかをチェック。objectは文字列であること。

この関数はobjectが疑わしい場合には、なぜそれが疑わしいかを説明する文字列をリターンする。objectに不審な点がなければ、この関数はnilをリターンする。

テキストが疑わしい場合には、アプリケーションはtextsec-suspiciousフェイスで疑わしいテキストファイルをマークするとともに、textsec-suspicious-pがリターンした説明を、何らかの手段(たとえばツールチップなど)でユーザーが利用できるようにする必要があります。疑わしい文字列にもとづいて何らかのアクション(たとえば疑わしい電子メールアドレスへのメール送信)を実行する前に、アプリケーションがユーザーに確認を求める場合もあります。