2009/07/05

【Flash/ActionScript】navigateToURL()メソッドでJavaScriptを実行すると、history.back()を設定したボタンが効かなくなる件

最近関わっている仕事で、JavaScriptによるhistory.back()によるバックボタンが効かなくなる現象に遭遇しました。調べてみると、Flashファイル内のActionScriptでnaigateToURLメソッドもしくはgetURLメソッド経由でJavaScriptを実行している場合に起こることが分かりました。なお、この現象は、FirefoxやSafariでは発生せず、IE(6,7,8)でのみ発生します。

テストページを下記に準備しました。
http://shimax.cocolog-nifty.com/flash_history/history_start.html

です。

また、Adobe社にバグ報告しました。もし、上記現象をご確認いただけた方で、関心のある方は、このAdobe社のページでvote(投票)をお願いします。

▼現状での推論
Flash Player(ActiveX版)のバグなのか、それとも、IEのバグなのかははっきりしません。

ただ、私は関連性があると考えているのですが、
●[#FP-240] URL Hash added window title in IE - Adobe Bug System
https://bugs.adobe.com/jira/browse/FP-240

で報告されている「URLのお尻に『#』(ハッシュ)があると(#sample)、IEではFlashにフォーカスを与えた瞬間にページタイトルが#sampleになってしまう」問題と同様に、IEのバグでもFlashのバグでも何でもいいから、とにかく直してほしい、というのが開発者の願いだと思います。


http://www.deftrash.com/blog/archives/2006/02/post_18.html

や、
http://d.hatena.ne.jp/nitoyon/20081209/ie_location_hash

にも同様の問題が投稿されています。

このlocation.hash時の挙動と、今回のhistory.back()問題は、同じバグが別の形で現れているものではないかとも感じます。Flash内の履歴管理に何か問題があるのではないでしょうか? IEでは、ページタイトルがHTMLソースで設定されていない場合、URLがタイトルバーに表示されるのは仕様ですが、その仕様にFlashの履歴管理のバグが加わって、おかしなことになっている気がします。




ウイルスチェックが全サービス無料のほか、
 フリーダイヤルによる安心の電話サポートが深夜まで対応している。

| | コメント (0) | トラックバック (0)

2009/06/22

貼るだけで、WEBコンテンツの保護(右クリック禁止・印刷禁止など)ができる新感覚アフィリエイト広告

株式会社プランセスでは、このたび、広告を貼るだけで、右クリック禁止・印刷禁止・テキストのコピー禁止などが可能な、新感覚広告をリリースしました。しかも、うまくいけば、お小遣いも稼げます。売り上げ(税抜き価格)の10%が報酬になるアフィリエイト広告です。

ココログのように、JavaScriptが使えるブログなら、ブログでも利用可能です。例えば、こんな感じで広告を掲載します。

【PR】 PDF保存対策なら「PDF No Save」

たった、これだけです。広告掲載のためには、まずプランセスのオンライン代理店に登録する必要があるので、こちらよりサインアップしてください。

右クリック禁止やテキストのコピー禁止などは、あくまでも簡易なレベルでしかないのですが、アフィリエイト収入が広告のおまけということで考えてもらえるとうれしいです。

| | コメント (0) | トラックバック (0)

2009/05/09

WEBサービスにたまに(?)見られる、いただけない仕様7つ



自分自身もプログラマーですが、やはり利用者の立場になることも多いので、そういう場合、「人の振り見てわが振り直せ」で教訓とさせていただくことも多いです。それにしても、「何で?」と思いたくなることもあること(ぶっちゃけた話、「センス悪い」と感じること)があるのも事実です。

1.過剰な入力チェック(型編)
(フリガナ編)
「私は、お客様がフリガナをカタカナで入力したか平仮名で入力したか知っているぞ」と自慢をしたいのかなんなのか、こういうチェックをしているサイト結構あります。フリガナと書いているのに漢字で入力してきたり(姓名の「名」をこの欄に入れてくる場合、たまにあり。)するのは確かに情報として役に立ちませんが、平仮名かカタカナかが問題になるケースは少ないように思います。ソートや検索する機能を付けたい場合は、平仮名かカタカナで統一されているべきでしょうが、そうであっても、例えばカタカナで入力して欲しいのに平仮名で入力されていたら、プログラムで(サーバ側で)自動的にカタカナに変換してあげたらどうでしょうか?

そもそも、こういう親切な設計にしないでエラーメッセージだけ出すサイトに限って、「やまだ たろう」なり「ヤマダ タロウ」なりの記入例をフォームに記載していない場合が多いです。さらには、「フリガナ」とカタカナで「振り仮名」のことを書いていたらカタカナであり、「ふりがな」と平仮名で「振り仮名」のことが書かれていれば、「平仮名で入力してください」の意味だという暗黙のルールが広くあるかのように勝手に錯覚?しているのかなと感じます。「カタカナで入力しろ」とも一言もフォーム上には書いていない癖して、確認画面では、「フリガナはカタカナでご記入ください」とかノタマウ。大して重要でないサインアップなら、そこで止めたくなります。

(電話番号編)
同じように、電話番号でハイフンを入れて欲しくないなら、「ハイフンは入力しないでください」と最低限、入力欄の近くに書いておくなり、maxlengthを指定して、「ああ、ハイフンは入れないで欲しいという意味だな」と思わせる設計にしておいてほしいです。入力が終わって確認画面に進んでから「電話番号にハイフンは入れないでください」とか言われた日には、カチンと来ます。

ハイフンを入れて欲しくなければ、プログラムでハイフンを削除してからDBに入れればいいことではないのでしょうか? 全角の数字を入れてきたら、半角の数字に変えるのだってあまりにも簡単にできます。また、IE専用になりますが、スタイルシートでime-modeの設定は可能であり、「(一応、)半角文字しか入力できないように」はできます。「a」とか「&」とか数字やハイフン以外の文字が入っていたら、出鱈目入力の可能性もありますし、エラーにすべきでしょうが、「03-8675-1234」なんかは、言いたいことは十分に分かるんじゃないかと思うんですけど、ついつい判別してしまうんですね、プログラムをはじめて間もない頃は。プログラムの教科書をそのまま実践で使っているのが間違いの元?

(番地編)
また、住所の番地の入力方法までチェックしているサイトがあって、困ることがあります。私も実際エラーに引っかかってしまったのですが、ついプログラマーの癖で、「英数字を全角で入力するのは素人の証拠」という観念が頭のどこかにあるので、番地も半角で入力したところ、「半角数字は使わないでください」とか怒られたことがあります。スパマーが脆弱性のあるフォームCGIを探すために出鱈目な文字を入力してくることがあるので、「住所が全て半角英数字だった場合、エラーにする」処理を入れたことは私もありますが、番地の入力方法まで全角・半角チェックって、どうなんでしょうか? SQLインジェクションを気にしているのでしょうか? であっても、半角数字ぐらい許してもらえないでしょうか? どうしても全角文字で統一したいなら、半角の番地は全角にプログラムで変換してもらえないでしょうか?

ただし、入力チェックはプログラムやセキュリティの基本ですから全てを否定するものではありません。例えば、メールアドレスの型チェックはセキュリティの意味合いから、無茶苦茶重要でしょう。ただ、その場合でも、全角英数字は半角英数字に自動変換するぐらいのことはやってあげてもいいと思います。

2.行き過ぎたセキュリティ
かなり特殊なケースだとは思いますが、最近実際にあったのが、ある会員制サイト(有料)を訪問したら、前回ログインしたパソコンと違うかクッキーが消去されているかで確認ができないので、「父親か母親の名前」「本籍地」「誕生日」を入力しろと怒られました。これは、突っ込みどころ満載のサイトである。

まず、クッキーの消去は何も悪いことではありません。セキュリティソフトが削除することも最近はあるし、パソコンの調子が悪くなれば、クッキーを削除することもあります。そもそも、このサイトの人はあまり考えていないようですが、同じ端末でも、ブラウザを変えれば、クッキーは共有されません。また、XPからVistaパソコンに買い換えた場合でも同様です。また、自宅からアクセスした人が会社からアクセスしてはいけないのでしょうか? こういうエラーメッセージを出すサイトは、IDとパスワードを異なる人で共有されては困るとかいうことを心配しているのは分かりますが、設計が悪すぎでしょう。

私もプログラマーとして、こういう依頼をしてくるクライアントに会ったことがありましたが、「こうこうこうだからダメ」と説明しました。それもあってなのか、結局私のところには仕事は来ませんでしたが、私ならお金をもらっても、このような設計のサイトは作りたくないです。(その時のクライアントは、IPアドレスまでチェックする・前回のIPアドレスと比較するとか言ってきましたので、さらにひどいと言えるかもしれません。固定IPの人がどれだけいるのでしょうか? ブロードバンドになって、結構固定に近いことはありますが、このような設計のサイトが増えれば、プロバイダもおいそれとは変えられなくなります。)

IDとパスワードを使いまわされる問題はたしかに深刻ですが、それはログインしてからの作業をこまめにログに残すなどして、同じ時間帯にログインしている人が複数いないかとか、IPアドレスが全然違う人が頻繁に交互にログインしているとかいう情報をつかんでから、(やるにしても)それから証拠を突きつけるべきではないでしょうか? 一律怪しいものは切捨てでは、過剰でしょう。

次に、「父親か母親の名前」の入力ですが、「秘密の質問」の設定項目があったのかもしれませんが、自分はそのとき、父親の名前を入力したのか母親の名前を入力したのかを全く思い出せません。また、サーバ側で完全一致で照合認証しているのか、賢く照合しているのか分からないので、性と名の間に半角スペースを入れたのか全角スペースを入れたか、それとも姓名の「名」だけだったのか思い出せません。両親の苗字は自分と同じことが多いでしょうが、離婚・再婚している場合もあるから違うかもしれないから、「姓」も入力させられたのかなとか考えました)。

