PHP 5.4 beta 2が出ているところですが、ソースコード(html.c)を見ていて、XSS対策で使用される htmlspecialchars()の文字コード指定がPHP 5.3とは異なる動作をすることに気が付きました。 内部文字コード(mbstring.internal_encoding)が使用される以下のようなシチュエーションです。 <?php // test.php echo htmlspecialchars("foo",ENT_QUOTES,""); mbstring.internal_encoding="SJIS-win"と指定することにします。(推奨はできませんが、)外字対応(絵文字対応)でCP932を使用したい場合を想定しています。 PHP 5.3で実行 php53/sapi/cli/php -d mbstring.internal_encoding="SJIS-win
第3引数を指定していない場合の影響前述のように、htmlspecialchars関数の第3引数を指定していない場合、PHP5.3までは、文字エンコーディングがISO-8859-1が指定されたとみなされます。この場合、入力内容にかかわらず不正な文字エンコーディングと判定されることはありません。したがって、文字エンコーディングのチェックが働かない代わりに、エラーになることもありませんでした。 これに対して、PHP5.4の仕様により文字エンコーディングがUTF-8とみなされた場合に、Shift_JISやEUC-JPの2バイト文字が入力されると、高い確率で「UTF-8として不正」というエラーになり、htmlspecialchars関数の出力は空になります。つまり、プログラムが正常に動作しません。 htmlspecialchars関数の第3引数を指定しておらず、内部文字エンコーディングがShift_
► 2020 (4) ► 9月 (1) ► 7月 (1) ► 6月 (1) ► 1月 (1) ► 2019 (3) ► 5月 (1) ► 3月 (1) ► 2月 (1) ► 2017 (4) ► 11月 (1) ► 9月 (1) ► 5月 (1) ► 4月 (1) ► 2016 (5) ► 11月 (1) ► 10月 (1) ► 9月 (1) ► 7月 (1) ► 3月 (1) ► 2015 (2) ► 10月 (1) ► 7月 (1) ► 2014 (1) ► 8月 (1) ► 2013 (2) ► 12月 (1) ► 8月 (1) ► 2012 (11) ► 12月 (2) ► 10月 (1) ► 6月 (2) ► 5月 (1) ► 4月 (3) ► 3月 (1) ► 1月 (1) ▼ 2011 (2) ► 10月 (1) ▼ 9月 (1) 9月10日PHPカンファレンス2011で講演
このエントリでは、あるPHPの入門書を題材として、Ajaxアプリケーションの脆弱性について検討します。全3回となる予定です。 このエントリを書いたきっかけ twitterからタレコミをちょうだいして、作りながら基礎から学ぶPHPによるWebアプリケーション入門XAMPP/jQuery/HTML5で作るイマドキのWeという本を読みました。所感は以下の通りです。 タレコミ氏の主張のように、本書はセキュリティを一切考慮していない 主な脆弱性は、XSS、SQLインジェクション、任意のサーバーサイド・スクリプト実行(アップロード経由)、メールヘッダインジェクション等 脆弱性以前の問題としてサンプルスクリプトの品質が低い。デバッグしないと動かないスクリプトが多数あった 上記に関連して、流用元のソースやデバッグ用のalertなどがコメントとして残っていて痛々しい 今時この水準はないわーと思いました。以前
たにぐちまことさんの書かれた『よくわかるPHPの教科書(以下、「よくわかる」)』を購入してパラパラと見ていたら、セキュリティ上の問題がかなりあることに気がつきました。そこで、拙著「体系的に学ぶ 安全なWebアプリケーションの作り方(以下、徳丸本)」の章・節毎に照らし合わせて、「よくわかる」の脆弱性について報告します。主に、徳丸本の4章と5章を参照します。 4.2 入力処理とセキュリティ 「よくわかる」のサンプルや解説では、入力値検証はほとんどしていません。しかし、入力値検証をしていないからといって即脆弱かというとそうではありません。徳丸本でも強調しているように、入力値検証はアプリケーション要件(仕様)に沿っていることを確認するもので、セキュリティ対策が目的ではないからです。 「よくわかる」の中で、私が見た範囲で唯一の入力値検証は、郵便番号のチェックをするものです。以下に引用します(「よくわ
昨日のブログエントリ「PHP5.3.7のcrypt関数に致命的な脆弱性(Bug #55439)」にて、crypt関数の重大な脆弱性について報告しました。脆弱性の出方が近年まれに見るほどのものだったので、twitterやブクマなどを見ても、「どうしてこうなった」という疑問を多数目にしました。 そこで、このエントリでは、この脆弱性がどのように混入したのかを追ってみたいと思います。 PHPのレポジトリのログや公開されているソースの状況から、PHP5.3.7RC4までこのバグはなく、PHP5.3.7RC5でこのバグが混入した模様です。RC5はPHP5.3.7最後のRelease Candidateですから、まさに正式リリースの直前でバグが入ったことになります。 バグの入る直前のソースは、ここの関数php_md5_crypt_rから参照することができます。以下に、おおまかな流れを図示します。まずはバ
PHPのround関数はPHP5.3.0で一新されましたが、その挙動は複雑です。以前の記事「PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった」では典型的な挙動を紹介しましたが、実際はもう少し細かい場合分けがあります。僕自身の整理も兼ねて、RFC*1およびPHPのCソースコードと対応づけながら何回かに分けて紹介していきます。 まずは、第2引数(精度)が大きすぎまたは小さすぎる場合の処理を紹介します。例えば次のコードを考えてみましょう。 <?php ini_set("precision",20); var_dump(round(5.3e-25,24)); //float(9.999999999999999237E-25) var_dump(1e-24); //float(9.999999999999999237E-25) 0.0000…ときて小数点以下第25位が5
PHPはWebアプリケーションを構築する言語として普及していますが、これまでPHPの実行環境をクラウド上で本格的に提供したPaaSはありませんでした。最近になって2つのPHP PaaSの名前が少しずつ知られるようになってきましたので、この記事で紹介しましょう。「cloudControl」と「PHP Fog」です。 無料で利用できる「cloudControl」 cloudControlはドイツのベンチャーで、2009年に設立。2010年の7月にPHP PaaSのクローズドベータを開始し、2010年10月から正式なサービスを開始しています。課金の単位を「ボックス」という単位で管理していますが、最小の1ボックスは無料になっており、サインアップするだけで利用可能なようです。 cloudControlはAmazonクラウド上に構築されており、ロードバランスとHTTPキャッシュにPHPアクセラレータの
_PHP5.3.6からPDOの文字エンコーディング指定が可能となったがWindows版では不具合(脆弱性)あり PHP5.3.6からPDO/MySQLにてデータベースの接続文字列にて文字エンコーディングが指定可能となりました。この機能を検証した結果、Linux上では正常な動作を確認しました。Windows版でも一見動作するようですが、動的プレースホルダ内部のエスケープ処理に不備があり、Shift_JISでデータベースと接続している際にSQLインジェクション脆弱性の可能性があります。 きっかけ @haruyamaさんのツイートがきっかけで、PHP5.3.6からPDOの文字エンコーディング指定が有効となったことを知りました。 PHP 5.3.6以降では PDO/MySQLのDSNでのcharset指定が有効になったようです. (MySQL 4.1.11以降, MySQL 5.0.7以降, もし
過負荷に耐えるWEBサービス作成のための使えるPHPキャッシュテクニックまとめ。 サービス展開というとOSのチューニングや各種インフラソフトウェアのチューニング、更にはWEBアプリプログラム自体の効率化と、幅広い知識が必要になってきますが、PHPでWEBアプリを作る際によく効くキャッシュテクニックを用途・使いどころ別に説明します。 キャッシュをうまく効かせることで大幅に計算量を減らしてより多くのリクエストを少ないマシンで捌くことが出来、コストを下げたり、過負荷の悩みを減らせます。 個人レベルでのWEBサービス開発の場合、サーバ代がお財布を大きく圧迫しますが、最低のコストでサービスを賄うことに繋げられます、ということでPHPでサービス作ってやろうと思っている人は参考にしてみて下さい。 static変数でキャッシュ 特に何も入れなくてもそのまま使えるstatic変数。例えば、関数等で一定の計算
PHP 5.3.4(最新は PHP 5.3.5) で、引数の値にファイルパスが指定可能な言語構造と関数に NULL バイトが含まれていた場合、処理が失敗するように修正されました。 http://svn.php.net/viewvc?view=revision&revision=305507 簡単に調べてみたところ、少なくとも、以下の言語構造と関数が該当するようです。 言語構造 include include_once require require_once Bzip2 bzopen Enchant enchant_broker_request_pwl_dict Fileinfo finfo_open GD image2wbmp imagegd2 imagegif imagejpeg imagepng imagewbmp imagexbm iptcembed jpeg2wbmp png2w
Ywcafe.net This Page Is Under Construction - Coming Soon! Why am I seeing this 'Under Construction' page? Related Searches: Cheap Air Tickets High Speed Internet All Inclusive Vacation Packages Health Insurance Migraine Pain Relief Trademark Free Notice Review our Privacy Policy Service Agreement Legal Notice Privacy Policy
4. 徳丸浩の自己紹介 • 経歴 – 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当 – その後、企業向けパッケージソフトの企画・開発・事業化を担当 – 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当 Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿などを開始 – 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立ち上げ • その他 – 1990年にPascalコンパイラをCabezonを開発、オープンソースで公開 「大学時代のPascal演習がCabezonでした」という方にお目にかかること
前の記事(Shift_JIS では、htmlspecialchars() を使用しても XSS が可能な場合がある)で Shift_JIS ではブラウザによっては XSS が発生する可能性があることを書きました。この問題は、PHP の開発版のスナップショット(snaps.php.net)で修正されたことを確認しましたが、それ以外にも、EUC-JP や UTF-8 について修正が行われました。この件で、行動された方に感謝します。どうもありがとうございました。その後、修正内容について調べましたので、メモしておきます。他の修正点など、何か気付いた方がおられましたら、ぜひ教えてください。 この修正は、PHP 5.3.2/PHP 5.2.12 で反映されることになると思います。実際の修正内容の大半は、以下で行われました。 http://svn.php.net/viewvc?view=revision
補足 この記事は旧徳丸浩の日記からの転載です(元URL、アーカイブ、はてなブックマーク1、はてなブックマーク2)。 備忘のため転載いたしますが、この記事は2010年9月27日に公開されたもので、当時の徳丸の考えを示すものを、基本的に内容を変更せずにそのまま転載するものです。 補足終わり PHPカンファレンス2010にて「文字コードに起因する脆弱性とその対策」というタイトルで喋らせていただきました。プレゼンテーション資料をPDF形式とslideshare.netで公開しています。 文字コードのセキュリティというと、ややこしいイメージが強くて、スピーカーの前夜祭でも「聴衆の半分は置いてきぼりになるかもね」みたいな話をしていたのですが、意外にも「分かりやすかった」等の好意的な反応をtwitter等でいただき、驚くと共に喜んでいます。土曜にPHPカンファレンスに来られるような方は意識が高いというの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く