PHP6移行で増える脆弱なWebアプリ(yohgaki's blog) を読んで、結構気になったので、調べてみました。調べてみた結果、私には特に問題となるような箇所は見つけられませんでした。調べたことについてメモしておきます。 問題 PHP6移行で増える脆弱なWebアプリ(yohgaki's blog) で、PHP 6 への移行で脆弱な Web アプリケーションが発生すると指摘されています。その理由として、以下の2点が挙げられています。 mb_check_encodingで全ての入力文字エンコーディングが正しいかチェックしていない PHP6のhtmlentities/htmlspecialcharにはマルチバイト文字チェックコードが削除される http://blog.ohgaki.net/php6-web さらに、PHP 5.3 でも問題があると書かれています。 追記:PHP5.3のコード
PHP 5.3は2009/6/30リリースされた最新のPHPです。PHPの基本的なバージョン付けのポリシーでは、マイナーバージョンで機能追加や細かい仕様変更が行われ、言語機能を拡張する場合にメジャーバージョンを更新することになっています。 しかし、PHP 5.3はマイナーバージョンアップですが機能追加や細かい機能変更が施されたバージョンではありません。言語機能が拡張されたメジャーバージョンアップと言ってよいような変更が行われたバージョンです。 PHP 5.3とPHP6 PHP 5.3にメジャーバージョンアップと言ってよいような変更が追加された理由はPHP6との互換性維持です。 PHP 6は正式にUnicodeがサポートされるようになります。Unicodeがサポートされる、ということは文字列型に文字列を保存すると文字列がUnicodeとして処理されることを意味します。つまり、日本語の1文字が
2009/05/19 00:57 ※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】 id:moriyoshi から許可が出たので、2009年4月25日に行われたDjango Hack-a-thonのおまけ「PHPのすべらない話」の動画を一般公開しちゃいます。 PHP自体のコミッタによるPHPへの愛満載の動画です。 今までFlipClipで超近い人グループに対して公開していたのを勿体ないとぼやいたところ許可が出ました :) 手持ち撮影なので、酔いやすい人は注意してください :) きっと、moriyoshiの滑らないシリーズは続くんだろうなw Prev Entry Google API Hack-a-thonに行ってきました。 Next Entry もっと気軽に弁護士を使うべきだ
平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 本件に関するお問い合わせはこちらよりお願いいたします。
もともとPECLにあって、PHPのバージョン5.2.0から標準に組み込まれたfilter拡張モジュール。URLのクエリ文字列やPOSTされた入力文字列の妥当性検査と「サニタイズ」という2つの役割を果たすもので、また突っ込みどころがいろいろあるんだけど、まあ利用法によってはそれなりに便利なんだと思う。で、個人的には使わないな、とスルーしていたんだけど、その拡張モジュールの提供するfilter_var()という関数がメールアドレスの妥当性検査にも利用できるという話を今回の騒動で知ったので、ちょっと中身を見てみることにした。 ちなみにfilter_var()自体は、指定されたフィルタの種類が妥当性検査フィルタだった場合には、妥当な場合に第1引数に与えられた値そのものを、妥当でない場合にfalseを返すことになっている。 <?php var_dump(filter_var("...aho...@e
Bug #46478でid:hnwさんに報告していただいたバグを修正しようと思って作成したものですが… そもそもこのバグを作ったのは私で、5年くらい前の話になりますが、HTML4.0でサポートされている実体参照のテーブルではなく、Unicode 1.1 以降は obsolete となっている SGML マッピングを採用してしまったのが事の発端であり、若気の至りなわけです。 例えば ┌|∵|┘ このようなはにわのAAが ┌|∵|┘ になってしまうところから推し測られるように、日本中のユーザサポートの方々のCPU時間を無駄に浪費させるような、凶悪極まりないバグとなっています。 ∵などでググることで、影響の大きさが分かると思われます。 潔くfaviconの絵のような髪型にしたのでどうか許してください m(__)m vArr 8661 ⇕ lAarr 8666 ⇚ rA
「blog.plastik.jp » PHP5 の fgetcsv() で読み込み内容が腐る現象」という記事を読みました。fgetcsv()だとSJISのCSVファイルがうまく読めないので、UTF-8に直してテンポラリファイルに保存してfgetcsvで読み込む、という筋書きのようです。 ちゃんとtmpfile()を使っていたりしてナイスなコードだと思います。でも、すぐ不要になるデータをディスクに書き込むのはイマイチじゃないでしょうか。ここはメモリに書いた方がカッコいいと思うんです。僕なら下記のようにします。 <?php $data = file_get_contents("example.csv"); $data = mb_convert_encoding($data, "UTF-8", "Shift_JIS"); $fp = fopen('php://memory', 'r+'); fw
前回の Hello World のサンプルプログラムで一通りの PHP Extension の作成手順を見てきました。しかし helloworld() の様に引数も返値も無い関数だけではプログラミング言語として不便ですので今回は PHP と PHP Extension におけるデータタイプの詳細と引数、返値の渡し方について見ていきましょう。 PHP のコードから C言語で書かれたコードへとデータをやり取りする上で「型」についての疑問が浮かび上がります。動的形付けされた PHP の変数を静的に形付けされた C言語で扱うにはどうしたらよいのでしょうか。 まずは、PHP 内部でのデータ表現を知るために PHP のソースを覗いて見ましょう。 php-x.x.x/Zend/zend.h より typedef union _zvalue_value { long lval; /* long value
PHP で汎用的なライブラリを作成するフレームワークには大きく分けて2種類あるようです。 ひとつは PEAR のように PHP でクラスライブラリを作る方法、もう一つが今回紹介する PECL の様に PHP 自体を拡張するモジュールを書く方法です。 なぜ PHP Extension ? ひとつは、過去に C で書かれた既存のライブラリを流用したい場合に PHP Extension を作成すれば自然に PHP のコードに結合することが出来ます。また、PEAR の様に PHP で書いたコードと比べると若干高速になります。 それでは実際に helloworld という名前の PHP Extension を作成してみましょう。PHP のソースを展開すると php-x.x.x/ext というディレクトリがありますので $ cd php-x.x.x/ext $ ./ext_skel --extname
今回は PHP Extension でクラスを実装する方法を紹介します。 クラスと言えばオブジェクト指向によるプログラミングに欠かせないシステムであり、PHP にももちろんこの仕組みが用意されていることはご存じかと思います。 クラスを実装するにあたり、インスタンス、プロパティ、メソッドなどと言ったキーワードが登場してきますが、これらをどの様にして PHP Extension で実装していくかを見ていきましょう。 最初は PHP4 と PHP5 での PHP Extension の実装方法の違いなども紹介していくつもりだったのですが、PHP4 と PHP5 でクラスに関する仕様が大きく変わっており PHP Extension の実装方法もまた大きく異なっていることを知りました。残念ながら今回は PHP5 での実装方法に限定させた頂きます。 クラス設計 まず最初に今回どの様なクラスを作成するか
追記(2009/02/28 15:35):ソートする配列の要素が数値または数値形式の文字列のみの場合は、<、==、>が推移律を満たすので、この記事のような矛盾は起こりません。念のため。 オヤジギャグがこらえられなくなったら立派なオヤジだと思います。それはさておき、今日はPHPのsort関数が不思議な挙動をする例を紹介します。 sort関数の紹介 sort ― 配列をソートする 説明 bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] ) この関数は配列をソートします。この関数が正常に終了すると、 各要素は低位から高位へ並べ替えられます。 PHP: sort - Manual マニュアルをみる限り普通のソート関数です。省略可能な2番目の引数の意味は次の通りです。 sort_flags オプションの 2 番目のパラメータ s
(2009/02/15 17:20)「個人的な感想」を追記しました。また、下記はPHP5.2.1以降の挙動です。PHP5.2.0以前のmb_check_encodingは更にカオスなので、あまり使い物にならないと思います。 (2009/02/16 12:30)追記2:バグっぽいと思った件は本当にバグで、修正がhttp://news.php.net/php.cvs/56276の通り取り込まれました。PHP5.2.9から修正される予定です。 (2009/02/22 16:20)追記3:他のエンコーディングについても調査しました。「(その2 EUC-JP編)」と「(その3 UTF-8編)」も合わせてご覧下さい。 PHPのmb_check_encoding関数が一体何のチェックをしているのか、エンコーディングごとに一通り調べてみます。 まずはSJISとSJIS-win(CP932)について調べてみ
Twittoは、PHPフレームワークsymfonyの中心人物Fabien Potencierさんが(冗談で)作った、新フレームワークだ。 実アプリに決して使わないこと!!! フレームワークのコードは、twitterの一メッセージに収まるように、140文字以内で書かれている。(twitterでつぶやきたければ改行を取ればいい) require __DIR__.'/c.php'; if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; })) throw new Exception('Error'); $c(); サイズ以外の特徴は、デフォルトコントローラのサポート、E_STRICT(PHP5から導入された、より厳しいエラーチェック)に完全対応、存在しないコントローラへのアクセスでちゃんとエラーを出すこと、などだ。 同じフ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く