2008年10月30日木曜日

PHPのスクレイピングツールSnoopyにOSコマンドインジェクションの脆弱性

JVN#20502807: Snoopy における OS コマンドインジェクションの脆弱性

脆弱性を解消したバージョン1.2.4がリリースされている。

ver.1.2.3

$safer_URI = strtr( $URI, "\"", " " ); // strip quotes from the URI to avoid shell access
exec($this->curl_path." -D \"$headerfile\"".$cmdline_params." \"".$safer_URI."\"",$results,$return);

ver.1.2.4
exec($this->curl_path." -k -D \"$headerfile\"".$cmdline_params." \"".escapeshellcmd($URI)."\"",$results,$return);

影響があるのは、ユーザーが任意のURIを入力できる場合で、httpsスキームで始まり不正な文字を含むURIを入力された場合。(ダブルクォートのみは1.2.3でもエスケープされる。)
httpスキームの場合はこの関数(_httpsrequest())を通らないので影響無し。(httpの場合はcURLを使わずにsocketを開いてガリガリ書いている。)

ところでescapeshellcmd()でエスケープしているが、escapeshellarg()じゃなくていいんだろうか?

また、スクレイピングライブラリのhtmlSQLはSnoopyを内部的に使っているが、htmlSQLはhttpスキームのみを受け付けているので影響無し。(改造していない限りは。)

PCで携帯向けのWeb開発をするためのメモ






とりあえずメモ書き。整理できると良い。


モバイル検索結果をPCで見る

  • Googleモバイル検索
    • Googleモバイル検索
    • 携帯でも同じURL(www.google.co.jp/m OR google.jp/m)で使える
    • URL例: http://www.google.co.jp/m?q=[URLエンコードした検索文字列]
    • URLエンコーディングはたぶんUTF-8で
  • Yahoo!モバイル
    • Yahoo!モバイル検索の結果をキャリア別に表示
    • 検索結果から、そのまま携帯ブラウザのシミュレータでの閲覧ができる


シミュレーター(× シュミレーター)


PCサイトを携帯用に変換するサービス


その他


参考資料

Scala調査メモ

Javaから離れて久しいが、最近Scalaが気になる。



感想:
  • 文法が面白い。ループとか。
  • XMLを練り込めるのが面白い。
  • 特にレンタルサーバの場合など、PHPほど気軽に使えなさそう。
  • Apacheのモジュールで動けば気軽に使えるのだが...

2008年10月25日土曜日

Goolge Docsから Bloggerへの投稿でエントリーのタイトルが登録可能になった

中途半端な感じだったGoolge DocsからBloggerへの投稿がだいぶ改善された。

1. Docsで付けたタイトルがそのままエントリーのタイトルとして登録されるようになった。(今までは登録後にわざわざタイトルをコピーして更新していた。)

2. 改行等が反映されない不具合が解消された(気がする)。(今まではDocsからの登録後、Docs側で1回再登録していた。)

その代わり、なぜか本文の先頭に10行くらいの空行が入るようになった。
なぜ?

携帯電話関連の日本製Apacheモジュール

mod_ktai

携帯サイトの場合、キャリア・機種によって絵文字の出力、表示可能データ量、画面の大きさなどが異なる為、キャリア・機種判別、絵文字の出し分け等、携帯サイト向けの知識が不可欠です。
mod_ktaiを使用すると、それらの処理を簡単に行なうことが可能です。
参考:

 ke-tai.org > Blog Archive > ゆめみのmod_ktaiがとうとうリリース、しかも無償利用が可能

 オープンソース研究室: mod_ktaiを試してみました




mod_chxj

国内の主要携帯(3キャリア)向けコンテンツ変換ミドルウェアをApache2.x用のモジュールとして作成します。
CHTMLや通常のHTMLで作成したコンテンツを出力時にUserAgentを見てそれぞれの端末用に変換します(画像はJPG、GIF、PNGからJPG、GIF、PNG、BMPへ)。
QRコード生成機能付。
参考:ke-tai.org > Blog Archive > 携帯向け自動変換用Apacheモジュール「mod_chxj」が0.10系にバージョンアップ



mod_cidr_lookup

mod_cidr_lookupは、アクセスしてきたクライアントのIPアドレスが、起動時に読み込んでおいたCIDRブロック群のいずれかにマッチするかどうかを判別するためのモジュールです。
参考:DSAS開発者の部屋:ケータイやクローラの判別などに使えるmod_cidr_lookupを公開しました

Googleによる自然言語解析検索の実例に関する考察

動的URLへの検索エンジンの対応 『GoogleとYahooの違い』 : 実例 : リアルSEOで、検索されたキーワードの実例として「東京上野駅近く女性一人でも気軽も入れる店」って...。

もう少し精度が高まれば、PowersetのやりたいことはGoogleが実現しそうな勢いだ。

関係ないが、TechCrounchでもそうだが、サイト内にある検索機能より、Google検索の方が対象が広く、かつ表記の揺れに強くて使いやすい。

Googleモバイル検索に携帯サイトとして表示される方法

結果として、下記のようなサイトでGoogleモバイル検索に携帯サイトとしてインデックスされた。
ただし、これが最良の方法とは思えない。これ以外の方法もたくさんあるだろう。


文字コード
Shift_JISでOK。