結局、「姓(全角スペース)名」が正解だったのですが・・・。だったら、最初から入力欄を二つ準備して「姓」と「名」を別々に入れられるようにしてほしかったです。さらに、本籍地の入力もかなり焦りました。最初、本籍地に都道府県だけ入力したらダメで、結局全部入れてOKになりました。ここでも、番地を全角で入力すべきか半角で入力すべきかで、大いに迷いました。

誕生日の入力は結構オーソドックスですが、このサイトの場合、これがテキストフィールド1つだけでした。どのように入力していいのかさっぱり分かりません。「19**年**月**日」と入力すると、「19**/**/**」の型で入力しろとか言ってきます。「最初から言え!」というか、プルダウンか、せめて、年と月・日は別々に入力できるようにしてくれないと、「年」と書かずに「/」で書けと後から言われても・・・。超能力者でもあるまいし・・・。

3.noreply@~から返信して、メールソフトでの返信は不可・WEB上から再問い合わせしろとか言ってみる
問い合わせをデータベース化するために仕方がないとか理由があるかもしれませんが、それだけでないように思います。要は、再問い合わせしてもらいたくないというのが根底にあるように思えてならない。的外れな回答をしておいて、「そんなこと誰も聞いていません。よく読んでください。」と言われるのが嫌なのか、WEB上で一から入力させる。問い合わせ番号が割り振られ、前回の入力事項は省けるようにしていたらまだしも、全部入力させるサイトが結構あります。

