タグ

cakephpとCakePHPに関するaratafujiのブックマーク (203)

  • CakePHPのSecurityComponentの脆弱性で任意のPHPコードが実行できる仕組み - disり用。

    もはや懐かしい感じのあるCakePHPセキュリティトークンから任意のPHPを実行できる脆弱性ですが、なぜこれで任意のPHPコードが実行可能になってしまうのか心配で夜も眠れない方の為に、実行される仕組みを解説してみようと思います。詳細とアドバイザリ、PoCは以下のものを参照しています。 http://co3k.org/diary/12 http://malloc.im/CakePHP-unserialize.txt http://malloc.im/burnedcake.py CakePHPSecurityComponentが提供するCSRF対策のトークンは単一の識別子ではなく、':' でトークンと$lockedという謎の値が繋がれたものになっています。$lockedには配列をシリアライズしたものをROT13で変換したものが入っています。この$lockedに任意の値を入れることで任意のP

    CakePHPのSecurityComponentの脆弱性で任意のPHPコードが実行できる仕組み - disり用。
  • 極める!Security Component (CakePHP Advent Calendar 2010 24日目) : akiyan.com

    極める!Security Component (CakePHP Advent Calendar 2010 24日目) 2010-12-24 目次 この記事はCakePHP Advent Calendar 2010 24日目に向けて書きました CakePHP Advent Calendar 2010に参加したい!と思ったときには既に遅し、トリの24日しか空いておらず、トリっぽい記事なんて書けないわーと思っていました。が、主催のcakephperさんより「べつにトリっぽくなくていいですよ」との温かい言葉を頂いたので、前々から書きたかったSecurityコンポーネントの話を書いてみます。対象バージョンは1.3.6 Stableです。 ちなみにAdvent Calendarとはなんぞや?といいますと、cakephperさんの書き込みより以下引用。 技術系の方がやっているAdvent Calenda

  • CakePHPで普段使っているpluginをまとめてみた | Web活メモ帳

    2010年を振り返る意味で、自分がCakePHPで開発する際に良く使うプラグインをまとめてみました。 誰かのお役に立てれば幸いです。 1.cakeplus ■ よく使うバリデーションをまとめたBehaviorであるadd_validation_rule モデルでバリデーションする際に当に使います。 var $validate = array( 'hoge' => array( "rule1" => array('rule' => array('katakana_only'), 'message' => 'hogeにカタカナ以外が含まれています' ), ), ); ■ 自動でhiddenタグを生成するヘルパーformhidden 確認画面を挟む際にhiddenに入力情報をまとめて出力してくれます。 echo $formhidden->hiddenVars(); このプラグインを知ってから、

    CakePHPで普段使っているpluginをまとめてみた | Web活メモ帳
  • Session.saveを独自設定する場合の注意 - 趣味の延長線

    以前、Session.saveを独自設定を指定して、セッション有効期限などを変更する方法を紹介しましたが、 この方法、セッションをDBあるいはキャッシュに設定する場合は避けた方が良さそうです。 実例 セッションのDB保存設定をベースに、session.cookie_lifetimeを0=ブラウザを閉じるまで に変更しています。 実装状態はこちら この設定で運用していたら、viewで$session->flash()した後もメッセージが消えず、 ログイン後もログインエラーメッセージが出続ける データセーブ後、別の画面に遷移しても保存完了メッセージが出続ける*1 などの現象が発生していました。 調べると、$session->flushで$_SESSIONからはMessageが削除されるのに、データベースのcake_sessionsでは削除されていません。 これが原因のようです。 解析 core

    Session.saveを独自設定する場合の注意 - 趣味の延長線
  • CakePHP1.3のキャッシュ不具合 - 趣味の延長線

    CakePHPのバージョンを1.2.5から1.3.6に上げたところ、一部のページで、指定と異なる内容が表示されたりするようになりました。 原因は、キャッシュの不具合。 ファイル名の正規化などを行うInflector::slugの不具合のため、異なるページのキャッシュが同一名で作成されてるなどしていました。 参考サイト http://dxd8.com/archives/209/ Inflector::slugを一箇所変更することで、CakePHP ver1.2時と同じファイル名でキャッシュできるようになりました。 線コード改修なので、バージョンアップ時要注意です。 現象 キャッシュを消すと直るので、原因はキャッシュと推測。 app/tmp/cache以下を確認したところ、ver1.2時点とはまったく異なる、 element__t_p_tu_t_l t_d.php と言ったようなファイル名で

    CakePHP1.3のキャッシュ不具合 - 趣味の延長線
  • CakePHP1.3で$this->pageTitleは使えない - こんにちはこんにちはmonmonです!

    久々にphpの勉強を兼ねて、昨日から何となくCakePHPを触りだしました。ちょっと楽しい。 で、題。 app/views/layouts/default.ctp(cake/libs/view/layouts/default.ctpからコピー)に$title_for_layout;というのがあり、それを設定するためにcontrollerで $this->pageTitle = 'タイトル'; みたいなことやってみたんですが表示されず。 ググって出てきたのにおかしいなぁとか思ったら、CakePHP1.3で消えてたのですね。 Google Groups502 Bad Gateway View::set('title', $var) no longer sets $title_for_layout when rendering the layout. $title_for_layout is

    CakePHP1.3で$this->pageTitleは使えない - こんにちはこんにちはmonmonです!
    aratafuji
    aratafuji 2010/12/14
    うわー、辛い…。
  • CakePHP コントローラに処理を書かずにモデルにメソッドを追加しよう! | Sun Limited Mt.

    CakePHP だけではなくフレームワーク全般に当てはまることだと思います。 Fat models and how they change how you use the Model class – cakebaker 私もフレームワークを使い始めた当初はそうだったのですが、モデルに最初からあるメソッドだけを使用してコントローラでなんでもかんでもやってしまっていました。 そうではなく、もっとモデルにオリジナルのメソッドを追加して、コントローラではそれを使用した方がコントローラもすっきりして後から見たときにも何をしているか分かりやすいと思います。 例えばブログの最新エントリ10を find する場合コントローラに $this->Post->findAll(array('Post.is_published' => true), null, array('Post.published DESC'

  • CakePHP HABTMモデルの検索 : エクスギア Blog

    HABTMで関連付けされたテーブルを検索条件に加えたい場合、一回のfindメソッドで取得しようとすると、joinの設定やグループ化で面倒な実装が必要になってきます。 データ量にもよりますが、 1)関連テーブルを先に検索し、ID配列を取得 2)ID配列を検索条件に追加 としたほうが簡単に実装できるケースが多そうです。 例として、以下のモデルを使って検証します。 (料理が複数の材と関連付けされている) 料理テーブル(モデル名:Cooking) - id - name - category_id 材テーブル(モデル名:Food) - id - name 料理-材関連付けテーブル(モデル名:CookingFood) - id - cooking_id - food_id 料理のカテゴリID=3 AND 材ID=5 で検索する場合では、 まず、関連付けテーブルから対応

    aratafuji
    aratafuji 2010/12/09
    conditionsに配列渡すと、INに展開されるのかー。
  • Gitと一緒にCakePHPを楽しむ – CakePHP Advent Calendar 2010 6日目

    これはCakePHP Advent Calendar 2010の6日目の記事です。 CakePHP Advent Calendarって何?という方はこちらへ。 CakePHP Advent Calendar 2010を開催! CakePHPに関するtipsを1日1つ、順番に紹介するということなので、私はGitとCakePHPの活用について書きます。 恐らく、これはCakePHPに限らずあらゆるフレームワークで有効なtipsです。 CakePHPを初めとするフレームワークを長く使っていると、色々と面倒なことが起きてきます。 フレームワークのバージョンアップ 外部ライブラリのバージョンアップ 複数プロジェクトにおけるコードの共通化 “フレームワークのバージョンアップ“は重要です。 先日、こんなバグも発見されましたしね。 CakePHPPHPコード実行の脆弱性を使ってCakePHPを焦が

  • CakePHPでCSRF対策

    CakePHPでCSRF対策を行う方法です。 フレームワークに含まれているSecurityコンポーネントを使います。 Security#requestAuth()にアクションを記述しておくと、アクション実行前に正規リクエストかどうかをチェックします。チェックの方法はCSRF対策で一般的なワンタイムトークン方式です。 まずController#beforeFilter()にてチェックを行うアクションを指定します。 [app/controller/test_controller.php] < ?php class TestController extends AppController { var $name = 'Test'; var $components = array('Security'); function beforeFilter() { $this->Security->req

  • ひでぶろぐ。 cakephpのマニュアルに載っていない超便利関数

    [PR] 今日のニュースは?? : 2ch自動まとめキュレクス [PR] 名言や格言をどうぞ! : 名言満載! [PR] 副業したい? : 出張ホスト募集中 [PR] SEO最高峰のクオリティー : 知る人ぞ知る、SEOUP.com。テラプレミアムアクトは抜群におすすめ! [PR] 口コミ対策 : 口コミでSEO対策。なんとびっくり、1円からご利用頂けます。 [PR] 出張キャバクラアゲハ : ちょっとした飲み会のお供に。デートのお相手に。 モデル編 直接SQL $this->query('UPDATE `'.$this->tablePrefix.$this->useTable.'` SET `link_ng_count` = `link_ng_count` + 1 WHERE `'.$this->tablePrefix.$this->useTable.'`.`id` = '.$v.';'

  • CakePHP の PHP コード実行の脆弱性を使って CakePHP を焦がす - co3k.org

    2010/11/13 に出たらしい http://bakery.cakephp.org/articles/markstory/2010/11/13/cakephp_1_3_6_and_1_2_9_released を読んでびっくりしたんですが、 Twitter を軽く検索した限りだと CakePHP ユーザでない僕が気づいているのに (日の) CakePHP ユーザさんたちがどうも気づいていないっぽいのでわかりやすくまとめてみることにしました! CakePHP には任意の PHP コードが実行できる致命的な脆弱性があります! 影響のあるサイト結構ありそうですが悪用厳禁です! ※通常リリースの告知のなかにこんな致命的な脆弱性に関する情報を思いっきりわかりにくく書いちゃうのはひどいなあと思うので、ユーザの方は CakePHP に文句を言うといいと思います。僕は CakePHP ユーザじゃない

    aratafuji
    aratafuji 2010/11/18
    速攻で対応しておいた。
  • CakePHPのSecurityComponentに深刻なセキュリティホールが見つかりました

    すでにご存知の方も多いと思うのですが、CakePHPに深刻なセキュリティホールが見つかりました。 SecurityComponentの実装に問題があり、結果、外部から任意のコードを実行させることができるという深刻な内容です。 セキュリティホールの概要や攻撃手順については以下のエントリが詳しいですので、ご一読を。 CakePHPPHP コード実行の脆弱性を使って CakePHP を焦がす なお、今回の問題はSecurityComponentを利用していない場合は発生しません。 もしSecurityComponentを利用している場合は、以下のいずれかの方法で早急に対策してください。 1. CakePHP1.2.9 or 1.3.6にアップグレードする。 この脆弱性を受けて修正バージョンが出ています。 CakePHP 1.3.6 and 1.2.9 released | The Bake

  • CakePHP cache()はCache::write()に

    CakePHPにはキャッシュを行う関数cache()があるのですが、1.2.2のソースを見るとdeprectatedになってました。 [cake/basics.php] <?php /** * Reads/writes temporary data to cache files or session. * * @param string $path File path within /tmp to save the file. * @param mixed $data The data to save to the temporary file. * @param mixed $expires A valid strtotime string when the data expires. * @param string $target The target of the cached da

  • PHP5.3だと CakePHPで Deprecatedエラーが出まくる問題の対処方法

    ► 2018 (1) ► 1月 (1) ► 2017 (4) ► 6月 (3) ► 5月 (1) ► 2016 (15) ► 12月 (4) ► 11月 (1) ► 10月 (2) ► 7月 (3) ► 6月 (1) ► 5月 (3) ► 1月 (1) ► 2015 (13) ► 12月 (1) ► 10月 (1) ► 9月 (1) ► 6月 (1) ► 5月 (1) ► 3月 (2) ► 2月 (3) ► 1月 (3) ► 2014 (11) ► 12月 (1) ► 9月 (2) ► 8月 (2) ► 6月 (1) ► 4月 (4) ► 2月 (1) ► 2013 (15) ► 12月 (3) ► 11月 (3) ► 8月 (2) ► 7月 (4) ► 5月 (1) ► 4月 (2) ► 2012 (7) ► 10月 (1) ► 7月 (1) ► 4月 (3) ► 1月 (2) ► 20

  • Ktai Library for CakePHP | ECWorks Blog

    携帯サイトを構築する場合の、各キャリア対応をサポートするライブラリと、それをCakePHPで利用するためのヘルパー・コンポーネントを公開いたします。ライブラリ体はCakePHPだけでなく他の環境でも使用することが出来ます。 【お知らせ】 ktailibrary.orgは諸事情ありまして閉鎖しました。 はじめに 携帯サイトを作成する場合、一般的には各キャリア向けにHTMLを作成し、それを振り分けして表示する仕組みを採用していたと思いますが、最近の携帯では、いくつかの仕様を除いてほぼ同じHTMLを閲覧することが可能になってきています。そこで、その「いくつかの仕様」についてを解決できるような仕組みができないものか…という経緯から、ライブラリが生まれました。 また、ライブラリは個人的に作成していたPHPライブラリがベースになっているのですが、CakePHPで使えるようにすることで「携帯サイト

  • CakePHPとnginx+memcachedで手軽にキャッシュを活用する

    nginx+memcachedがめちゃ気になったので試してみました。 元ネタは下記です。 A 53,900% speedup: Nginx, Drupal, and Memcache bring concurrency up and page load time way down | TechnoSophos nginxをリバースプロキシに利用した構成で、バックエンドの出力をmemcachedにキャッシュしておけば、次回リクエストではnginxがそのキャッシュを読み取ってそのまま出力してくれます。 つまりバックエンドにリクエストを経由させずにnginxから即出力するのでかなりの高速化が見込めるという優れものです。 リンク先ではバックエンドにDrupalを利用していたのですが、ここではCakePHPを利用してみます。 1. 全体構成 リバースプロキシにnginx(Port: 80)を使い、バ

  • CakePHPで作る携帯サイト·Ktai Library MOONGIFT

    Ktai LibraryはPHP製のオープンソース・ソフトウェア。日の携帯電話はとても優秀であり、携帯電話からのWebアクセスは年々増え続けている。数年後にはPCからのアクセスを抜くとさえ言われている。Webの主役は変わりつつあるのだ。 ファイル構成 そうなれば携帯電話向けサイト開発はごく当たり前に行うべきものになるだろう。PCサイトとは相当にノウハウが異なるので注意が必要だ。だが既にすばらしいライブラリが多数ある。CakePHP開発者ならKtai Libraryを使うといいだろう。 Ktai LibraryはPHP4/PHP5両方に対応したライブラリで、CakePHP用のライブラリになっている。絵文字キャッシュ、IPによるキャリア判定、Google Static Maps APIの利用、インラインスタイルシート支援、セッション対応、リダイレクト対応、uid取得、キャリア判別など多数の機

    CakePHPで作る携帯サイト·Ktai Library MOONGIFT
  • CakeFest2010@シカゴで発表してきました。 - cakephperの日記(CakePHP, Laravel, PHP)

    あれから1週間経ってしまいましたが、CakeFest2010@Chicagoで発表してきました。 なぜ発表しようと思ったかは、「CakeFest2010で発表してきます」に書きました。 今回はカンファレンス1日目の午前中に1時間のセッション枠を貰って、MongoDBをCakePHPから使う方法というタイトルで発表。 内容は前半にMongoDBとは何か、何がよいのか、ドキュメント指向とは、という内容を話し、後半にPHPのPecl Mongoの話と、CakePHPからMongoDBを扱うデータソースの話をしました。このデータソースは以前自分が開発したもので、今はAndyさんと一緒に開発してます。 CakePHPからMongoDBを扱うという話の前に、軽くデータソースの利点や必要なメソッドを話し、最後にデモを2つやりました。デモは簡単なCRUDを実現する画面のデモと、削除履歴を管理するデモ。 削

    CakeFest2010@シカゴで発表してきました。 - cakephperの日記(CakePHP, Laravel, PHP)
  • CkaePHPプラグインのまとめ – 総括編

    CakePHPはやはり便利ですね。 記事を翻訳したことで、まだまだ知らない世界があったことを知りました。 そしてまた新しい知識欲が湧いてきました。 皆さんはどうですか? 何か使ってみたいプラグインはあったでしょうか。 これまで載せたCakePHPプラグインの記事を一覧にしておきます。 認証編 AuthComponentの代替えになるプラグインやfacebookと連携するプラグインが紹介されています。それに加え、使いにくいACLを使いやすくするツールも。個人的には一番、興味のある記事でした。 検索とページネーション/ファイルアップロード編 CakePHPの使いにくいページネーションを使いやすくするプラグイン、Yahoo! BOSSのプラグインが紹介されています。ファイルアップロードはTransloaditというサービスに対応させるプラグインから、メジャーなメディアプラグインまで。 最適