ファイルの排他処理

PHP

以下の文で誤解を招くような表現がありましたので、修正しました(2009.06.15)。 スクリプトで変数名に間違いがありましたので、修正しました(2009.09.27)。3年くらい前にテストで書いた、カウンタの処理スクリプトです。2種類書いていたので掲載してみます。…

stream_set_write_buffer() を実行しても効果がない

PHP

PHPのfgetcsvやfputcsvでファイルを扱う時の排他処理(donkのPHP日記)を読んで、昔 stream_set_write_buffer() について調べていたのを思い出しました。stream_set_write_buffer() は、「指定されたストリームのファイルバッファリングを有効にする」という関…

UTF-16(BOM 付き Little Endian) を mb_convert_encoding() で変換すると文字列が壊れる

前の項目からの続きです。 基本的に、PHP 5.2 1 以降(正確には 5.2.8 以降)では、mb_check_encoding() が false を返す場合、以下も false を返します。

mb_check_encoding() は UTF-16(BOM 付き Little Endian) を正しく検証できない

確認した PHP のバージョンは PHP 5.2.9 です。

第43回 PHP 勉強会@関東に参加してきました

今ごろな気がしますが、5/29(金)に開催された第43回 PHP 勉強会@関東に参加してきました。会場を提供してくださったノッキング様、どうもありがとうございました。勉強会の内容は他に方が詳しく書いておられますので、そちらを参考にしてください。勉強会の…

POSIX 正規表現関数が PHP 5.3.0 から非推奨になっている

PHP

第11回■制御文字や不正な文字エンコーディングによるぜい弱性を知ろうという記事に、以下のような記述があったので、PHP マニュアルを調べていました。 PHPなどのマニュアルを見ても,関数ごとにバイナリ・セーフに関する説明がないからだ。ereg関数のリファ…

array_unique() のデフォルトの挙動が元に戻ります

PHP

id:hnw さんが既に書いておられますが、array_unique() のデフォルトの挙動が PHP 5.2.8 以前と同じに修正されることになりました。PHP 5.2.10 以降で反映される予定です。 http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.66&…

php 5.2.9 で修正された mbstring 関係のバグをまとめました

PHP 5.2.9 で mbstring 関係についても多くのバグが修正されました。そのあたりについて、調べたことを PHP の mbstring に関するメモのバグ・セキュリティ問題にまとめました。何か間違いや気付いたことなどがあれば、コメントなどで教えてください。今回の…

php 5.2.9 で array_unique() のデフォルトの挙動が変更

PHP

PHP 5.2.9 がリリースされましたが、少し気になったのでメモしておきます。 array_unique() の挙動が変更されています。array_unique() に第2引数(sort_flag)が追加され、ソート方法が指定できるようになりました。 以下のようにデフォルトが SORT_REGULAR …

PHP におけるクロスサイトスクリプティングの脆弱性(JVN)

PHP 5.2.7 以前で display_errors = On になっている場合、エラーメッセージに任意のスクリプトを実行される問題があったそうです。 参考 JVN#50327700 PHP におけるクロスサイトスクリプティングの脆弱性 (JVN) JVNDB-2008-000084 PHP におけるクロスサイト…

CVE-2008-5557 - PHP mbstring buffer overflow vulnerability