マークアップ(HTML)
DOCTYPE無しのCHTMLでOK。
XHTMLは試してないが、DOCTYPEは気を付けた方が良さそう。
(GoogleはXHTML Basicを推奨しているが、他のフォーマットでも問題無し?
 参考:携帯サイトのDOCTYPEについてもう一度考えてみる。 携帯ホームページを作ろう! -ちょっと詳しいモバイルサイトの作り方-


MIME-Type
CHTMLなら text/htmlでOK。
XHTMLは試してないが、application/xhtml+xmlらしい。


URL振り分け
無し。PCと携帯で同じURLで、表示内容は別にしている。
ただしNokiaは対応(携帯向け表示)している場合も対応していない(PC向け表示)場合もあり。(両方ともインデックスされた。)
本来はPCと携帯は別のURLにすべき?


IP制限(携帯用IPのみ閲覧を許す)
していない。


半角カタカナ
英数字とカタカナはほとんど半角に変換して表示している。


絵文字
使っていない。


ページのファイルサイズ
携帯向けに小さくしてくる。


Sitemap
Googleにモバイルサイトマップを登録した場合も、登録しない場合(ただしPC用サイトマップは登録済み)も、両方インデックスされた。


Googleモバイル検索にインデックスされているかどうかは、携帯版Google検索で"site:example.com"で検索すれば分かる。
Yahoo!モバイル検索はYahoo!モバイルで同様に調べられる。

Yahoo!モバイル検索ではau向けは問題ないが、docomoとSoftBank向けで、インデックスされていたりされていなかったり...。


参考(今後改善するための参考として):
 携帯サイトのDOCTYPEについてもう一度考えてみる。 携帯ホームページを作ろう! -ちょっと詳しいモバイルサイトの作り方-
 モバイル検索エンジンのインデックス対策 - 携帯SEO・ケータイ検索エンジン最適化 - ププアブログ
 Googleモバイル(googlebot-mobile)にインデックスさせる - 携帯検索エンジンSEO - ププアブログ

2008年10月13日月曜日

郵便番号検索APIのまとめ

無償のもののみピックアップ。
住所からの検索ができるものが意外に少ない。



(2011/07/21 追記)
今ならGoogle日本語入力のAPI(Google CGI API for Japanese Input)を使うという手もある。
参考:floatingdays: Web form用入力ヘルパー JavaScriptライブラリいろいろ
サンプル:GAddress Finder 動作サンプル - ゼロと無限の間に

2008年10月3日金曜日

Windows用のフリーのバックアップツール × 3

個人的には、BunBackupが見た目が分かりやすくて使いやすい。

  • BunBackup
    • シンプルで分かりやすいGUI
    • パソコンに詳しくなくても使えそう
    • ミラーリングも可能(デフォルトでは非表示メニューになっている)
    • コマンドラインからの実行も可能 (参考:BunBackup FAQ
      "BunBackupへのパスBunBackup" /AUTO:"BunBackup設定ファイル(*.lbk)へのパス"
  • FastCopy
    • 「Windows系最速(?)のファイルコピー&削除ツール」
    • 一般の人には最初は少し分かり辛いかも
    • 右クリック時に表示されるメニューからFastCopyを呼び出せるのが便利そう
    • 常駐させて同期させるなら便利そう
    • コマンドラインオプションは豊富
  • Fire File Copy
    • 「ファイルのコピーや移動を「高速に、しかもガリガリという音を立てずに行おう」という、ちょっと珍しい(?)ツール」
    • 大容量のファイルコピーに向いている?
    • コマンドラインオプションは一番多そう(参考:コマンドラインオプション

Flickr services (Flickr API)で写真検索

写真検索のマニュアルはFlickr Services: Flickr API: flickr.photos.search

必須のパラメータは api_key。

キーワード的なものでの検索のパラメータは text。

sortは、

  • デフォルトは date-posted-desc
  • ただし radial geo query の場合は指定したポイントからの ascending distance
  • 指定可能な値
    • date-posted-asc
    • date-posted-desc
    • date-taken-asc
    • date-taken-desc
    • interestingness-desc = 人気の高い順
    • interestingness-asc

licenseで指定する値は、Flickr Services: Flickr API: flickr.photos.licenses.getInfoのExample Response欄を参照。


PHPなら、Serialized PHP Response Formatでの取得が一番手軽そう。

CakePHP初心者のための Tips (CakePHP 1.2)






自分用のメモ。



本家のマニュアル:The Cookbook :: 1.2 Collection :: マニュアル







URLでパラメータを受取る






AppControllerの記述例


<?php

class AppController extends Controller {

public $components = array('foo');

}




  • AppControllerは、CAKE_HOME/app/app_controller.php に置く。







DBを使わない場合の設定







Controllerでのset()を一度で済ます






ControllerからViewにデータを渡す方法




Pagesコントローラについて




レイアウト用のファイル






エレメント






FormHelperの使い方






特定のページでしか使わないCSSやJavaScript



  • layoutでこれらを出力する場所に「echo $scripts_for_layout;」する。


  • HTML部分を書いた後でもCSS等を指定できるのは便利。


  • CSSとJavaScriptを別の場所に出力はできなそう。


    //link to webroot/css/foo.css

    $this->addScript($html->css('foo'));

    //include webroot/js/bar.js

    $this->addScript($javascript->link('bar'));

    //write Code Block of JavaScript

    $this->addScript($javascript->codeBlock("alert('Hello! CakePHP.');"));







翻訳(GetTextの使い方)


ブログ アーカイブ

tags