Hatena::ブログ(Diary)

temitaの不思議空間

2011-10-10

ACTION_SEND を使って facebook に URL とテキストを混ぜる方法

| 18:15 |  ACTION_SEND を使って facebook に URL とテキストを混ぜる方法を含むブックマーク

Android の Intent の話。ここではテキストとURLを区別する。
やってみた人は分かると思うんだけど、
facebook に送る時、 ACTION_SEND で
Intent.EXTRA_TEXTにテキストを入れるとなぜか削除されてしまう。
URL のみを入れた場合はうまくいく。
ではURLとテキストを混ぜるとどうなるかというと、
テキスト部分のみが削除されてしまう。ゴミ仕様。

今度はURLにテキストをスペースなしに繋げてみた。
ちゃんと全部送信される。だけど、URLが開かない。

繋げ方が悪いと思い、「URL + "?これでどうだ"」 としてみた。
こんどは文字部分がすべてURLエンコードしてくれてやがる。
これでは読めない。
なんとかURLを開けて文字を一緒に送れる方法がないかと考えた。

解決ソースはこれ
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,url + "?#上手くいった?" );
startActivity(intent);

バグで無い場合は修正される可能性あり。?は削除しても上手くいくかもしれない。
もっと賢い、SDK 以外の方法ないですか?

追記:ごめんなさい。1日で修正されてしまいました。くうう。

2011-09-26

Androidで独自画像ボタン上にテキストを表示[Android]

06:07 | Androidで独自画像ボタン上にテキストを表示[Android]を含むブックマーク

Trouble:UIの ImageButton を使うと文字が表示できない。

solved:Buttonで作成してBackgroundに@drable/XXXを指定する。
result:好きな画像ボタンの上にテキストを表示することができた。


後で書く。

2010-07-12

エンタメ系オークションを調査してみた。

19:20 | エンタメ系オークションを調査してみた。を含むブックマーク

初めに。これはサービスを批判する気は無く。調査です。(たとえいかさま的要素があったとしても)
とてもおもしろそうなサービスなので使ってみました。サービス名は「ポチオク」(各自検索してください)です。エンタメ系オークションらしいものに手をだしてみた。オークションにエンタメ要素が入ってるだけでなにやらあやしい。最初はただのワンクリ詐欺かと思ったが、ちゃんと会社があるらしい。文体はややベンチャー感がするものの。キャンペーンなど積極的だ。

オークションの形態はほぼ0円からスタートするオークションで興味の引く商品が並んでいて、好きな時に入札できる。しかも、落札結果を見ると1万いくらのモノが1500円前後で落札しているのだ。そこで疑問がでる。

これは詐欺ではないのか?
Q&Aで詐欺ではありませんと2回も書いてあり、詐欺ではないようだ?またサクラや知り合いの参加も一切認めていないと書いてある。ただの詐欺サイトだとつまらないと思ったが、どうやらちゃんとエンタメサービスとして行っているようです。

個人的に信用の為に探った点として

システムの確認

  • 1投票75円。独自の通貨を用いる。一度コインに変えると戻せない&有効期間がある。
  • 1回20秒の延長になる。
  • だれかが投票しつづける限り終わらない。
  • 投票に75円かかるのでユーザではつり上げ行為ができない。管理は運営にまかせられる。
  • オプションの種類。"FREE" は入札手数料なし。"1円" は上昇値一円
  • 10回程度の入札者の履歴が見れる。
  • 過去の落札履歴が見れる。

これで会社は利益が出ている?
一見6800円の商品が入札回数6回で285円なので735円と会社は損をしているように思える。しかし、得をした人は落札した人のみとなり。その他は手数料をとられていて、285×75円で21375-285=21090円の損をしている。当然この損した部分が会社の利益になっているのだ。

つまり入札を繰り返し、つばぜり合いしている限り値段も上昇していく。全員が順番に譲り合えば円満に0円の商品を分ける事ができるはずです。(実際には無理)

それではいつ入札すればいいのか?
オークションが終わる一歩手前がいいのだが、このオークションは入札するたびに値段と時間が増える。入札者がいる限り終わらない仕組みとなっている。入札の仕方も2種類あって、手動入札と自動入札です。自動入札は開始額と終了額を決めて入札回数を決める。たいていはこの自動入札がほとんどを落札している。自動入札二人いる場合はどちらか限度額を超えるまで入札しても無駄になる。そこで自動入札の損にならない限度額が切れる時間に勝負を仕掛けてやるのが一番だろう。

ここの情報だけでは、落選した人の情報があまりない。どれくらいが参加してどれくらい入札しているのか。ここはオークションPSP を見張ってみた。

