プログラムブログ

PHP、Database、ネットワーク、サーバセキュリティ

Archive for 7 月, 2007

ソースコードチェックツール pixy

phpで記述したWebアプリケーションにクロスサイトスクリプティング、SQLインジェクションの脆弱性が存在しないかチェックしてくれるツール、pixy

FAQ等読むとまだphp5系には未対応、マルチバイトで書かれたソースはうまく解析できない場合がある、オブジェクト指向で書かれたソースはうまく解析できないなどの問題があるが、ソースを自動でチェックするという発想がすばらしい。

pixy自体はjavaで書かれており、windowsでもlinuxでも動作する。

今回はWindows上でpixyを設定、動作させた。

[準備]

  • pixy3.01 をダウンロード。
  • Windows上で解凍。 
  • ActivePerl インストール
    (必須ではない。パラメータの遷移グラフなど作成したい場合に必要となる)
  • graphvizダウンロード、解凍 http://www.graphviz.org/
    (必須ではない。パラメータの遷移グラフなど作成したい場合に必要となる)環境線数の設定で PATH にgraphvizのbin を追加

[実行]
perl を使わない場合(サンプルのgetstarted.phpをチェック)
(Pixyフォルダで) run-all.bat getstarted.php > getstarted-result.txt
※結果

Number of sinks: 2
Vulnerability detected!
- unconditional
- パスPixygetstarted.php:11
- Graph: xss2
Total Vuln Count: 1

[解説]
getstarted.phpの11行目(echo $b;)にXSSの脆弱性存在
グラフの2に脆弱性 ( Pixygraphs にtxtファイルと dotファイルが存在する。今回はxss_getstarted.php_2_dep.dot)
このgraphsフォルダには変数のフロー図が描かれている。
graphbizを用いて dotty xss_getstarted.php_2_dep.dot を実行すれば表示される。
perlを使う場合
perl run-all.pl getstarted.php > getstarted-result2.txt
※batで実行してもperlで実行しても結果は同じ
——————————————-

Tree図の作成
perl Pixyフォルダscriptstree.pl getstarted.php
※ここでdottyが起動するが大量の警告が発生する(100回ぐらい?)。
ポップアップ内容:

  1. dotty.lefty:
  2. draw language parser error: 18

OKボタンを押し続けると最終的には表示される。(文字コードの問題か?)


もっと簡素化したフロー図

perl Pixyフォルダscriptsquick_cfg.pl getstarted.php
同様にエラーがでる。ただし回数はtree.plより少なめ。
SQLインジェクションのチェックのみ実施
perl Pixyフォルダscriptsrun-sql.pl getstarted.php
XSSのチェックのみ実施
perl Pixyフォルダscriptsrun-xss.pl getstarted.php

1 comment

W-ZERO3で書いたメールが文字化け

初代W-ZERO3を所有しているのだが、今日自分がそこから出したメールが文字化けしていると言われた。原因を調べたのでここにメモしておく。

もともとは友人がPHSから送ってきたメールに返信したところ文字化けした。
で、友人から送ってきたメールが Subject しかなくて本文がなかった(Subjectは日本語)。そのメールに本文を日本語で書いて返信したら Subject が「?????」、本文も「??????????」となってしまった。

送信した文字化けメールの言語設定が “iso-8859-1″ となっていたのが文字化けの原因。結局のところ本文が空のメールの場合、受け取ったW-ZERO3で言語認識に失敗し、本来「ISO-2022-JP」のはずが「ISO-8859-1」とし認識してしまった。そして間違った文字コードでメールを返信してしまったということになる。

本文が空のメールに返信するときは注意が必要だ。

1 comment

php4系サポート終了

php4系のサポートが今年いっぱいで終了するとアナウンスされている。
http://www.php.net/index.php#2007-07-13-1

サポート終了後は2008年8月8日まで重要なセキュリティフィックスのみ対応予定となっているが、迅速な対応は期待できないので4系の人は早めに5系にアップしたほうがよいだろう。

4系から5系へのアップデート方法はこちら。
http://www.php.net/manual/en/migration5.php

No comments

トラックバックはSEO対策に有効か?

SEO対策の重要な要素として被リンク数が挙げられるが、トラックバック送信によって獲得したリンクでも効果があるのか試してみた。

[作業概要]

  • まずはブログに記事を1つ投稿する。
  • この記事の中心となる用語をキーワードとする。
  • キーワードが書かれているブログを探す。
  • 発見したブログからトラックバック用URLを抽出
  • トラックバック送信

※ブログの検索からトラックバック送信までは自作のトラックバックツールで自動実施した。

1日5〜10程度トラックバックを実行し、これを約2週間続けた。
すると当初圏外だった検索順位が、Yahoo 50位、Google 3位、Microsoft 7位まであがった。
検索エンジンはトラックバックリンクを無視するとかnofollow属性がついているためリンクとしてカウントされないなど一部では言われているが、現時点ではトラックバックによるリンクに効果があった。特にGoogleで顕著であった。

1 comment

4travelの旅行検索API

4travelの旅行検索APIを利用してみた。 簡単にデータが取得できる。以下はphpで記述する場合の例(メイン部分のみ抜粋)

$url = "http://api.4travel.jp/Ver1/SearchAlbum.php?format=php&inputcharset=euc&outputcharset=euc&areatype=city";
if($_POST['key1'] != ”)
{
$word = urlencode($_POST['key1']);
$url .= “&keyword=” .$word;
}
$serialized_result = file_get_contents($url);
$ryokouki_result = unserialize($serialized_result);
print “<table class=\”diary\”>\n”;
for($s=0;$s<count($ryokouki_result);$s++)
{
print “<tr><td>\n”;
print “<img src=\”" .$ryokouki_result[$s][picture]. “\”></td><td>\n”;
print “<a href=\”" .$ryokouki_result[$s][albumurl]. “\” target=_blank>”;
print $ryokouki_result[$s][albumtitle]. “</a><br />\n” ;
print $ryokouki_result[$s][description]. “\n” ;
print “</td></tr>”;
} // for
print “</table>\n”;

No comments