4.ログインしないとメールマガジンの解除ができない
パスワードを忘れているときが結構あり、解除できない。届いたら削除すればいいだけと言われればそれまでですが、そこまでして読ませたいのか?と悲しくなります。

その人専用のワンクリック解除のURLを準備してもらうか、メールマガジンぐらい、メールアドレスの入力だけで解除できるようにして(事後の確認メールは必要です。)ぐらいにしてほしいです。

5.メッセージ欄の文字数制限が厳しすぎ
あるお店にクレームを出そうとすると「300文字以内」とか国語の文章問題みたいな制限がついていて、結局、クレームの抜粋の抜粋を書いて、後は、「電話してきてください」とだけ書くしかありませんでした。私のクレーム・怒りがさらにひどくなったのは当然である。あまりだらだらと書かれても読むのが大変というのは分かりますが、300文字はないでしょう。しかも300文字が300バイトの意味だったりします。

また、ついつい300文字か1,000文字以内かどうかの判別にのみ目が言ってしまいがちですが、何文字ぐらいオーバーしているかというのが結構重要な場合があります。また、文字数と言ってもバイト数のことを言っているのか、それとも全角1,000文字(2,000バイト)の意味のどうなのか、PHPのmb_strlen関数やJavaScriptのlengthメソッドのような文字数カウント方法なのかも分からないので、システム(プログラム)が私のinputを何文字だと解釈しているかという情報は重要になってくる場合があります。「1,000文字以内(2,000バイト)で入力してください。お客様は現在、2,546バイト入力されています。」のようなエラーメッセージがあれば、546バイトだから約275文字ぐらい削らないとなと考えられます。ここまで作りこむのは結構面倒ですから私も後回し(実際にはやらないことも少ないです)にすることが多いですが、できるだけ心がけたいです。