入札タイプ : 今回の入札 : 他のオクも含めた入札
自動入札:12:12
入札:44:45
自動入札:15:16
入札:4:5
入札:5:13
自動入札:3:8
入札:1:2
入札:2:4
入札:5:16
入札:6:6
入札:4:4
入札:3:3
入札:2:2
入札:1:1

15人ぐらい一つのオークションに参加しているようです。もちろんこの当選者の以外の人は落選で入札代金は没収です。うん万円かけても負けることはありそうです。

サクラは本当にいないのか?
いないと言ってるじゃないか。と思うけどここは探りたい。
サクラとは?
値段をつり上げる行為をいうのだが、一般ユーザは入札のたびにお金がかかるのでむやみにつり上げる事ができないのでさくらはできない。しかし運営がサクラの場合はどうだろうか。入札にも手数料がかかることはない。入札の仕方から完全にサクラとは見破る方法は見つからなかったが、過去の落札を見ているとあやしい者もいくつか見つかった。

4万円のPS3を12万円で落札しているのだ。

コイツはバカなのか?サインでも入ってるの?これは落札履歴に載せてもよかったものだろうか。そうした落札者の名前を探っていると気付いた事がある。ペロXXXとかXXXポチXXとかパグXXXとか。犬の名前が含まれていることが多い!その他にも限度額を超えたアヤシイID、怒らXXX、我にXXX、uzuXXXXXXX。サクラは自動入札で入札するようだ。5000円以下では見かけない。

サクラいるじゃないか!まぁここはあれだよ。UFOキャッチャーにもとれない商品があるってことだよ。もしかしたら本当に15万円ぐらい自動入札設定してるお客がいるかもしれないし。

感想。
思っていたほどあやしいものではなく、システムはしっかりしている(搾取も)。ただ住所変更のページだけhttpsになっておらずセキュリティがなっていなかったので注意したい。また落札できなかった場合の破産額が大きすぎるので危険が伴う。UFOキャッチャーと思えば、気楽にできる程度。ただ運営さんはもうちょっとサクラをうまいこと(投票を分けるなど)しないと落札履歴からばれてエンタメの楽しさを損ねると思う。
あとシステム上、ワンクリックで入札がきまる。コイン自体もオークションに賭けられてあり、うっかりマウスが飛んでクリックしてしまうと払わないといけない事態になる。これはキャンセルできるのだろうか。
運営はツイッターで遊んでいるようなので声をかけて見るのもいいかも知れない。システムがよくできているので、有名な設計者なのかも知れないし。新しいビジネスモデルと思ったので非常に参考になった。
その他にもこういうサービスがあることが分かったので機会があれば比較してみようかな?

以上でエンタメ系オークションの調査でした。

2010-05-20

Webアプリケーションへの攻撃を意識する

01:07 | Webアプリケーションへの攻撃を意識するを含むブックマーク

ウェブ攻撃のいろいろ

  • 概要
  • 被害
  • 予防

XSS(Cross Site Scripting)

  • 動的なWebページにスクリプトを混入させる。
  • 他のページへ誘導、CSRFへの踏み台、秘密情報の窃取、ページ偽装。
  • 入力された値にHTMLタグを許可しない。入力された値を直接表示しない。値の出力にはタグを無効化する。

SQL Injection

  • 不正にデータベースを操作する。
  • 機密情報の漏洩、認証の回避による不正ログイン、情報の改ざん
  • 特殊文字を許可しない。parameterized query(パラメタライズドクエリ)を用いる。できるだけ入力された値を直接使用しない。

second-order SQL injection

blind SQL injection

CSRF(Cross Site Request Forgaries)

  • 不正なスクリプトリダイレクトが仕込まれたページから、別のWebサイト上で何らかの操作(掲示板への書き込みなど)を行なわせる攻撃手法。
  • 意図しない別サイトへの書き込み。
  • サイト外からのリクエストの受信拒否。ヘッダの参照元確認やチェックコードによる一貫性の確認を行う。

ざっくりとした違い

Null Byte Atack

  • バイナリセーフでない関数にNULL バイト("\x00" や "\0" として表される終端文字)を含めて悪意のコードの実行など誤動作を起こさせる。
  • 意図しないスクリプトの実行。
  • 入力データからNULLバイト文字の削除。

Directory Traversal

  • "../../"と相対的にさかのぼり、システム内の任意ファイルへアクセスする攻撃。
  • ルートパスワードなどの窃取。
  • ".."をbasename()などで適切に無効化するか"/"を禁止する。

HTTP Response Splitting

  • レスポンスヘッダーにCRLF(%0d%0a)を含めて二つのレスポンスに分割し不正なヘッダー内容やボディ内容作り出す攻撃。
  • 不正なリダイレクトセッション情報や情報の窃取、XSS、ページの偽装、キャッシュによる被害拡大。
  • ヘッダー内にCRLF(%0d%0a)を許可しない。最近の Apache , Tomcat では改行コードを含むヘッダを禁止している。