mbstring 関係の関数で HTML エンティティを含むユニコード文字列を変換をした場合に buffer overflow を起こす可能性があるそうです。 影響を受けるバージョン: PHP 4.3.0 以降、PHP 5.0.0 以降 修正されたバージョン: PHP 5.2.7 および PHP 5.3.0 alpha 3(…

指定した年月の第[1-5][日-土]曜日の日付を求める

PHP

第38回 PHP 勉強会の id:hnw さんの発表資料を読んでみました。 http://d.hatena.ne.jp/hnw/20081220PHP はバージョンごとに細かい仕様変更、修正があることが多いので、できる限り前バージョンをそろえるのには同意です。例として、strtotime() の問題につ…

第3回 PHP 懇親会に参加してきました

PHP

11/9 に開催された第3回 PHP 懇親会に参加してきました。会場のファンデリ様、幹事の LIND 様、どうもありがとうございました。発表資料は以下にあります。紹介された handsout.jp にアップロードしてみました。http://handsout.jp/slide/896資料の中で何か…

PHP 4.4.9 で修正されていない mbstring 関連のバグをまとめてみました

リストに5項目(5.〜9.)を追加しました(2008.11.09)。2008.08.08 に PHP4 系の最終版である PHP 4.4.9 がリリースされました。今後は、PHP 4.x はリリースされることはなく、最新の PHP 5.x に移行することが推奨されています。 同じ日にあった PHP4 送別会に…

第2回 PHP 懇親会に参加してきました

PHP

3/16 に開催された第2回 PHP 懇親会に参加してきました。前回、用事で参加できなかったので、良かったです。 参加者全員が発表ということで、いろいろな話が聞けました。おかげさまで楽しい時間を過ごせました。その際に発表した資料を以下にアップロードし…

PHP 拡張勉強会に参加してきました

PHP

今さらですが、1月22日にあった PHP拡張勉強会 に参加してきました。 すぐに PHP 拡張で何か欲しいものというのはないのですが、昔に比べて簡単に作れるようになっていますね。なかなか楽しい勉強会でした。 次も是非参加したいと思います。勉強会の中で、Co…

PHP の mbstring に関するメモを書いてみました

年末、年始に少し時間があったので、PHP の mbstring についていろいろとまとめてみました。 少しはまとまってきたので、公開します。 PHP の mbstring に関するメモ 何か間違いなどがあれば、メールやここのコメントで教えてください。

the Month of PHP Bugs

以前、Month of PHP Bugs and PHP 5.2.1 において、3月に1日1つずつ PHP のセキュリティ問題を公開していくという話がありましたが、開始されていました。 the Month of PHP Bugs(http://www.php-security.org/) 現在、以下の3つが登録されています。しばら…

PHP 4.4.6 の ChangeLog 和訳

PHP

PHP 4.4.6 が公開されましたので、PHP 4.4.6 の ChangeLog を和訳してみました。 間違いや誤訳を見つけたらコメント欄などで教えてください。英文付きの PHP 4.4.6 ChangeLog 和訳も作成してみました。 PCRE (Perl 互換の正規表現拡張モジュール)のバージョ…

PHP 4.4.5 の ChangeLog 和訳

PHP

PHP 4.4.5 が公開されましたので、PHP 4.4.5 の ChangeLog を和訳してみました。 PHP 5.2.1 に比べて大くはありませんでしたので、以下にも載せておきます。誤訳や間違いがあると思いますので、間違いや誤訳を見つけたらコメント欄などで教えてください。英…

mbstring 関係

PHP

PHP 5.2.1 に CP932 系エンコーディングの追加パッチが適用 ChangeLog などには書かれていませんが、PHP 5.2.1 では、mbstring に CP932 系エンコーディングの追加パッチが適用されました。PHP 5.2.1 からは CP51932、ISO-2022-JP-MS が使用可能になっていま…

PHP のセキュリティ関係のリンク

PHP Multiple Vulnerabilities (Secunia) PHP Security From The Inside (Security Focus) Stefan Esser へのインタビューです。PHP のセキュリティ問題に関していろいろ興味深い話がされています。 Month of PHP Bugs and PHP 5.2.1 3月から1日に1つずつ PH…

memory_limit

PHP

PHP 5.2.1 から --enable-memory-limit がデフォルトで有効になりました。configure のオプションからも外され、memory_limit は無効にはできなくなっています。また、php.ini のデフォルトが memory_limit = 128M になっています。 今まで memory_limit を…

PHP 5.2.1 公開

PHP

少し前になりますが、PHP 5.2.1 が公開されました。 http://php.net/ http://php.net/releases/5_2_1.php http://php.net/ChangeLog-5.php#5.2.1 多くのセキュリティ問題の修正が行われていますので、PHP 5.2.0 以下の PHP 5.x を使用している場合はアップグ…

PHP 5.2.1

PHP

もうすぐ PHP 5.2.1 が公開されそうです。 おそらく、これ以上大きな変更はないとないと思いますので、PHP 5.2.0 以降で気になった部分を何回かに分けてメモしておこうと思います。 何か間違いなどありましたら指摘してください。

Cookie に HttpOnly 属性を付加

PHP 5.2.0 以降では、Cookie に HttpOnly 属性を付加することができるようになりました。 ブラウザが対応していれば、ブラウザ側では、Cookie に対して通常のアクセスのみ(HTTP を通してのみ)が可能になります。 Javascript などのスクリプトから Cookie に…

allow_url_include

allow_url_include は PHP 5.2.0 から追加された設定です(デフォルト無効[Off])。 このオプションが有効になっている場合は、include(), include_once(), require(), require_once() で URL 対応の fopen ラッパーが使用できます。 PHP マニュアル: allow_ur…

data: ストリームラッパー

php 5.2.0 から data: ストリームラッパーが利用できるようになりました。 PHP マニュアル: Data (RFC 2397) http://php.net/wrappers.data 使いようによっては、おそらく便利な機能ですが、include() や require() に任意の値の入力を許していると、php://i…

1から100まで10行*10行の表

PHP

http://www.ganchiku.com/2006/09/jinriki_hatena_php.html から。 面白そうだったので、考えてみました。 \n"; $x = 0; while ( ++$x < 11 ) { echo "<tr><td>" . implode( "</td><td>", range( 10 * $x - 9, 10 * $x ) ) . "</td></tr>\n"; } echo "</table>\n"; ?>ワンライナーにすると以下の…

最近のセキュリティ問題修正

最近、多くのセキュリティ問題とバグの修正が行われています。 PHP 4.4.3, PHP 5.1.5RC1 最低でも PHP 5.1.4 か PHP 4.4.3 にアップデートすることが推奨されています。 PHP 5.1.5RC1 でもいくつかのセキュリティ問題が修正されています。 PHP 4.4.3 http://…