phpで記述したWebアプリケーションにクロスサイトスクリプティング、SQLインジェクションの脆弱性が存在しないかチェックしてくれるツール、pixy。
FAQ等読むとまだphp5系には未対応、マルチバイトで書かれたソースはうまく解析できない場合がある、オブジェクト指向で書かれたソースはうまく解析できないなどの問題があるが、ソースを自動でチェックするという発想がすばらしい。
pixy自体はjavaで書かれており、windowsでもlinuxでも動作する。
今回はWindows上でpixyを設定、動作させた。
[準備]
[実行]
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回ぐらい?)。
ポップアップ内容:
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
初代W-ZERO3を所有しているのだが、今日自分がそこから出したメールが文字化けしていると言われた。原因を調べたのでここにメモしておく。
もともとは友人がPHSから送ってきたメールに返信したところ文字化けした。
で、友人から送ってきたメールが Subject しかなくて本文がなかった(Subjectは日本語)。そのメールに本文を日本語で書いて返信したら Subject が「?????」、本文も「??????????」となってしまった。
送信した文字化けメールの言語設定が “iso-8859-1″ となっていたのが文字化けの原因。結局のところ本文が空のメールの場合、受け取ったW-ZERO3で言語認識に失敗し、本来「ISO-2022-JP」のはずが「ISO-8859-1」とし認識してしまった。そして間違った文字コードでメールを返信してしまったということになる。
本文が空のメールに返信するときは注意が必要だ。
1 commentphp4系のサポートが今年いっぱいで終了するとアナウンスされている。
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
SEO対策の重要な要素として被リンク数が挙げられるが、トラックバック送信によって獲得したリンクでも効果があるのか試してみた。
[作業概要]
※ブログの検索からトラックバック送信までは自作のトラックバックツールで自動実施した。
1日5〜10程度トラックバックを実行し、これを約2週間続けた。
すると当初圏外だった検索順位が、Yahoo 50位、Google 3位、Microsoft 7位まであがった。
検索エンジンはトラックバックリンクを無視するとかnofollow属性がついているためリンクとしてカウントされないなど一部では言われているが、現時点ではトラックバックによるリンクに効果があった。特にGoogleで顕著であった。
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”;