タグ

phpとプログラミングに関するvespidのブックマーク (12)

  • preg_replaceによるコード実行 - T.Teradaの日記

    最近少し調べていたのが、PHPの任意コード実行系の脆弱性です。中でも、preg_replace関数(Perl互換の正規表現による置換を行なうための関数)を不適切な方法で使った場合に発生する脆弱性について調べていました。 せっかくなので、日記にまとめてみます。 3種類の脆弱性 preg_replace関数を使ったPHPコード実行系の脆弱性には、大きく分けて3つの種類があります。 第一引数への挿入を許す e修飾子付き・第二引数への挿入を許す e修飾子付き・第三引数への挿入を許す 以下でそれぞれについて見ていきます。 タイプ1:第一引数への挿入 以下のコードに、任意のPHPコードが実行可能な脆弱性があります。 $m = preg_replace("/([^<]*)$kw([^>]*)/i", "\\1<font color=red>$kw</font>\\2", $m); $kwと$mは外部から

    preg_replaceによるコード実行 - T.Teradaの日記
  • 例えばPHPのpreg_replace関数でe修飾子を避ける - hnwの日記

    (2015/04/19追記)e修飾子はPHP 5.5からdeprecatedになっています。また、PHP7からは廃止されます。 PHPのpreg_replace関数では、e修飾子が利用できます。これはPerlから輸入された機能で、置換後パターンの文字列をPHP文法に従って評価する(evalする)というものです。Perlを知らないとあまり使わない機能かもしれませんが、Perlを知っているとPHPでも使いたくなるのではないでしょうか。記事では、preg_replace関数でe修飾子を使う場合の注意点を指摘し、代替案を示します。 preg_replace関数のe修飾子 preg_replace関数のe修飾子は次のような機能です。 e 修飾子を設定すると、preg_replace() は、参照先の対応する置換を行う際に replacement 引数を PHP コードであるとして取り扱います。re

    例えばPHPのpreg_replace関数でe修飾子を避ける - hnwの日記
  • 6分でわかる最近のPHP ― 2012夏

    さて夏がやってきました。夏と言えばPHPということで、昨年に引き続き、最近のPHP事情をご紹介。 1. PHP5.4リリース PHP5.4が2012年3月にリリースされました。 Traits や Short array syntax(配列の短縮構文)、array dereferencing(foo()[0]) などのPHP言語拡張、PHPコマンドで起動するビルトインサーバ、そしてパフォーマンスの改善など大きな変更が加えられています。 言語自体の機能追加も注目ですが、ビルトインサーバは多くの人にとってメリットになるでしょう。これを使えばPHPアプリケーションの動作確認のためにApacheやnginxなどのhttpdサーバを自分のPCに入れる必要はありません。 下記のようなコマンドを打つだけで、ビルトインサーバが起動します。新しいフレームワークやライブラリ、アプリケーションを試してみたい時に手

  • PHPでTwitter APIのOAuthを使う方法まとめ

    この記事以降 Twitter API の仕様が変わっており、このままでは正しく機能しない場合があると思います。近いうちに今のやり方を書くので、それまで参考程度にご覧ください。 Twitter API の OAuth でひととおりやってみた。 忘れないようにメモ。 大雑把な流れ Twitter にアプリケーションを登録する。 Consumer Key と Consumer secret を取得する。 リクエストトークンを取得する。 認証用 URL を取得する。 ユーザーから承認を受ける(bot の場合は自分でやる)。 アクセストークンを取得する。 API にアクセスする。 以下、やった作業の手順です。 事前準備 HTTP_OAuth を使えるようにする OAuth の通信部分そのものは PEAR の HTTP_OAuth を使うことにしたので これをインストールする。 一番めんどくさい部分を

    PHPでTwitter APIのOAuthを使う方法まとめ
  • PHP classの教室

    PHPで関数は使えるけれどオブジェクト指向はよくわからないという人向けの勉強会の資料です。 Ustream録画 (1/5) http://www.ustream.tv/recorded/21256905 67分 (2/5) http://www.ustream.tv/recorded/21253084 80分 (3/5) http://www.ustream.tv/recorded/21254139 60分 (4/5) http://www.ustream.tv/recorded/21254817 24分 (5/5) http://www.ustream.tv/recorded/21255084 6分 Read less

    PHP classの教室
  • (php&javascript)逆アクセスランキングSim Accessの負荷対策

    JavaScriptから呼び出すタイプのPHPCGIは、先にリファラやUAで弾いちゃえばサーバーに余分なリソースを使わせなくて済みますね。この方法で比較的負荷の高かったSimAccessも軽快作動するようになりました。

    (php&javascript)逆アクセスランキングSim Accessの負荷対策
  • Apocripha.net [PHP] fopen() "r+" "w+" どちらも「読み込み/書き込み共用です」 どない違うねんという話

    テキストファイルに書かれた数値を読み込んで1プラスして再書き込み。 カウンタとか、なにかのユニークな数値を管理するためによくやる手法かと思います。 で、同時アクセスされたときに読み書きの間で処理が前後すると同じ値が採番されてしまったりするので、だいたいは下記のような手順で進みますよね。(詳細なソースは省きます) fopen() でファイルオープン ↓ flock() で排他ロック ↓ fread() で読み込み ↓ 加算した値を計算 ↓ rewind() とか fseek() とかでファイルポインタを先頭に移動 ↓ fwrite() とかで書き込み ↓ flock() でロック解除 ↓ fclose() でファイルを閉じる ありふれた処理ではあるのですが、そういった処理はたいていDB処理することが最近多かったので、はて fopen() では読み書き両方したいときにはどんな感じで読み込めばよ

  • より良いPHPerになるための20Tips

    去年の話ですが、海外でこんな記事が上がっていました。 20 Tips you need to learn to become a better PHP Programmer 記事の内容は、かなりレベルが低いです。 しかし、初心者のうちに知っておけば、より早く成長出来るでしょう。 初心者PHPerのために、この記事の翻訳を載せます。 20 Tips you need to learn to become a better PHP Programmer PHPは、同じオブジェクトの扱い方でも複数の書き方を持っている、とても気まぐれなプログラミング言語だ。 詳しくは、私の書いた”The Art of Programming“を読むと良い。 これから書くTipsは、過去のプロジェクトから私が学んだコードの可読性、メンテナンス性を上げ、あなたを素晴らしい、より進んだPHPプログラマーにするもの

  • twitterのbotをphpで制作する | 星光のつれづれ日記

    始めに 最近ニュースで取り上げられるほど隆盛を極めている『twitter』。 twitterの紹介は割愛するが、その中でプログラムで動いている『bot』と言うものがある。 例えば、@buzztterや@bombtterなどがある。 他にもおもしろ所として@wakatterや@ha_ru_kaなんて言うユーザーの発言にをうまく利用したものもある。 地震速報や天気、料理レシピ人工知能を使ったものなど枚挙にいとまがない。 これらのbotの制作はプログラム初心者にとってハードルの高いものだと思う。 そこで今回、プログラミング言語の一つであるphpを使って作る方法をドドーンと公開する事にした。 僕も@dq_pencilや@nyafuuu、そして@nanikiruといくつか作った。 これらに使われているテクニックや関数なんかを公開しようと言う事ね。 僕が作ったボットについて詳しくはこちらへ。他の参

    twitterのbotをphpで制作する | 星光のつれづれ日記
  • HTMLをDBみたいに使えるスゴイライブラリ『htmlSql』を CakePHPで使う - h2ospace - builder by ZDNet Japan

    APIRSSなどを提供しているサイトは、情報を簡単に扱うことができますが、例えば Yahoo!の検索結果とか、mixiのニュースとか、あるサイトの一部を取り出したいことってよくあります。(とはいえ、著作権違反には注意 そんな時、PHPのライブラリである「htmlSql」を利用すると便利。このライブラリに、ファイルでもURLでも文字列でも、HTMLで作られたものなら何でも与えると、解析して取り出しやすくしてくれます。しかも、その取り出し方はSQL! 例えば、「id属性が’test’の p要素の内容を取り出したい」という場合には、次のようなSQLを使います。 SELECT text FROM p WHERE $id=="test" 超パワフル。ということで、これを CakePHPで利用するためのテクニック。 まずは、ダウンロードしたファイルの中から次のファイルを「app/vendors」フォ

  • PHPで誰でも簡単Webサービス製作!でなんか作って公開した奴ちょっと来い - 甘味志向@はてな

    タイトルは出来れば関連する方に読んで欲しかったので、軽く釣り針にしました。すみません。:*) 最近はやりのヒウィッヒヒー(Twitter)でも、よく「○○ったー」みたいなサービスがばんばん登場してますね! おかげでますますツイッターが面白い感じになってて、いい流れですね! でも・・・ちょっと気になることが・・・ 最近「もうプログラマには頼らない!簡単プログラミング!」だとか・・・ 「PHPで誰でも簡単Webサービス作成!」だとか・・・ はてなブックマークのホッテントリで見かけますよね・・・ プログラミングする人が増えるのは素敵です!レッツ・プログラミングなう! なんですけど・・・ ちゃんとセキュリティのこと考えてますか・・・!? 『セキュリティ対策とか難しいし面倒くせーし、俺の適当に作ったサービスとかどうなってもイイしww』 いいんですいいんです! 別にそう思ってるならどうでもいいんです!

    PHPで誰でも簡単Webサービス製作!でなんか作って公開した奴ちょっと来い - 甘味志向@はてな
  • PHPのクラスで質問です。 PHPプログラムでクラスを組むに当たってプログラムに出てくるこの  -> 矢印みたいなものですが これってどういう意味があるのでしょう…

    PHPのクラスで質問です。 PHPプログラムでクラスを組むに当たってプログラムに出てくるこの -> 矢印みたいなものですが これってどういう意味があるのでしょうか? -> と => の違いも曖昧でわかりません。 代入の事かと最初は思ったのですが何か色々ありそうなのですが この ->  と => の矢印が出てくるケースを全て把握したいのですが この 矢印 について知っていることがあったら教えてください。 よろしくお願いします。 また別になってしまうのですが、 クラスとSMARTY,ライブラリとPear、フレームワークが頭の中でごちゃごちゃになっています。 これらを分かりやすく初心者の私でも分かるように教えていただいてよろしいでしょうか?。 実際の職場の現場ではこのように使われていると教えていただくとイメージがしやすいです。 よろしくお願いします。

  • 1