タグ

関連タグで絞り込む (191)

タグの絞り込みを解除

PHPに関するcon_mameのブックマーク (202)

  • 第27回 見過ごされているWebアプリケーションのバリデーションの欠陥 | gihyo.jp

    今回解説するWebアプリケーションのバリデーションの欠陥はPHPに限った問題ではありません。多くのプラットフォームのWebアプリケーションで見過ごされているバリデーション仕様の欠陥です。それは文字エンコーディングのチェックです。 文字エンコーディングバリデーションの必要性 筆者の知る限りでは、2004年に相次いで今まで知られていなかったアタックベクタ(攻撃経路)が見つかりました。2004年に多く見つかった新しいアタックベクタとは不正な文字エンコーディングを利用した攻撃です。不正な文字列を利用したJavaScriptインジェクションやSQLインジェクションの攻撃手法が公開されました。 文字エンコーディングを利用した攻撃自体は当時でも新しい攻撃手法ではありませんでした。文字エンコーディングを利用した攻撃は、少なくとも2000年から広く知られていた攻撃手法でした。ブラウザが文字エンコーディングを

    第27回 見過ごされているWebアプリケーションのバリデーションの欠陥 | gihyo.jp
  • ワンライナーのためのPHPコマンドラインオプション - hnwの日記

    ワンライナー(1行スクリプト)の代名詞と言えばPerlでしょう*1。Perlにはワンライナー向けのコマンドラインオプションが多数用意されています。中でも-neオプションや-peオプションは強力で、入力行ごとの処理をループを使わずに簡潔に記述できます。Perlのワンライナー向けコマンドラインオプションの一部はRubyにも輸入されており、Rubyプログラマもワンライナーを書くことが多いように見えます。 それに比べるとPHPはワンライナーが書きにくい印象があるのではないでしょうか。僕もそう思っていましたが、実はPHP5.0.0からワンライナー向けのコマンドラインオプションが追加されています。それが今回紹介する-R、-F、-B、-Eです。 -Rオプション、-Fオプション -Rというのは、標準入力を1行ごとに順に処理するオプションです。例を見てみましょう。 $ ls bin/php-* bin/ph

    ワンライナーのためのPHPコマンドラインオプション - hnwの日記
  • Zend Framework入門(20): PHPテキスト検索エンジン - Zend_Search_Luceneの詳細 -

    連載では、PHP上で動作するアプリケーションフレームワークであるZend Frameworkについて紹介していきます。前回の記事ではZend_Search_Luceneを使った索引の作成方法と検索の方法について基的なところを一通り見てみました。今回は Zend_Search_Luceneの動作の仕組みも見ていきながら、もう少し詳細な検索の方法や索引の作成について説明していきたいと思います。 はじめに 連載では、PHP上で動作するアプリケーションフレームワークであるZend Frameworkについて紹介していきます。今回はZend_Search_Luceneモジュールの紹介の2回目で、Zend_Search_Luceneの詳細について説明します。 前回の記事ではZend_Search_Luceneを使った索引の作成方法と検索の方法について基的なところを一通り見てみました。今回はZe

    Zend Framework入門(20): PHPテキスト検索エンジン - Zend_Search_Luceneの詳細 -
  • 第26回 まだまだ残っているファイル読み込みバグ | gihyo.jp

    PHPのスクリプト読み込み用の関数である require/indclude文は、PHPが埋め込み型の言語であるために非常に危険なバグの温床となっています[1]⁠。 つい最近のファイル読み込みバグ 執筆時点(4/24)でレポートされているファイル読み込みバグです。 WebPotal CMS(4/23) NotFTP(4/22) TotalCalender(4/22) SMA-DB(4/17) Job2C(4/16) FreeWebshop(4/16) GuestCal(4/15) Jamroom(4/15) ファイル読み込みバグはサーバの乗っ取りも可能とする致命的なバグですが、現在でも脆弱性が次々にレポートされているバグであることが分かります。 require/include文とファイル読み込みバグの問題 PHPはスクリプト(プログラム)と出力を同じファイルの中に書き込める、埋め込み型の言語

    第26回 まだまだ残っているファイル読み込みバグ | gihyo.jp
  • PHPも使える! Google App Engine for Java(前編)

    はじめに Amazon EC2をはじめ、クラウドコンピューティングのインフラ環境は以前に比べて手に届きやすいところにやってきました。しかしながら、サーバの設定が複雑だったり、独自言語だったりと、お手軽に試すにはもう一歩踏み出すことができない方が多いのではないでしょうか? GoogleGoogle App Engineを2008年4月に公開しました。このときはPythonのみが対象でしたが、2009年4月にはJavaにも対応しました。このことは大きな意味を持っています。それはJava言語のみならず、JavaVM上で動作する多くのスクリプト系言語も(ある程度の修正や設定は必要になりますが)動作させることができるためです。 前編ではJavaVM上に実装されたスクリプト系言語の中でもPHPを、簡単なWebアプリケーションを例に、Google App Engine for Javaで動作させる方法

    PHPも使える! Google App Engine for Java(前編)
  • 見直されるべきPHP5の組み込みイテレータ - hnwの日記

    PHPには5.0.0以降SPL (Standard PHP Libray)という枠組みが導入されています。これにより、Iteratorインターフェースを実装したクラスのインスタンスであれば、foreach文で配列と同じように取り扱えます。自分でクラスを作るときもIteratorを実装すれば使うのが楽ですし、コードも読みやすくなると思います。 また、PHPに標準で組み込まれているクラスにはIteratorを実装しているものが多数あります。たとえば僕の手元のPHP5.2.9には24個のイテレータがあり、そのうちいくつかは十分に実用的なクラスです。ただ、日語の資料が少ないせいか、かなり知名度は低いように思います。記事では4つの便利な組み込みイテレータを紹介します。 SPLのクラスにはデザインパターンの考えが多く含まれています。特に、イテレータを元にイテレータを作るような使い方は、保守性の高い

    見直されるべきPHP5の組み込みイテレータ - hnwの日記
  • array_unique関数がPHP5.2.10から後方互換性を取り戻します - hnwの日記

    「array_unique関数がPHP5.2.9から後方互換性を失いました」の内容について、PHPの中の人も認識を改めたようです。次のようなタレコミがありました。 【速報】「sort()関数は相当おかしい」と PHP 開発者を訴えていた問題で、原告の hnw さんが最高裁で勝訴の模様 http://news.php.net/php.internals/43980 http://wassr.jp/user/moriyoshi/statuses/e04jq6Xu3o id:moriyoshiさんの地道な働きかけのおかげだと思います。ありがとうございます。 そんなわけで、array_uniqueの第2引数のデフォルト値をSORT_STRINGにする(=5.2.8以前の挙動に合わせる)ことで落ち着いたようです。先ほどsnapshotを取って来たところ、5.2系も5.3系も直っていました。 また、P

    array_unique関数がPHP5.2.10から後方互換性を取り戻します - hnwの日記
    con_mame
    con_mame 2009/05/16
  • PHPのSession Adoptionは重大な脅威ではない - ockeghem's blog

    なぜPHPアプリにセキュリティホールが多いのか?:第25回 PHPのアキレス腱にて、大垣靖男氏がPHPSession Adoption問題について取り上げている。大垣氏は度々この問題を取り上げているが、今のところ氏の主張に同調する人を見かけない。それもそのはずで、大垣氏の主張は間違っていると私は思う。 以下、大垣氏の主張を実際に試してみる形で、順に説明しよう。 大垣氏の主張 大垣氏の主張は、PHPにはSession Adoption脆弱性があるために、標準的なSession Fixation対策であるsession_regenerate_id()を施しても、その対策は有効ではないというものだ。 しかし,実際には現在に至るまでPHPのセッションモジュールのセッションアダプション脆弱性は修正されないままになっています。このために,来はsession_regenerate_id関数をログイン

    PHPのSession Adoptionは重大な脅威ではない - ockeghem's blog
  • 第25回 PHPのアキレス腱 ── セッション管理 | gihyo.jp

    PHPにはHTTPセッション管理モジュールが標準で付いてきます。このセッションモジュールには非常に重大なセキュリティ上の脆弱性が修正されずに残っています。その脆弱性とはセッションアダプションです。 セッションアダプションとは、セッション固定化攻撃に利用される脆弱性です。PHPのセッション管理モジュールがセッションアダプションに脆弱であることは、かなり以前、何年も前から知られています。しかし、開発者の理解不足より脆弱性が放置されたままになっています。 セッションアダプションとは セッションアダプションとは、ブラウザ等から送信された未初期化セッションIDをそのまま利用してセッションを初期化してしまう脆弱性です。ユーザが送信してきたIDでも第三者に予想できない文字列であれば大丈夫なのでは?と考える方もいると思います。その通りで第三者に予想できなければ問題ないですし、仮に予想できてもログインする際

    第25回 PHPのアキレス腱 ── セッション管理 | gihyo.jp
  • PHPでのデバッグ方法

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog おひさしぶりです。オークション担当の山崎 賢です。 前回はPHP Serialize についてでしたが、 今回はPHPでのデバッグに関してお話します。 基PHPはインタプリタ(厳密にはPHPは内部で一度コンパイルしていますのでインタプリタとは言い切れませんが) のデバッグではログ埋め込みが手軽です。 しかし、まれにSIGSEGVやSIGBUSなどでPHPスクリプトが落ちることがあり、途方にくれます。 地道にログを埋め込んでいき、箇所を特定するのも手法の1つですが、今回はgdbを用いたデバッグ方法を記載したいと思います。 ■STEP1 まずは、プログラムが落ちることを目的として以下のようなPHP Moduleを作成します。 ・ ・

    PHPでのデバッグ方法
  • Haru PDF 関数 PHP日本語マニュアル全文検索

    導入 PECL/haru 拡張モジュールは、Haru Free PDF Library を使用するためのものです。 これは、フリーでクロスプラットフォームであるオープンソースライブラリで、 PDF ファイルを作成するためのものです。 このライブラリは » http://libharu.sourceforge.net にあります。 警告この拡張モジュールは、 実験的 なものです。この拡張モジュールの動作・ 関数名・その他ドキュメントに書かれている事項は、予告なく、将来的な PHP のリリースにおいて変更される可能性があります。 このモジュールは自己責任で使用してください。 要件 PECL/haru を使用するには、まず libharu をインストールする必要があります。 PECL/haru の動作検証は libharu 2.0.8 で行っています。 これより古いバージョンでは、動作するかもし

  • FirePHPがますます便利になっている件:phpspot開発日誌

    FirePHP - Firebug Extension for AJAX Development FirePHPがますます便利になっている件、ということで、以前に紹介したFirePHPですが、色々と更新されているようなのでご紹介。 アイコンも変わってます まず、どういうことが出来るか、という点です。以前紹介した時とやり方が結構改善されているみたい。 <?php FB::log('Log message'); FB::info('Info message'); FB::warn('Warn message'); FB::error('Error message'); ?> と書くと、以下のように表示されます。 firebugのconsole.logみたいに使えます。 PHPのコード内で、1行でかけるのでなかなか便利そうです。 次のように、オブジェクト指向で書くこともできるみたい <?php

  • APIとの通信効率をよくする実装例(1) curl_multi

    こんにちは。ライフスタイル事業部のアリタと申します。 Yahoo!のサービスも裏側ではWebAPIが多用されています。1つのページを構成するのに5、6個のAPIを使うこともざらですが、それではさすがにパフォーマンスが問題となってきます。その原因と対策例を紹介していきましょう。 ■モデルケース 例として、3つのAPIから取得したデータをマッシュアップしたページがあるとします。(ここではサンプルコードを簡単にするため、APIの代わりに以下のRSSで説明としました) Yahoo!トピックス エンターテインメントRSS http://dailynews.yahoo.co.jp/fc/entertainment/rss.xml Yahoo!ミュージックマガジン最新情報RSS http://magazine.music.yahoo.co.jp/rss/ALL/rss.xml Yahoo!検索トレンドR

    APIとの通信効率をよくする実装例(1) curl_multi
  • APIとの通信効率をよくする実装例(2) 簡易キャッシュ

    こうして見ると、仮に5分程度ライムラグがあってもさほど影響が無いものが多い、つまり毎度APIに問い合わせるのが無駄とも言えないでしょうか。(毎度通信すべきはなのは、上の表では「高」の部分のみ)。 そこで、APIから取ってきたデータ(XML)を少しの時間だけとっておくのはどうでしょう?(リアルタイム性が高いものや検索結果については毎度通信し、それ以外のものはキープしておき再利用)アクセスしてきたAさん、Bさん、Cさん・・・誰が見ても同じ内容ならなおさらみんなでシェアできれば、通信の数もそれにかかる時間も減るはずです。 このように一定時間データを溜めて再利用するシステムや行為を、キャッシュ(cache ※1)といいます。 どんな言語でも、こんな流れのロジックが書ければ実現できるでしょう。 if ( とっておいたXMLが賞味期限切れ ) { 捨てる; } if ( とっておいたXMLがある )

    APIとの通信効率をよくする実装例(2) 簡易キャッシュ
  • PHPで冗長化したコードを自動で検出してコードの最適化に使える「PHPCPD」:phpspot開発日誌

    Detecting duplicate code in PHP files : CodeDiesel PHPで冗長化したコードを自動で検出してコードの最適化に使える「PHPCPD」。 プログラムが大きくなってくると、同じような処理を違う場所で何度もやっているということがあります。 ソースコードのファイル数が多くなってくるとそれを探すのは大変ですが、その冗長部分を自動で検出できるPHP Copy Paste Detector(CPD)のご紹介。 使い方の流れが書かれていたので、試してみました(Windows上で実施) PHPCPDをPEARコマンドでインストールする 1) channel-discover でpearチャネル追加 Windowsの場合はコマンドプロンプトを開いて、pear コマンドを実行。Unix系でも同様にpearコマンドを実行> pear channel-discover

  • PHPプログラムを解析して何処が重いか?がブラウザ上で簡単に分かる「XHProf」:phpspot開発日誌

    PHPプログラムを解析して何処が重いか?がブラウザ上で簡単に分かる「XHProf」 2009年03月25日- XHProf Documentation (Draft) PHPプログラムを解析して何処が重いか?がブラウザ上で簡単に分かる「XHProf」。 通常、PHPでのプロファイリングというと、Xdebugでファイルを吐き出して、WinCacheGrindやKCacheGrindで読み込むというのが定番です。 ですが、この方法だと、ファイルを吐き出したファイルをGETして、ソフトに読み込ませる、というちょっと面倒な手順が必要でした。 XHProf を使えば、ブラウザ上で、プロファイリングが出来るみたいです。 XHProfの特徴 まず、セグメントごとの実行時間やメモリ利用の状況なんかがブラウザで見れます。 プログラムの構造を把握するのにも使えます。 プロファイリングの階層表示 2つのプロファ

  • [PHP]オンラインで同時編集が可能なオープンソースのエディタ -ecoder

    オンラインで同時編集が可能な、ブラウザ上で動作するオープンソースのエディタ「ecoder」を紹介します。 ecoder demo [enter]をクリック エディタには検索、行移動、カラーリング、キーボードショートカットなど基的な機能が備わっており、ファイルはツリー構造で管理できます。 テキストに日語の使用は可能でしたが、フォルダやファイルの名前には使用できませんでした。 また、リアルタイムに同時編集した際には、ハイライト表示されるそうです。 ecoderはPHPJavaScriptで作成されており、下記ページからダウンロードできます。 SourceForge.net ecoder web-based code editor

  • WordPressをパワーアップする.htaccessの設定集 | コリス

    1. RSS FeedをFeedBurnerで配信 WordPressRSS FeedsをFeedBurnerにリダイレクトさせます。 ※FeedBurnerの利用には、登録が必要です。 ルートの「.htaccess」に下記を記述します。 <textarea name="code" class="html" cols="60" rows="5"> <ifModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http:///feeds.feedburner.jp/example [R=302,NC,

  • [PHP]知っていると便利な、カテゴリ別のPHPのライブラリ集

    グラフ・チャートの作成、サムネイル画像の生成、PDF・エクセルファイルの生成、決済システム、データベースやメール・RSS関連など、PHPの便利なライブラリをKomunitas Webから紹介します。

  • PHPで画像のサムネイルを超簡単に作る方法「phpThumbnailer」:phpspot開発日誌

    Index of /projects/phpThumbnailer PHPで画像のサムネイルを超簡単に作る方法「phpThumbnailer」 PHP+GDな画像のサムネイル作成って結構面倒だったりしますが、配布されているThumbnail クラスを使えば超簡単にサムネイルが作れます。 配布パッケージ内に、class.Thumbnail.phpが含まれていて、次のようなサンプルプログラムで簡単に画像のサムネイルを生成できます。 <?php include("class.Thumbnail.php"); $tn_image = new Thumbnail("sample.jpg", 300, 300, 0); $tn_image->show(); ?> プログラムでは、sample.jpg のサムネイルを 最大幅 300px, 最大高さ 300px のサイズで作成し、画面に出力します。 Th