院生エンジニアのにっき

  • Change style to Blue
  • Change style to Red
  • Change style to Green
  • Change style to Pink

2008-01-05 正規表現ミスによるSQLインジェクション

現在なぜPHPアプリにセキュリティホールが多いのか?:第5回 まだまだ残っているSQLインジェクション|gihyo.jp … 技術評論社を読んでいるのですが、正規表現の間違いによるSQLインジェクションのいい例がありましたので紹介を。

私はわからなかったのですが、ユーザからのパラメータに対する数値チェックで以下の二つのPHPコードにおける脆弱性についてでした。

  1. if (preg_match('/^[0-9]+$/', $_GET['id'])) {
  2.         $id = $_GET['id'];
  3. }
  4. $res = pq_query('SELECT * FROM product WHERE ID = '.$id);
  1. if (ereg('^[0-9]+$', $_GET['id'])) {
  2.         $id = $_GET['id'];
  3. }
  4. $res = pq_query('SELECT * FROM product WHERE ID = '.$id);


  続きを読む

コメント(0)

2008-01-03 phpMyAdminのタイムアウト時間を延ばす

phpMyAdminは文字のエンコード周りの設定さえうまくいけばデータの簡易チェックとしてとても便利なツールです(最近はクエリのチェックにはシンプルなCSE+ODBCを利用しています)。ただ、以前はconfigファイルの設定をちょっといじればタイムアウト時間を変更することが出来たのですが、最近(私の環境は2.11.2.1です)はちょっと調べないとタイムアウト時間を延ばすことが出来ません。


  続きを読む

コメント(0)

2008-01-02 CakePHP1.2でのDATABASE_CONFIGの設定

CakePHP1.2のデータベースの設定値には

  • persistent
  • port
  • schema
  • encoding

4種類のプロパティが追加されました。

persistentは持続的接続のON/OFF、portは接続の際のポート番号が、schemaが何に使われるプロパティか分からなかったのでちょっと調べてみました。


  続きを読む

コメント(0)

2007-09-14 mixiの生みの親“バタラ氏”が語るMySQLの意外な利用法

TechTargetジャパン:mixiの生みの親“バタラ氏”が語るMySQLの意外な利用法

サービス開始から2ヶ月でユーザ数1万人を達成し、この3年で1110万人にも達したmixiのサーバー構成はLAMPで、安価なPCを1000台連ねる分散構成だそうです。


  続きを読む

コメント(0)

2007-04-16 CakePHPとMySQL、phpMyAdminの挙動

最近CakePHP1.2系列を使ってるんですが、なかなか使える代物になってきました。

以前1.2系列が出現したときはBakeにバグがあり、途中で止まってしまったため「まだたまだ1.2系はだめだな」と思っていたのですが、今になってまぁ使えるレベルになってきたと言えます。


DBの文字化けについてですが、Webプログラマーではプロジェクトの開始と同時に毎回悩まされることかと思います(僕は必ず毎回悩んでいます・・・)。

  • MySQL5.0
  • Apache1.3
  • PHP5(phpMyAdminを利用)

とまぁ標準的な構成なんですが、CakePHPで登録したデータがphpMyAdminで文字化けする現象に出くわしてしまったので解決法を簡単に書いておきます。




今回はphpMyAdminの文字コードを「utf-unicode-ci」にした際に文字列が文字化けせずに表示されることを目標とします。


  続きを読む

コメント(0)

2007-04-10 MySQLのチューニング

ちょっと訳あってMySQLのチューニングなんてのをしています(そこらへんはほんと苦手です・・・)。

http://www.res-system.com/item/550

http://slashdot.jp/journal.pl?op=display&uid=4&id=26710

http://allabout.co.jp/internet/database/closeup/CU20040722A/

ここらへんのサイトを読んで基本的(ごくごく基本的な初期設定レベルですが)なとこは分かりました。

まず、僕のサーバーの設定は

  1. mysql> SHOW VARIABLES;

で見ることができます(当然・・)。それを見た感じ、

  • key_buffer_sizeが8M
  • table_cacheが64

となっていたんでmy.cnfに

  • set-variable = key_buffer=32M
  • set-variable = table_cache=256

と追加しておきました。


ちなみにMySQLの再起動は

  • service mysqld stop
  • service mysqld start

もしくは

  • service mysqld restart

でできます。


サーバー管理者さんにとっては簡単なことでも、僕にとっては30分以上かかる大仕事でした・・・。


もっと勉強しますorz..



  続きを読む

コメント(0)


<< previous
 | 
next >>