前記事に引き続き、JSONP&Javascript&UserID守秘義務関連ネタ。
楽天ウェブサービスなどが提供しているJSONP形式の商品データは、Javascriptで呼び出すことができます。
しかし、Javascriptだと、スクリプトコード上のUserIDを完全に隠すことはできません。
難読化(ぱっと見では読めない)はできますが、それなりの知識がある人なら、見破ることは可能です。
Yahoo Pipesを利用して、解決する方法を思いつきました。
そもそもおかしい?
JSONPデータを配布しているのにもかかわらず、UseIDに守秘義務を課すサービスに、違和感を感じます。
高速道路のスピード制限が100kmなのに、180kmまでスピードを出せる自動車ってどうなの?と同じような感じでしょうか?
当方のブログパーツは、スクリプトコード内に難読化されたUserIDが書き込まれていて、普通には読めないような対応をしています。しかし、これは完全な対策ではありません。
プログラムが組める方は、サーバサイドに設置したデータ取得用のスクリプトを中継すれば、UserIDを完全に守秘してデータを取得できます。
けど、これではJSONPを配布している意味がないですよね。
それに、この方法はプログラム知識がないと利用できません。
Yahoo! Pipesを利用
そこでYahoo!Pipesというサービスを利用した対策を考えました。プログラムができない人でもOKです。
Yahoo! Pipesはウェブ上のデータを取得して、RSSやXML、JSONなどのデーターに変換してくれる太っ腹のサービスです。
取得先のURLや、データーの加工などは、インタラクティブな管理画面上から、電気製品をコンセントにつなぐような感覚で、くみ上げることができます。
詳しい利用方法についてはこちらが詳しいです。
http://netafull.net/lifehack/025274.html
http://chikura.fprog.com/index.php?UID=1175617938
Yahoo pipesを経由してデータを取得すれば、UserIDを隠せます。Input dataのモジュールの中の、「Private String」にUserIDを入力すれば、自分以外の人は、この値を読むことができません。
つまり、「Yahoo pipesでクエリを生成してデータを呼び出し&取得し、JSONP形式で吐き出す」ことで、UserIDを隠すことができるわけです。
設定例については、当方のブログパーツ「楽市360」の、「セキュリティ強化版ブログパーツ設定」を参考にしてみてください。
Yahoo Pipesはすばらしい
Yahooはなんでこんなにすばらしいサービスを無料で提供しているのでしょう。
もちろん利用制限はあるようです。常識的な利用方法であれば問題ないみたいです。
http://discuss.pipes.yahoo.com/Message_Boards_for_Pipes/threadview?m=te&bn=pip-DeveloperHelp&tid=3783&mid=-1&tof=-1&rt=2&frt=2&off=1#-1
10分程度のキャッシュをしてくれるようです。ウェブサービスへの負荷を減らしてくれるため、助かります。
+++
とはいっても、Yahoo Pipesを利用しても、「JSONPを配布しておきながら、UerIDへ守秘義務を課す」という矛盾は解決しないんですけどね。
結局、サーバーサイドの仕組み(Yahoo Pipes)を中継してデータを取得するという、超無駄なことをしています。
規約を厳密に尊守すれば、今回のような方法をとることがベストです。
しかし、現実的には、当方のブログパーツのように、いわゆる「難読化」をしておけば良いと思います。
第三者にUserIDが漏えいして悪用された場合、UseIDを無効化しても意味がないと思います。そういった輩はUserIDをたくさん集めていると思いますので。アフィリエイトIDを無効化したほうが、効果的です。
無難に事を進めたいという方は、参考にしてみてください。
コメント