続きを読む "WEBサービスにたまに(?)見られる、いただけない仕様7つ"

| | コメント (0) | トラックバック (0)

2009/04/27

ウイルス対策ソフトの誤検出(Avira Antivir編)



ソフトウェアを開発していると、こちらの努力ではなんともしがたい問題に遭遇することがあります。その1つは、ウイルス対策ソフトの誤検出・過剰反応の問題です。何も悪いことをしているわけでもないのに、「特定のウイルス対策ソフトのみ」が反応する問題です。

誤検出がままあるということをまとめることは、ソフトウェア開発者の弁明に役に立つであろうということで、下記にまとめてみたいと思います。まずは、無料版もリリースされており、「高い検出率」で人気もあるらしい「Avira Antivir」から。

● AntiVirの誤検出について -OKWave
http://okwave.jp/qa4449734.html

● Sohgetsu Blog: Avira AntiVir 誤検出とその報告
http://sohgetsu.blogspot.com/2008/08/avira-antivir.html

● AntivirがPowerpointを誤検出する問題
http://d.hatena.ne.jp/Funmatu/20090115/1231987606

● Bugsなうさぎの憂鬱 : AGtoKML、KME2のHTMLエディタ-Avira AntiVirの誤検出について
http://bugsbunny.cocolog-nifty.com/blog/2008/10/agtokmlkme2html.html


● 教えて!Ziddyちゃん AntiVir PersonalEdition Classicで誤検知?
http://ziddy.japan.zdnet.com/qa4173543.html
「ビッダーズ」のサイトで反応。他のウイルス対策ソフトでは反応無し。

● AntiVir Tips & FAQs - 困ったときは/BBS「誤検出について」
http://www.avpusers.org/faqs/bbs/index.html&thread4
オンラインゲームに反応。

● たっぴ (パソコン質問掲示板) - TR /ATRAPS.Gen はAvira Antivirによる誤検出? -
http://pcq.furu.org/thread.php?thread=112452
gooスティックに反応

● xfy コミュニティ - アンチウィルスソフトの反応について
https://www.xfytec.com/community/modules/newbb/viewtopic.php?topic_id=467&forum=22&post_id=1528

● Avira Antivirの誤検知 — ありえるえりあ
http://dev.ariel-networks.com/Members/inoue/avira-false-positive

● ウイルス対策製品の印象 - Hizumi Blog
http://www.aritia.org/hizumi/2008/03/post-72.html
ActiveRubyに反応。

