register_globals が On の環境でも Off と同様の状態にする方法

  http://www.asahi-net.or.jp/~wv7y-kmr/note/2005-12.html#YMD20051225_PHP_reg ...

  PHP 4.2.0 から register_globals は Off になっているのだけれども,
  古いスクリプトは register_globals が On であることを前提にかかれている場合も多い.
  実際,保守しているものの中にも多数ある.

  以下,上記サイトで公開されている関数を使用することでグローバル変数の汚染については回避できそう.

<?php

function unset_register_globals()
{
    // register_globals が有効でない場合は以降の処理は行わない
    if ( ini_get( 'register_globals' ) ) {
        return;
    }
    // $_REQUEST に GLOBALS が含まれている場合はグローバル変数が上書きされる可能性があるため、処理を終了
    if ( isset( $_REQUEST['GLOBALS'] ) ) {
        exit( 'GLOBALS overwrite attempt detected' );
    }
    // 削除しないグローバル変数名をキーとした配列を作成
    $no_unset = array( 'GLOBALS'  => '', '_GET'    => '', '_POST' => '', '_COOKIE' => '',
                      '_REQUEST'  => '', '_SERVER' => '', '_ENV'  => '', '_FILES'  => '' );

    // グローバル変数として登録される変数名をキーにした配列を作成
    $input = array_merge( $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES,
                          isset( $_SESSION ) ? (array)$_SESSION : array() );

    // 登録されたグローバル変数を削除
    foreach ( array_keys( $input ) as $k ) {
        if ( ! isset( $no_unset[$k] ) && isset( $GLOBALS[$k] ) ) {
            unset( $GLOBALS[$k] );
        }
    }
}
unset_register_globals();

?>

Web サーバのフィンガープリンティングツール httprint

  http://net-square.com/httprint/

  Web サーバにリクエストを送って,Web サーバの種類とバージョンを特定するツール.

  httprint

  手元の機械では 84.34% の確立で Apache/2.0.55 と判別されました.
  うむ,なかなかやるな.

  ちなみに,Apache のログには以下のログが残った.

192.168.1.10 - - [27/Dec/2006:21:47:44 +2700] "\x16\x03" 501 293 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:45 +2700] "GET / HTTP/1.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:45 +2700] "GET / HTTP/1.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:46 +2700] "OPTIONS * HTTP/1.0" 200 - "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:47 +2700] "OPTIONS / HTTP/1.0" 200 - "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:47 +2700] "GET /antidisestablishmentarianism HTTP/1.0" 404 310 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:48 +2700] "PUT / HTTP/1.0" 405 315 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:48 +2700] "JUNKMETHOD / HTTP/1.0" 501 306 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:49 +2700] "GET / JUNK/1.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:50 +2700] "get / http/1.0" 501 299 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:50 +2700] "POST / HTTP/1.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:51 +2700] "GET /cgi-bin/ HTTP/1.0" 403 294 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:52 +2700] "GET /scripts/ HTTP/1.0" 404 290 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:52 +2700] "GET / HTTP/0.8" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:53 +2700] "GET / HTTP/0.9" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:53 +2700] "GET / HTTP/1.1" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:54 +2700] "GET / HTTP/1.2" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:55 +2700] "GET / HTTP/1.1" 400 305 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:55 +2700] "GET / HTTP/1.2" 400 305 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:56 +2700] "GET / HTTP/3.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:56 +2700] "GET /.asmx HTTP/1.1" 404 287 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:57 +2700] "GET /../../ HTTP/1.0" 400 310 "-" "-"

ロック機構付きの LAN ケーブル

  http://www.princeton.co.jp/product/network/ptclplg.html

  PTC-LPLG3/PTC-LPLG5

  3m/5m のものが発売.ところで鍵は誰が管理するのどうか.

JavaScript ハッカーズ・プログラミング Web エキスパートが知っておきたい基本から応用まで

  4896272862
  http://www.amazon.co.jp/o/ASIN/4896272862/todaysnonsenc-22/ref=nosim/
  佐久嶋 ひろみ (著)
  メディアテック出版
  ISBN: 4896272862
  2005/12
  3,024 円

SSL で GET リクエストを送信する方法

% openssl s_client -quiet -connect ホスト:443

  を実行して,

verify return:0

  が返ってきたら HTTP リクエストを送信.

% openssl s_client -quiet -connect gmail.google.com:443
depth=1 /C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:0
GET / HTTP/1.0 (<- 入力する)

HTTP/1.0 302 Found
Location: http://www.google.com
Date: Tue, 20 Dec 2005 00:51:08 GMT
Content-Type: text/html
Server: GFE/1.3
Connection: Close
Content-Length: 151

<HTML><HEAD><TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com">here</A>.
</BODY></HTML>
read:errno=0

- ref.: SSL(443/tcp) で GET / HTTP/1.0
  http://kikuz0u.x0.com/memo/hiki.cgi?SSL%28443%2Ftcp%29%20%A4%C7%20GET%20%2 ...

  上記サイトに載っていたやり方だと 400 Bad Request が返ってくる.

2 倍くらい高速化した Nessus 3.0.0

  http://www.nessus.org/

  おー,どれくらい早くなったかあとで試してみよう.

- via: SecuDiary
  http://d.hatena.ne.jp/hiro-t/20051213#p1

無料でデジタル証明書を取得する

  http://www.atmarkit.co.jp/fwin2k/win2ktips/647freeca/freeca01.html

  Thawte Inc. から S/MIME で利用できる無料の証明書 (Personal E-mail Certificates) を
  取得する方法.

  発行者名が

Thawte Freemail Member

  になるが,サブジェクトには設定したメールアドレスがきちんと入る.
  有効期間は発行から 1 年間.

  無料だけど,IE と Firefox では組み込まれていた.

  また,Becky! からは S/MIME プラグインで署名や暗号化が出来た.

- via: にわか鯖管の苦悩日記
  http://kikuz0u.x0.com/td/?date=20051213#p03

Essential PHP Security のサポートサイト

  http://phpsecurity.org/

  正誤表とかサンプルコードとか.

- Essential PHP Security
  059600656X
  http://www.amazon.co.jp/o/ASIN/059600656X/todaysnonsenc-22/ref=nosim/
  Chris Shiflett (著)
  Oreilly & Associates Inc
  ISBN: 059600656X
  2005/11
  3,161 円

- via: Sooey
  http://www.sooey.com/journal/2005/12/07/72/

リファラスパムは pinappleproxy というプロキシを経由してくる?

  最近リファラスパムが多いのでどうにかしようかと情報を集めていた.
  海外のサイトで見つけた情報では,pinappleproxy というプロキシを経由してくるものが多いらしい.
  そこで,とりあえず以下を .htaccess に仕込んでおいた.

RewriteCond %{HTTP:VIA} ^.+pinappleproxy
RewriteRule .* - [L,F]


  また,以下のページには,リファラスパムのドメインがたくさん載ってる.

- pinappleproxy domains
  http://spamhuntress.com/pinappleproxy-domains/

- Zahariev domains
  http://spamhuntress.com/wiki/Zahariev_domains

XSS (Cross Site Scripting) Cheat sheet

  http://ha.ckers.org/xss.html

  さまざまな XSS の攻撃コードがある.
  これらは全て対応しないとまずいですね.