Session Hijacking

  • sessionIDやsessionCookieを盗んで他人が確立した通信路を横取りする。
  • 不正ログイン、機密情報の窃取。
  • 類推が難しいセッションIDやクッキーを生成し、セッションIDやクッキーの有効期間を短くする。

Session Fixation

File Upload Attack

OS Command Injection

  • 不正なOSコマンドを入力に埋め込むことによりサーバ上のOSを不正に操作する攻撃。
  • ルートパスワードなどの窃取。OSコマンドの不正な実行。
  • コマンド実行にリクエストされた入力パラメータを直接含めない。入力文字列が正当なものであるかチェックする。

Parameter Manipulation

Brute force atack

  • あらゆる文字の組み合わせて不正ログインを試みる総当たり攻撃。
  • 不正ログイン
  • アクセス間隔の監視。スクリプトからのアクセスを禁止する。登録時に画像認証を含める。

Backdoor & Debug Options

  • 開発用、管理者用の秘密の入り口を探す。
  • 不正ログイン
  • "admin" や "debug=1" など分かりやすい入口を隠す。

Forceful Browsing

おわりに
正式名称かは分かりませんが名称を知っていれば対策も取りやすいはずです。
ユーザの入力を求めるものに特殊文字が必要な場合は少ないと思うので
ホワイトリスト特殊文字を受け入れない(禁止)のが手っ取り早いでしょうか。
よくウェブ攻撃にはサニタイズという言葉が出てきますが、禁止と無効化が混在して
曖昧な表現になっているみたいです。高木浩光さんの記事が参考になります。
http://takagi-hiromitsu.jp/diary/20051227.html

Web攻撃いろいろの詳しくは下の参考を。
参考:順不同
http://www.fortify.com.tw/vulncat/ja/vulncat/sql/header_manipulation.html
http://gihyo.jp/dev/serial/01/php-security/
http://d.hatena.ne.jp/zatsuso/20080209/p1
http://d.hatena.ne.jp/owa-tayo/20100129/1264714595
http://trac.openpne.jp/wiki/pne-spec
http://d.hatena.ne.jp/gallu/20060105/p1
http://www.itmedia.co.jp/enterprise/articles/0506/16/news030.html

2010-05-11

debianでutf-8のLaTex環境を構築

17:04 | debianでutf-8のLaTex環境を構築を含むブックマーク

やっぱり最新の日本語LaTex環境を揃えたいよねということです。
インストールは時間があれば構築できます。私の場合はミスって3時間かかりました。
utf-8環境にはTexLiveとptetex3の2種類あると思うのですが
好みでptetex3が用意されているのでそちらを利用します。

http://www.nn.iij4u.or.jp/~tutimura/tex/ptetex.html
手順としてここから設定をutf-8用に少し書き換えて3種類をインストールを行います
必ず3種類を同じディレクトリダウンロードしてください。

まずptetex3のみを解凍します。私の場合は ptetex3-20090610.tar.gz でした。
かならず最新版を落としてください。
gzip -cd ptetex3-20YYMMDD.tar.gz | tar xvf -

次にディレクトリに入りutf-8を有効にするため、my_option.sample を
コピーして書き換えます。
cd ptetex3-20090610
$ cp my_option.sample my_option
$ vi my_option

KANJI_CODE=UTF8
XDVI=echo
PXDVI=echo
↑の項目の#を解除する

以下が入って無ければ問題ないと思います。※入ってないとmakeをやり直し
# apt-get install gs-cjk、adobe-cmap libxaw7-dev gs-esp、ttf-sazanami flex bison build-essential
gs-cjk、adobe-cmap ←これが失敗したが入れなくても問題ない?

flex ,bisonが入っていないと以下のエラーがでました。
configure: error: no working lexical scanner(lex/flex) found

makeにすっごく時間がかかりますが
$ make all0
$ make otf (OTFパッケージも入れるなら)
$ make babel(pTeXでBabelマクロも使うなら)
$ make font
$ make test

root 権限でインストール
$ su
# make install
# exit

(作業用ファイルの削除)
$ make distclean

これで完了です。後はリンクを張れば使えます。

~/.bashrcの最後にでも
export PATH=/usr/local/teTeX/bin:$PATH
platex='platex -kanji=utf8'
としてできあがり。

使い方。
コンパイル
platex sample-utf8.tex
dviビューワー
xdvi sample-utf8.dvi
pdfに変換
dvipdfmx sample-utf8.dvi

Adobe Readerからダウンロードしてインストール
pdfビューワー
acroread sample-utf8.pdf

ここまでで確認できたことまとめ。
UTF-8LaTex環境の構築
ひらがなと漢字が表示できている事を確認