Avira Antivirの場合、ヒューリスティック機能で未知のウィルスにも対応にしていることが売りの1つであり、それはそれで結構なのですが、高い検出率と誤検出の少なさというのはトレードオフの関係にあるような気がします。「怪しいものは何でもウイルスだ(かもしれない)」と言っておけば、当たる確率が上がるのは、ある意味、当たり前です。まだ、掲示板などで質問してくる人は、「ひょっとしてウイルス対策ソフトの誤検出?」と思ってくれているから良いものの、中には、ウイルス対策ソフトの判定を金科玉条のように信じて、他人に聞くこともなく、勝手に○○のソフトやサービスはウイルスだと早合点している人も少なくないと思われます。これは困った問題だと思います。初心者や自称中級者には使って欲しくないウイルス対策ソフトです。


| | コメント (0) | トラックバック (1)

2009/04/16

特定のURL(ドメイン・パス)でしか開けないPDFファイルを作成する方法

昨年12月、「PDFファイルを保存不可にする方法」という記事の中で、

Acrobat JavaScriptを使ったトリッキーな方法で保存不可にする方法もできないことはないようですが、Acrobat JavaScriptを無効にされていたり、Adobe Reader以外のビューアで閲覧された場合には、そのような対策も無力だったりしますし・・・。

と書いたのですが、その後、あるお客様からのご依頼を解決しようとする中で、この問題をクリアする方法を思いつき、先日、製品化・リリースしました(「お客様の提言・要望」はまさしく「神様の声」のように感じる日々です)。製品名は、「PDF No Save」という分かりやすい名称です。詳細は、

http://www.pdf-nosave.com/aj_detail.html
を参照していただくとして、基本的な機能として、

  • 対策済みのPDFファイルは、特定のURL(ドメイン・パス)でしか正常に表示できません。

  • 閲覧者側に、Adobe® Reader以外の専用ビューアは不要です。

  • Acrobat® JavaScriptを無効にされても、対策は有効です。
    (エラーメッセージのみ表示され、本来のコンテンツは表示されません。)

  • Adobe® Reader以外のPDFビューアに対しても、対策が有効です。
    (エラーメッセージのみ表示され、本来のコンテンツは表示されません。)

Adobe® Reader以外のPDFビューアでは本来のコンテンツが表示されないため、以下の問題もクリアできます。
Adobe® Reader以外のPDFビューア(Brava! Readerなど)では、Acrobat®などで印刷禁止になるように制作したPDFファイルでも、その印刷禁止の設定を無視して印刷できる問題がありますが、この問題をクリアできます。


Acrobat®でPDFファイルにセキュリティをかける際に、恐らく見られたことがあるであろう警告メッセージ:


権限パスワードで設定した制限は、すべてのAdobe 製品に適用されます。ただし、サードパーティ製品の中には、この設定が完全にはサポートされず、適用されないものがあります。そのようなサードパーティ製品を使用している受信者は、設定されている制限の一部を無視できる場合があります。

で指摘されている問題をクリアする方法を、この「PDF No Save」では提供させていただいています。体験版(機能制限版)も準備しています。

もちろん、これで100%安全になるというわけではないのですが、一般的なレベルのユーザーを対象にするには十分な仕上がりになっていると自負しています。もちろん、保存されないに越したことはないので、前回ご紹介した「SHTML PDF保護モード」による保存禁止策も併用していただければ、この価格帯では、類を見ない対策になっていると思います。


| | コメント (0) | トラックバック (0)

2009/01/28

Gmailへ転送したメールが遅延? なかなか受信でいないよ~



【OCN光/ADSL】新規・乗り換え申込み

ウイルスバスター2008になって迷惑メール対策機能が使いにくくなったので、いったんメールをすべてGmailに転送するようにして、迷惑メールチェックをさせてから受信するようにしていました。

今までも何回もあったのですが、メールの受信に遅延が起こっていて、Gmailの受信トレイ(あるいは迷惑メール・フォルダー)に届くのが30分とか1時間とかいう次元でない規模で遅延する場合があります。今日もそんな日のようで(私だけ?)、朝9時半に届いているはずのメールが5時間以上経っても届いていません。

今日はGmailへの転送処理を一時的に休止させていますが、困りました、今後の迷惑メール対策。

なお、だいぶ前の記事ですが、私と同じような悩みをお持ちの人もいるようです。
http://blog.yasaka.com/archives/2006/04/gmail.html

http://private.ceek.jp/archives/003674.html

http://www.shirokuma.info/blog/2006/10/_gmail.html

| | コメント (0) | トラックバック (0)

2009/01/16

失敗しないAmazon.co.jpでの買い物方法



私はよくAmazon.co.jp(以下、Amazon)で買い物をします。一応、価格比較サイトを見ますが、送料まで考えるとAmazonが一番安いというケースが多いからです。しかしながら、今回がはじめてというわけでもないのですが、Amazonで嫌な思いをすることもあります(10回に1回?)。

今回トラぶったのは「在庫状況」の表示方法についてでした。「通常2~3週間以内に発送します。」とあれば、「通常」は付いていますから、通常ではないケースを考えても、「4週間とか1ヶ月で届く」と誰もが考えるのではないでしょうか? ところが、Amazonでは違います。

「在庫あり」と表示されていない限り、全て取り寄せになります。ですから、仮に「通常4~5日以内に発送」「通常2~3日以内に発送」とあろうが、「在庫あり」という表記がなければ、在庫はなく、取り寄せですから、「在庫を確保できず、すいませんがキャンセルさせていただきます。」というメールが届く可能性があるのです。

私は(そして恐らく多くの人が)、この部分の表示を「納期の目安」を表示したものと考えていますから、まさか数日後に、「在庫を確保できなかったので、キャンセルとさせていただきます」などというメールが届くとは考えません。

では、Amazonでいうところの「在庫切れ」というのは何かといえば、ヘルプによると「出版社またはメーカーで在庫切れのため、一時的に注文を受け付けられない場合。商品によっては、入荷しだい、Eメールでお知らせする場合もあります。」ということらしいです。つまり、Amazonにおける在庫状況を指したものではないということです。

「在庫切れ」という表記が別に存在するが故に、逆に「通常4~5日以内に発送」なら「(Amazonの配送センターに)在庫あり」と判断しやすいですが、それは間違いなのです。「通常4~5日以内に発送」というのは、「Amazonの配送センターには在庫が無く、取り寄せになってしまいますが、通常は3~4日で在庫の確保ができますから、4~5日以内に発送できるはずです。でも、100%確保できるということではないので、後で文句言わないでね」という意味になるのでしょう。

Amazonにおける「通常4~5日以内に発送」という表記に、「4・5日と一応書いていますが、6・7日後になるかもしれないので、少々遅れても、文句を言わないでね」という意味もないことはないでしょうが、そのケース以外に、在庫そのものを確保できない可能性があることを示唆する表記だということを知っておかないと、私のように思わぬトラブルに巻き込まれるかもしれません。

私と同じような「誤解」をし、トラブルに合っている人は他にもいるようです。

●一連のAmazonの在庫確保していないけど、「通常2~3日以内に発送します」のこと
http://www.and-works.co.jp/wp/archives/799

ここで紹介されているカスタマーサービスの文言、私のところに来た文言と全く一緒です。別に定型文を準備しておいたり、マニャアル通りに作業することが一律ダメというわけではないのですが、「このたびは~お詫び申し上げます」のような文言は、本当に申し訳なく思っているのか?という感じがします。怒っているときに読むと、余計に腹立たしくなります。

| | コメント (0) | トラックバック (1)

«Google Toolbarの最新版をインストールするとJavaScriptの挙動が変わることがある(window.external関連で)